1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package net.sf.magicproject.test;
22
23 import java.io.IOException;
24 import java.io.InputStream;
25
26 import net.sf.magicproject.action.MAction;
27 import net.sf.magicproject.clickable.ability.Ability;
28 import net.sf.magicproject.clickable.targetable.card.MCard;
29 import net.sf.magicproject.stack.StackManager;
30 import net.sf.magicproject.tools.MToolKit;
31
32 /***
33 * Is the tested ability has the specifed action name.
34 *
35 * @author <a href="mailto:fabdouglas@users.sourceforge.net">Fabrice Daugan </a>
36 * @since 0.82
37 */
38 class HasAction extends TestCard {
39
40 /***
41 * Create an instance of HasAction by reading a file. Offset's file must
42 * pointing on the first byte of this test <br>
43 * <ul>
44 * Structure of InputStream : Data[size]
45 * <li>action name [...]</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 HasAction(InputStream inputFile) throws IOException {
55 super(inputFile);
56 actionName = MToolKit.readString(inputFile).intern();
57 if (actionName.length() == 0) {
58 throw new InternalError("Action name should not be empty");
59 }
60 }
61
62 @Override
63 protected boolean testCard(Ability ability, MCard tested) {
64 for (MAction action : StackManager.currentAbility.actionList()) {
65 if (actionName.equals(action.getActionName())) {
66 return true;
67 }
68 }
69
70 for (MAction action : StackManager.currentAbility.actionList()) {
71 if (actionName.equals(action.getActionName())) {
72 return true;
73 }
74 }
75
76 return false;
77 }
78
79 /***
80 * The action name to match during each test
81 */
82 private final String actionName;
83
84 }