package testAux; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; 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.Desugar; import sugarVisitors.InjectionOnCore; import ast.Ast.Mdf; import ast.Ast.NormType; import ast.Ast.Stage; import ast.ErrorMessage; import ast.ExpCore; import ast.Ast.Path; import ast.ExpCore.ClassB; import ast.Expression; import programReduction.Program; //TODO: add way more tests public class TestWellFormedness { @RunWith(Parameterized.class) public static class TestFail { @Parameter(0) public String s; @Parameterized.Parameters public static List<Object[]> createData() { return Arrays.asList(new Object[][] { {"{C:{} C:{}}" },{"{f(C a C a)}" },{"{ method () ( D d=D.k() catch exception Void x d.m() void)}" },{"{ method () ( this+this*this )}" },{"{ method () ( this++this**this )}" },{"{ method Void () {void}}" },{"{ method Void () {void void}}" },{"{ method Void () {void catch error Void x void void}}" },{"{ method Void () {void catch error Void error void if void (error void)}}" }});} @Test(expected=ErrorMessage.NotWellFormed.class) public void testAll() { //Expression.ClassB sugared =(Expression.ClassB)Desugar.of(Parser.parse(null,scb1)); Expression.ClassB sugared =(Expression.ClassB)Parser.parse(null,s); auxiliaryGrammar.WellFormedness.checkAll(sugared); assert false; } } @RunWith(Parameterized.class) public static class TestPass { @Parameter(0) public String s; @Parameterized.Parameters public static List<Object[]> createData() { return Arrays.asList(new Object[][] { {"{()}" },{"{ method () this+this+this }" },{"{ method () this<=this<=this }" },{"{ method () this+this<=this <=this & this }" },{"{ method () this<=this<= this+this<=this <=this & this *this *this }" },{"{ method Void () { return void}}" },{"{ method Void () {void catch error Void error void error void}}" },{"{ method Void () {void catch error Void error void if void (error void) else return void}}" }});} @Test public void testAll() { Expression.ClassB sugared =(ast.Expression.ClassB) Parser.parse(null,s); auxiliaryGrammar.WellFormedness.checkAll(sugared); } } }