package programReduction; import static helpers.TestHelper.getClassB; import static helpers.TestHelper.lineNumber; import static org.junit.Assert.*; import java.util.Arrays; import java.util.List; 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 ast.ExpCore; import ast.Expression; import ast.Ast.MethodSelector; import ast.Ast.Path; import ast.Ast.Stage; import ast.ExpCore.ClassB; import auxiliaryGrammar.Functions; import programReduction.Program; import facade.Parser; import helpers.TestHelper; import is.L42.connected.withSafeOperators.Abstract; import platformSpecific.javaTranslation.Resources; import sugarVisitors.Desugar; import sugarVisitors.InjectionOnCore; public class TestCtxC { @RunWith(Parameterized.class) public static class TestFillHole { @Parameter(0) public int _lineNumber; @Parameter(1) public String _e1; @Parameter(2) public String _eHole; @Parameter(3) public String _expected; @Parameterized.Parameters public static List<Object[]> createData() { return Arrays.asList(new Object[][] { {lineNumber(),"Any.m({B:error void})","void","Any.m(void)" },{lineNumber(),"{B:error void}.m({B:error void})","void","void.m({B:error void})" }});} @Test public void test() { ExpCore e1=TestHelper.getExpCore(this.getClass().getCanonicalName(),_e1); ExpCore eHole=TestHelper.getExpCore(this.getClass().getCanonicalName(),_eHole); ExpCore expected=TestHelper.getExpCore(this.getClass().getCanonicalName(),_expected); CtxC ctxC1=CtxC.split(e1); ExpCore res=ctxC1.fillHole(eHole); TestHelper.assertEqualExp(expected,res); } } @RunWith(Parameterized.class) public static class TestDivide { @Parameter(0) public int _lineNumber; @Parameter(1) public String _e1; @Parameter(2) public String _e2; @Parameter(3) public String _expected; @Parameterized.Parameters public static List<Object[]> createData() { return Arrays.asList(new Object[][] { {lineNumber(),"Any.m({B:error void})","Any.m(Any)","Any" },{lineNumber(),"{B:error void}.m({B:error void})","Any.m(Any)","Any" }});} @Test public void test() { ExpCore e1=TestHelper.getExpCore(this.getClass().getCanonicalName(),_e1); ExpCore e2=TestHelper.getExpCore(this.getClass().getCanonicalName(),_e2); ExpCore expected=TestHelper.getExpCore(this.getClass().getCanonicalName(),_expected); CtxC ctxC1=CtxC.split(e1); CtxC res=ctxC1.divide(e2); TestHelper.assertEqualExp(expected,res.originalHole()); TestHelper.assertEqualExp(e2,res.fillHole(res.originalHole())); } } }