/testability-explorer/src/test/java/com/google/test/metric/method/op/stack/Duplicate2Test.java

http://testability-explorer.googlecode.com/ · Java · 92 lines · 78 code · 14 blank · 0 comment · 1 complexity · 6d43456577b99703972f0cc219cc6b10 MD5 · raw file

  1. package com.google.test.metric.method.op.stack;
  2. import static java.util.Arrays.asList;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import junit.framework.TestCase;
  6. import com.google.test.metric.JavaType;
  7. import com.google.test.metric.Variable;
  8. import com.google.test.metric.method.Constant;
  9. public class Duplicate2Test extends TestCase {
  10. public void testDup2Single() throws Exception {
  11. Duplicate2 dup2 = new Duplicate2(1, 0);
  12. assertEquals(2, dup2.getOperatorCount());
  13. Variable v1 = var(1);
  14. Variable v2 = var(2);
  15. List<Variable> out = dup2.apply(asList(v1, v2));
  16. assertList(out, v1, v2, v1, v2);
  17. assertEquals("duplicate2", dup2.toString());
  18. }
  19. public void testDup2Double() throws Exception {
  20. Duplicate2 dup2 = new Duplicate2(1, 0);
  21. assertEquals(2, dup2.getOperatorCount());
  22. Variable v1 = var(1l);
  23. List<Variable> out = dup2.apply(asList(v1, v1));
  24. assertList(out, v1, v1, v1, v1);
  25. assertEquals("duplicate2", dup2.toString());
  26. }
  27. public void testDup2Offset1Single() throws Exception {
  28. Duplicate2 dup2 = new Duplicate2(1, 1);
  29. assertEquals(3, dup2.getOperatorCount());
  30. Variable v1 = var(1);
  31. Variable v2 = var(2);
  32. Variable v3 = var(3);
  33. List<Variable> out = dup2.apply(asList(v3, v2, v1));
  34. assertList(out, v2, v1, v3, v2, v1);
  35. assertEquals("duplicate2_X1", dup2.toString());
  36. }
  37. public void testDup2Offset1Double() throws Exception {
  38. Duplicate2 dup2 = new Duplicate2(1, 1);
  39. assertEquals(3, dup2.getOperatorCount());
  40. Variable v1 = var(1l);
  41. Variable v2 = var(2);
  42. List<Variable> out = dup2.apply(asList(v2, v1, v1));
  43. assertList(out, v1, v1, v2, v1, v1);
  44. assertEquals("duplicate2_X1", dup2.toString());
  45. }
  46. public void testDup2Offset2Single() throws Exception {
  47. Duplicate2 dup2 = new Duplicate2(1, 2);
  48. assertEquals(4, dup2.getOperatorCount());
  49. Variable v1 = var(1);
  50. Variable v2 = var(2);
  51. Variable v3 = var(3);
  52. Variable v4 = var(4);
  53. List<Variable> out = dup2.apply(asList(v4, v3, v2, v1));
  54. assertList(out, v2, v1, v4, v3, v2, v1);
  55. assertEquals("duplicate2_X2", dup2.toString());
  56. }
  57. public void testDup2Offset3Double() throws Exception {
  58. Duplicate2 dup2 = new Duplicate2(1, 2);
  59. assertEquals(4, dup2.getOperatorCount());
  60. Variable v1 = var(1l);
  61. Variable v2 = var(2);
  62. Variable v3 = var(3);
  63. List<Variable> out = dup2.apply(asList(v3, v2, v1, v1));
  64. assertList(out, v1, v1, v3, v2, v1, v1);
  65. assertEquals("duplicate2_X2", dup2.toString());
  66. }
  67. private void assertList(List<Variable> actual, Variable... expected) {
  68. assertEquals(expected.length, actual.size());
  69. String error = "\nExpecting: " + Arrays.toString(expected)
  70. + "\n Actual:" + actual + "\n";
  71. for (int i = 0; i < expected.length; i++) {
  72. assertEquals(error, expected[i], actual.get(i));
  73. }
  74. }
  75. private Variable var(Object value) {
  76. return new Constant(value, JavaType.fromClass(value.getClass()));
  77. }
  78. }