package testAux; import static helpers.TestHelper.getClassB; import helpers.TestHelper.ErrorCarry; import static org.junit.Assert.fail; import helpers.TestHelper; import static helpers.TestHelper.lineNumber; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameter; import org.junit.runners.Parameterized.Parameters; import platformSpecific.javaTranslation.Resources; import ast.Ast.MethodSelector; import ast.Ast.Path; import ast.ExpCore.ClassB; import programReduction.Program; import coreVisitors.PathAnnotateClass; @RunWith(Parameterized.class) public class TestCloneWithPath { @Parameter(0) public int _lineNumber; @Parameter(1) public String _cb1; @Parameter(2) public String _expected; @Parameters(name = "{index}: line {0}") public static List<Object[]> createData() {return Arrays.asList(new Object[][] {{ lineNumber(),"{}","{/*This0.*/\n}" },{ lineNumber(),"{method Void foo()}","{/*This0.*/\nmethod /*This0.*/\nVoid foo()}" },{ lineNumber(),"{ A:{method Void foo() method Void bar() }}", "{/*This0.*/\n A:/*This0.*/\n{/*This0.A[0]*/\nmethod /*This0.A[1]*/\nVoid foo() method /*This0.A[1]*/\nVoid bar() }}" },{ lineNumber(),"{ A:{B:{method Void foo() method Void bar() }}}", "{/*This0.*/\n" + "A:/*This0.*/\n" + "{/*This0.A[0]*/\n" + "B:/*This0.A[1]*/\n" + "{/*This0.A[1]B[0]*/\n" + "method /*This0.A[1]B[1]*/\n" + "Void foo() \n" + "method /*This0.A[1]B[1]*/\n" + "Void bar() }}}" },{ lineNumber(),"{ A:{method Void foo() this.foo({ implements A},x:{ implements B}) }}", "{/*This0.*/\n" + "A:/*This0.*/\n" + "{/*This0.A[0]*/\n" + "method /*This0.A[1]*/\n" + "Void foo() this.foo(that:{/*This0.A[1]foo()[0]*/\n" + " implements This2.A}, x:{/*This0.A[1]foo()[1]*/\n" + " implements This2.B})}}" }});} @Test public void test() { TestHelper.configureForTest(); ClassB cb1=getClassB("cb1", _cb1); ClassB expected=getClassB("expected", _expected); ClassB result = (ClassB) cb1.accept(new PathAnnotateClass()); TestHelper.assertEqualExp(expected, result); } }