package auxiliaryGrammar;
import static helpers.TestHelper.lineNumber;
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 ast.Ast;
import ast.ErrorMessage;
import ast.ExpCore;
import ast.Ast.Path;
import ast.ExpCore.ClassB.MethodWithType;
import ast.ExpCore.ClassB.Member;
import helpers.TestHelper;
import programReduction.Program;
import programReduction.TestProgram;
import tools.Assertions;
import tools.Map;
public class TestWellFormednessCore {
@RunWith(Parameterized.class)
public static class Test1Member {
@Parameter(0) public int _lineNumber;
@Parameter(1) public String _cb;
@Parameter(2) public boolean ok;
@Parameterized.Parameters
public static List<Object[]> createData() {
return Arrays.asList(new Object[][] {
{lineNumber(),"{B:error void}",true
},{lineNumber(),"{method Any m() this}",true
},{lineNumber(),"{method Any m() (capsule Any x=this x)}",true
},{lineNumber(),"{method Any m() (capsule Any x=this capsule Any y=x y)}",true
},{lineNumber(),"{method Any m() (capsule Any x=this capsule Any y=x x)}",false
}});}
@Test public void test() {
ExpCore.ClassB l=(ExpCore.ClassB)TestHelper.getExpCore(TestWellFormednessCore.class.getSimpleName(),_cb);
Member m=l.getMs().get(0);
try{
m.match(nc->{WellFormednessCore.capsuleOnlyOnce(nc);return null;},
mi->Assertions.codeNotReachable(),
mwt->{WellFormednessCore.capsuleOnlyOnce(mwt);return null;}
);
if(!this.ok){ throw new AssertionError("FailureExpected");}
}
catch(ErrorMessage.CapsuleUsedMoreThenOne e){
if (this.ok){throw e;}
}
}
}
}