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.List;
24
25 import net.sf.magicproject.clickable.ability.Ability;
26 import net.sf.magicproject.clickable.targetable.Targetable;
27 import net.sf.magicproject.clickable.targetable.card.MCard;
28 import net.sf.magicproject.event.MEventListener;
29
30 /***
31 * Replace the tested component by another inside the nested test scope.
32 *
33 * @author <a href="mailto:fabdouglas@users.sourceforge.net">Fabrice Daugan </a>
34 * @since 0.93
35 */
36 public class ReplaceTested extends Test {
37
38 /***
39 * The TestOn component replacing the given tested component inside the nested
40 * test.
41 */
42 private final TestOn replace;
43
44 /***
45 * The nested test.
46 */
47 private final Test nestedTest;
48
49 /***
50 * Create an instance of ReplaceTested reading a file. Offset's file must
51 * pointing on the first byte of this test <br>
52 * <ul>
53 * Structure of InputStream : Data[size]
54 * <li>replace [TestOn]</li>
55 * <li>nested tested [Test]</li>
56 * </ul>
57 *
58 * @param inputFile
59 * is the file containing this event
60 * @throws IOException
61 * if error occurred during the reading process from the specified
62 * input stream
63 */
64 ReplaceTested(InputStream inputFile) throws IOException {
65 super(inputFile);
66 replace = TestOn.deserialize(inputFile);
67 nestedTest = TestFactory.readNextTest(inputFile);
68 }
69
70 /***
71 * Create a new instance of this class.
72 *
73 * @param replace
74 * he new component.
75 * @param nestedTest
76 * the nested test.
77 */
78 public ReplaceTested(TestOn replace, Test nestedTest) {
79 super();
80 this.replace = replace;
81 this.nestedTest = nestedTest;
82 }
83
84 @Override
85 public boolean test(Ability ability, Targetable tested) {
86 return nestedTest.test(ability, replace.getTargetable(ability, tested));
87 }
88
89 @Override
90 public void extractTriggeredEvents(List<MEventListener> res, MCard source,
91 Test globalTest) {
92 nestedTest.extractTriggeredEvents(res, source, globalTest);
93 }
94 }