View Javadoc

1   /*
2    *   Magic-Project is a turn based strategy simulator
3    *   Copyright (C) 2003-2007 Fabrice Daugan
4    *
5    *   This program is free software; you can redistribute it and/or modify it 
6    * under the terms of the GNU General Public License as published by the Free 
7    * Software Foundation; either version 2 of the License, or (at your option) any
8    * later version.
9    *
10   *   This program is distributed in the hope that it will be useful, but WITHOUT 
11   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12   * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more 
13   * details.
14   *
15   *   You should have received a copy of the GNU General Public License along  
16   * with this program; if not, write to the Free Software Foundation, Inc., 
17   * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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  }