1 package serp.bytecode;
2
3 import junit.framework.*;
4 import junit.textui.*;
5
6
7
8
9
10
11 public class TestCode extends TestCase {
12 public TestCode(String test) {
13 super(test);
14 }
15
16
17
18
19
20 public void testRemove() {
21 Code code = new Code();
22 JumpInstruction go2 = code.go2();
23 Instruction first = code.nop();
24 Instruction second = code.nop();
25 Instruction third = code.nop();
26 Instruction fourth = code.nop();
27 go2.setTarget(second);
28
29
30 code.beforeFirst();
31 code.next();
32 code.next();
33 code.next();
34 code.remove();
35 assertEquals(third, code.next());
36 assertEquals(third, go2.getTarget());
37 code.beforeFirst();
38 assertEquals(go2, code.next());
39 assertEquals(first, code.next());
40 assertEquals(third, code.next());
41 assertEquals(fourth, code.next());
42
43
44 code.beforeFirst();
45 code.next();
46 code.next();
47 code.next();
48 code.next();
49 code.previous();
50 code.previous();
51 code.remove();
52 assertEquals(fourth, go2.getTarget());
53 assertEquals(fourth, code.next());
54
55 assertTrue(!code.hasNext());
56 assertEquals(fourth, code.previous());
57 code.remove();
58 code.afterLast();
59 assertEquals(code.previous(), go2.getTarget());
60 assertEquals(first, code.previous());
61 }
62
63
64
65
66 public void testIndexes() {
67 Code code = new Code();
68 assertEquals(0, code.nextIndex());
69 assertEquals(-1, code.previousIndex());
70
71 Instruction first = code.nop();
72 assertEquals(1, code.nextIndex());
73 assertEquals(0, code.previousIndex());
74
75 Instruction second = code.nop();
76 assertEquals(2, code.nextIndex());
77 assertEquals(1, code.previousIndex());
78 code.previous();
79 assertEquals(1, code.nextIndex());
80 assertEquals(0, code.previousIndex());
81 code.next();
82 assertEquals(2, code.nextIndex());
83 assertEquals(1, code.previousIndex());
84
85 Instruction third = code.nop();
86 assertEquals(3, code.nextIndex());
87 assertEquals(2, code.previousIndex());
88
89 code.afterLast();
90 assertEquals(3, code.nextIndex());
91 assertEquals(2, code.previousIndex());
92
93 code.beforeFirst();
94 assertEquals(0, code.nextIndex());
95 assertEquals(-1, code.previousIndex());
96
97 code.before(first);
98 assertEquals(0, code.nextIndex());
99 assertEquals(-1, code.previousIndex());
100 code.before(second);
101 assertEquals(1, code.nextIndex());
102 assertEquals(0, code.previousIndex());
103 code.before(third);
104 assertEquals(2, code.nextIndex());
105 assertEquals(1, code.previousIndex());
106
107 code.after(first);
108 assertEquals(1, code.nextIndex());
109 assertEquals(0, code.previousIndex());
110 code.after(second);
111 assertEquals(2, code.nextIndex());
112 assertEquals(1, code.previousIndex());
113 code.after(third);
114 assertEquals(3, code.nextIndex());
115 assertEquals(2, code.previousIndex());
116 }
117
118 public static Test suite() {
119 return new TestSuite(TestCode.class);
120 }
121
122 public static void main(String[] args) {
123 TestRunner.run(suite());
124 }
125 }