View Javadoc

1   package serp.bytecode;
2   
3   import junit.framework.*;
4   import junit.textui.*;
5   
6   /**
7    * Tests the {@link ConvertInstruction} type.
8    *
9    * @author Abe White
10   */
11  public class TestConvertInstruction extends TestCase {
12      private Code _code = new Code();
13  
14      public TestConvertInstruction(String test) {
15          super(test);
16      }
17  
18      /**
19       * Test that the opcode is morphed correctly when the types are set.
20       */
21      public void testOpcodeMorph() {
22          ConvertInstruction ins = _code.convert();
23          assertEquals(Constants.NOP, ins.getOpcode());
24  
25          ins.setFromType(int.class);
26          assertEquals(Constants.NOP, ins.getOpcode());
27          assertEquals(int.class, ins.getFromType());
28          assertNull(ins.getType());
29  
30          ins.setType(int.class);
31          assertEquals(Constants.NOP, ins.getOpcode());
32          assertEquals(int.class, ins.getFromType());
33          assertEquals(int.class, ins.getType());
34  
35          ins.setType(long.class);
36          assertEquals(Constants.I2L, ins.getOpcode());
37          assertEquals(int.class, ins.getFromType());
38          assertEquals(long.class, ins.getType());
39  
40          ins.setType(float.class);
41          assertEquals(Constants.I2F, ins.getOpcode());
42          assertEquals(int.class, ins.getFromType());
43          assertEquals(float.class, ins.getType());
44  
45          ins.setType(double.class);
46          assertEquals(Constants.I2D, ins.getOpcode());
47          assertEquals(int.class, ins.getFromType());
48          assertEquals(double.class, ins.getType());
49  
50          ins.setFromType(long.class);
51          assertEquals(Constants.L2D, ins.getOpcode());
52          assertEquals(long.class, ins.getFromType());
53          assertEquals(double.class, ins.getType());
54  
55          ins.setType(long.class);
56          assertEquals(Constants.NOP, ins.getOpcode());
57          assertEquals(long.class, ins.getFromType());
58          assertEquals(long.class, ins.getType());
59  
60          ins.setType(int.class);
61          assertEquals(Constants.L2I, ins.getOpcode());
62          assertEquals(long.class, ins.getFromType());
63          assertEquals(int.class, ins.getType());
64  
65          ins.setType(String.class);
66          assertEquals(Constants.L2I, ins.getOpcode());
67  
68          ins.setType((Class) null);
69          assertEquals(Constants.NOP, ins.getOpcode());
70  
71          ins.setType(float.class);
72          assertEquals(Constants.L2F, ins.getOpcode());
73      }
74  
75      public static Test suite() {
76          return new TestSuite(TestConvertInstruction.class);
77      }
78  
79      public static void main(String[] args) {
80          TestRunner.run(suite());
81      }
82  }