View Javadoc

1   /*
2    * SupEqual.java 
3    * 
4    *   Magic-Project is a turn based strategy simulator
5    *   Copyright (C) 2003-2007 Fabrice Daugan
6    *
7    *   This program is free software; you can redistribute it and/or modify it 
8    * under the terms of the GNU General Public License as published by the Free 
9    * Software Foundation; either version 2 of the License, or (at your option) any
10   * later version.
11   *
12   *   This program is distributed in the hope that it will be useful, but WITHOUT 
13   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14   * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more 
15   * details.
16   *
17   *   You should have received a copy of the GNU General Public License along  
18   * with this program; if not, write to the Free Software Foundation, Inc., 
19   * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20   */
21  package net.sf.magicproject.test;
22  
23  import java.io.IOException;
24  import java.io.InputStream;
25  import java.util.Map;
26  
27  import net.sf.magicproject.annotation.XmlTestElement;
28  import net.sf.magicproject.clickable.ability.Ability;
29  import net.sf.magicproject.clickable.targetable.Targetable;
30  import net.sf.magicproject.expression.Expression;
31  
32  /***
33   * @author <a href="mailto:fabdouglas@users.sourceforge.net">Fabrice Daugan </a>
34   * @since 0.86
35   */
36  @XmlTestElement(id = IdTest.SUP_EQUAL)
37  public class SupEqual extends TestExpr {
38  
39  	/***
40  	 * Create an instance of SupEqual by reading a file. Offset's file must
41  	 * pointing on the first byte of this test <br>
42  	 * <ul>
43  	 * Structure of InputStream : Data[size]
44  	 * <li>left value,idToken [2]</li>
45  	 * <li>right value, idToken [2]</li>
46  	 * </ul>
47  	 * 
48  	 * @param inputFile
49  	 *          is the file containing this event
50  	 * @throws IOException
51  	 *           if error occurred during the reading process from the specified
52  	 *           input stream
53  	 */
54  	SupEqual(InputStream inputFile) throws IOException {
55  		super(inputFile);
56  	}
57  
58  	/***
59  	 * Create a new instance of SupEqual given left and right expression.
60  	 * 
61  	 * @param leftExpression
62  	 *          the left expression of this test.
63  	 * @param rightExpression
64  	 *          the right expression of this test.
65  	 */
66  	private SupEqual(Expression leftExpression, Expression rightExpression) {
67  		super(leftExpression, rightExpression);
68  	}
69  
70  	@Override
71  	public Test getConstraintTest(Map<String, Expression> values) {
72  		return new SupEqual(leftExpression.getConstraintExpression(values),
73  				rightExpression.getConstraintExpression(values));
74  	}
75  
76  	@Override
77  	public boolean test(Ability ability, Targetable tested) {
78  		return getLeftValue(ability, tested) >= getRightValue(ability, tested);
79  	}
80  
81  	@Override
82  	public String toString() {
83  		return "(" + leftExpression.toString() + " >= "
84  				+ rightExpression.toString() + ")";
85  	}
86  }