1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sf.magicproject.test;
20
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.util.Map;
24
25 import net.sf.magicproject.annotation.XmlTestElement;
26 import net.sf.magicproject.clickable.ability.Ability;
27 import net.sf.magicproject.clickable.targetable.Targetable;
28 import net.sf.magicproject.expression.Expression;
29
30 /***
31 * @author <a href="mailto:fabdouglas@users.sourceforge.net">Fabrice Daugan </a>
32 * @since 0.54
33 */
34 @XmlTestElement(id = IdTest.DIFFERENT)
35 public class Different extends TestExpr {
36
37 /***
38 * Create an instance of Different by reading a file. Offset's file must
39 * pointing on the first byte of this test <br>
40 * <ul>
41 * Structure of InputStream : Data[size]
42 * <li>left value,idToken [2]</li>
43 * <li>right value, idToken [2]</li>
44 * </ul>
45 *
46 * @param inputFile
47 * is the file containing this event
48 * @throws IOException
49 * if error occurred during the reading process from the specified
50 * input stream
51 */
52 Different(InputStream inputFile) throws IOException {
53 super(inputFile);
54 }
55
56 /***
57 * Create a new instance of Different given left and right expression.
58 *
59 * @param leftExpression
60 * the left expression of this test.
61 * @param rightExpression
62 * the right expression of this test.
63 */
64 private Different(Expression leftExpression, Expression rightExpression) {
65 super(leftExpression, rightExpression);
66 }
67
68 @Override
69 public boolean test(Ability ability, Targetable tested) {
70 return getLeftValue(ability, tested) != getRightValue(ability, tested);
71 }
72
73 @Override
74 public Test getConstraintTest(Map<String, Expression> values) {
75 return new Different(leftExpression.getConstraintExpression(values),
76 rightExpression.getConstraintExpression(values));
77 }
78
79 @Override
80 public String toString() {
81 return "(" + leftExpression.toString() + " != "
82 + rightExpression.toString() + ")";
83 }
84 }