package testAux; import java.util.Arrays; 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 facade.Parser; import sugarVisitors.InjectionOnCore; import sugarVisitors.ToFormattedText; import ast.ExpCore; import ast.Expression; public class TestParseBackAndForth { @RunWith(Parameterized.class) public static class Test1 { @Parameter(0) public String s; @Parameter(1) public String expected; @Parameterized.Parameters public static List<Object[]> createData() { return Arrays.asList(new Object[][] { {"a","a" },{"a*b","a * b" },{" (a=b c)","(\n a=b\n c\n )" },{" (var a=b c)","(\n var a=b\n c\n )" },{"{a(A a)}"," { a( A a )}" },{"{//qq\n a(A a)}"," {//qq\n a( A a )}" },{"{(A a)}"," { ( A a )}" },{"{(A a//foo\n)}"," { ( A a//foo\n )}" },{"{(A a) implements A}"," { ( A a )implements A}" },{"{ method a(b c) {d e f}}"," {\nmethod a(b c ) {\n d\n e\n f\n }}" },{"{ method a(b c) (d e f)}"," {\nmethod a(b c ) (\n d\n e\n f\n )}" },{"if a (b) else c.h()","if a (b)else c.h()" },{"while a (b.h(a+a))","while a (b.h(a + a))" },{"Foo\"bla\"","Foo\"bla\"" },{"Foo\" bla \"","Foo\" bla \"" //},{"Foo\"\n //bla\n , \"","" //},{"Foo\"\n //bla\n //ble\n , \"","" },{" { }"," {}" },{" {()}"," { ()}" },{" {interface}"," {interface }" },{" { implements A.B, C}"," {implements A.B, C}" },{" a //bar\n ","a//bar\n" },{"!a","!a" },{"~(a+b)","~(a + b)" },{" (a+b+c)","(a + b + c)" },{"a(b,x:c)","a(b, x:c)" },{"!a(b,x:c)","!a(b, x:c)" },{" (a )(b,x:c)","(a)(b, x:c)" },{" use A.B.C check m(//bar\nfoo) a+b","use A.B.C check m(//bar\nfoo) a + b" },{"with x in a var y in b + c() z= t var T w=t (on T y)", "with x in a, var y in b + c() z= t, var T w= t (\non T y\n)" },{"with x in a (on T y on T T z+y on A b )", "with x in a (\non T y\non T, T z + y\non A b\n)" }});} @Test public void testOkToString() { Expression x = Parser.parse(null,s); //InjectionOnCore c=new InjectionOnCore(); //ExpCore e2 = x.accept(c); Assert.assertEquals(ToFormattedText.of(x), expected); } } }