/test/kilim/test/TestFlow.java

http://github.com/kilim/kilim · Java · 53 lines · 37 code · 6 blank · 10 comment · 5 complexity · bfd1667bd853528a5561c2148c8f27d5 MD5 · raw file

  1. /* Copyright (c) 2006, Sriram Srinivasan
  2. *
  3. * You may distribute this software under the terms of the license
  4. * specified in the file "License"
  5. */
  6. package kilim.test;
  7. import static kilim.Constants.D_BYTE;
  8. import kilim.analysis.BasicBlock;
  9. import kilim.analysis.Frame;
  10. import kilim.analysis.IncompatibleTypesException;
  11. import kilim.analysis.MethodFlow;
  12. import kilim.analysis.TypeDesc;
  13. import kilim.analysis.Value;
  14. import static kilim.test.TestTypeDesc.mergeType;
  15. public class TestFlow extends Base {
  16. @Override
  17. protected void setUp() throws Exception {
  18. cache("kilim.test.ex.ExFlow");
  19. }
  20. public void testMerge() throws IncompatibleTypesException {
  21. MethodFlow flow = getFlow("loop");
  22. if (flow == null)
  23. return;
  24. // Make sure the merging is fine. There used to be a bug
  25. assertEquals("Lkilim/test/ex/ExA;", mergeType("Lkilim/test/ex/ExC;", "Lkilim/test/ex/ExD;"));
  26. assertEquals("Lkilim/test/ex/ExA;", mergeType("Lkilim/test/ex/ExD;", "Lkilim/test/ex/ExC;"));
  27. BasicBlock bb = getBBForMethod(flow, "join");
  28. assertTrue(bb != null);
  29. Frame f = bb.startFrame;
  30. // Check Locals
  31. // assertEquals("Lkilim/test/ex/ExFlow;", f.getLocal(0));
  32. assertEquals("Lkilim/test/ex/ExA;", f.getLocal(1).getTypeDesc());
  33. // assertSame(D_INT, f.getLocal(2));
  34. // Check operand stack
  35. assertSame(D_BYTE, f.getStack(0).getTypeDesc());
  36. assertEquals("Lkilim/test/ex/ExFlow;", f.getStack(1).getTypeDesc());
  37. assertEquals("Lkilim/test/ex/ExA;", f.getStack(2).getTypeDesc());
  38. }
  39. public void testConstants() throws IncompatibleTypesException {
  40. MethodFlow flow = getFlow("loop");
  41. if (flow == null)
  42. return;
  43. BasicBlock bb = getBBForMethod(flow, "join");
  44. Frame f = bb.startFrame;
  45. assertSame(f.getLocal(2).getConstVal(), Value.NO_VAL);
  46. }
  47. }