1 package serp.bytecode;
2
3 import junit.framework.*;
4 import junit.textui.*;
5
6
7
8
9
10
11 public class TestConstantInstruction extends TestCase {
12 private ConstantInstruction _const = new Code().constant();
13
14 public TestConstantInstruction(String test) {
15 super(test);
16 }
17
18
19
20
21 public void testGetType() {
22 assertNull(_const.getType());
23 assertEquals(int.class, _const.setValue(0).getType());
24 assertEquals(int.class, _const.setValue(2 << 3).getType());
25 assertEquals(int.class, _const.setValue(2 << 7).getType());
26 assertEquals(int.class, _const.setValue(2 << 15).getType());
27 assertEquals(long.class, _const.setValue(0L).getType());
28 assertEquals(long.class, _const.setValue(1000L).getType());
29 assertEquals(float.class, _const.setValue(0F).getType());
30 assertEquals(float.class, _const.setValue(1000F).getType());
31 assertEquals(double.class, _const.setValue(0D).getType());
32 assertEquals(double.class, _const.setValue(1000D).getType());
33 assertEquals(Object.class, _const.setValue((Object) null).getType());
34 assertEquals(String.class, _const.setValue("foo").getType());
35 assertEquals(int.class, _const.setValue(true).getType());
36 assertEquals(int.class, _const.setValue((short) 0).getType());
37 assertEquals(int.class, _const.setValue('a').getType());
38 assertEquals(Class.class, _const.setValue(String.class).getType());
39 }
40
41
42
43
44 public void testGetValue() {
45 assertNull(_const.getValue());
46 assertEquals(0, _const.setValue(0).getIntValue());
47 assertEquals(-1, _const.setValue(-1).getIntValue());
48 assertEquals(2 << 3, _const.setValue(2 << 3).getIntValue());
49 assertEquals(2 << 7, _const.setValue(2 << 7).getIntValue());
50 assertEquals(2 << 15, _const.setValue(2 << 15).getIntValue());
51 assertEquals(0L, _const.setValue(0L).getLongValue());
52 assertEquals(1000L, _const.setValue(1000L).getLongValue());
53 assertEquals(0F, _const.setValue(0F).getFloatValue(), .001);
54 assertEquals(1000F, _const.setValue(1000F).getFloatValue(), .001);
55 assertEquals(0D, _const.setValue(0D).getDoubleValue(), .001);
56 assertEquals(1000D, _const.setValue(1000D).getDoubleValue(), .001);
57 assertNull(_const.setValue((Object) null).getValue());
58 assertEquals("foo", _const.setValue("foo").getStringValue());
59 assertEquals(1, _const.setValue(true).getIntValue());
60 assertEquals(0, _const.setValue((short) 0).getIntValue());
61 assertEquals((int) 'a', _const.setValue('a').getIntValue());
62 assertEquals(String.class.getName(),
63 _const.setValue(String.class).getClassNameValue());
64 }
65
66
67
68
69 public void testOpcodeMorph() {
70 assertEquals(Constants.NOP, _const.getOpcode());
71 assertEquals(Constants.ICONSTM1, _const.setValue(-1).getOpcode());
72 assertEquals(Constants.ICONST0, _const.setValue(0).getOpcode());
73 assertEquals(Constants.ICONST1, _const.setValue(1).getOpcode());
74 assertEquals(Constants.ICONST2, _const.setValue(2).getOpcode());
75 assertEquals(Constants.ICONST3, _const.setValue(3).getOpcode());
76 assertEquals(Constants.ICONST4, _const.setValue(4).getOpcode());
77 assertEquals(Constants.ICONST5, _const.setValue(5).getOpcode());
78 assertEquals(Constants.BIPUSH, _const.setValue(2 << 3).getOpcode());
79 assertEquals(Constants.SIPUSH, _const.setValue(2 << 7).getOpcode());
80 assertEquals(Constants.LDC, _const.setValue(2 << 15).getOpcode());
81 assertEquals(Constants.LCONST0, _const.setValue(0L).getOpcode());
82 assertEquals(Constants.LCONST1, _const.setValue(1L).getOpcode());
83 assertEquals(Constants.LDC2W, _const.setValue(1000L).getOpcode());
84 assertEquals(Constants.FCONST2, _const.setValue(2F).getOpcode());
85 assertEquals(Constants.FCONST1, _const.setValue(1F).getOpcode());
86 assertEquals(Constants.FCONST0, _const.setValue(0F).getOpcode());
87 assertEquals(Constants.LDC, _const.setValue(1000F).getOpcode());
88 assertEquals(Constants.DCONST0, _const.setValue(0D).getOpcode());
89 assertEquals(Constants.DCONST1, _const.setValue(1D).getOpcode());
90 assertEquals(Constants.LDC2W, _const.setValue(2D).getOpcode());
91 assertEquals(Constants.LDC2W, _const.setValue(1000D).getOpcode());
92 assertEquals(Constants.LDC, _const.setValue("foo").getOpcode());
93 assertEquals(Constants.ICONST1, _const.setValue(true).getOpcode());
94 assertEquals(Constants.BIPUSH, _const.setValue('a').getOpcode());
95 assertEquals(Constants.ICONST0, _const.setValue((short) 0).getOpcode());
96 assertEquals(Constants.ACONSTNULL,
97 _const.setValue((Object) null).getOpcode());
98 assertEquals(Constants.LDCW, _const.setValue(String.class).getOpcode());
99 }
100
101 public static Test suite() {
102 return new TestSuite(TestConstantInstruction.class);
103 }
104
105 public static void main(String[] args) {
106 TestRunner.run(suite());
107 }
108 }