package org.dresdenocl.ocl2parser.test;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import org.dresdenocl.ocl2parser.test.constrainttypes.AllConstraintTypeTests;
import org.dresdenocl.pivotmodel.Constraint;
import org.dresdenocl.testsuite._abstract.AbstractDresdenOclTest;
import rtt.annotations.Parser;
import rtt.annotations.Parser.Node;
@Parser(withParams=true)
public class RTTParserTest extends AbstractDresdenOclTest {
@Node
public static class Ast {
private List<Constraint> nodeList;
public Ast(List<Constraint> parsedList) {
this.nodeList = new ArrayList<Constraint>(parsedList);
}
@Node.Child
public List<Constraint> getNodeList() {
return nodeList;
}
}
private Ast ast;
@Parser.Initialize
public RTTParserTest(InputStream input, String[] params) throws Exception {
TestPerformer testPerformer;
/* Try to get the TestPerformer. */
testPerformer = TestPerformer.getInstance(
AllConstraintTypeTests.META_MODEL_ID,
AllConstraintTypeTests.MODEL_BUNDLE,
AllConstraintTypeTests.MODEL_DIRECTORY);
testPerformer.setModel(params[0]);
/* Try to parse the constraint file. */
this.ast = new Ast(testPerformer.parseString(convertStreamToString(input)));
}
private String convertStreamToString(InputStream input) {
Scanner scanner = new Scanner(input).useDelimiter("\\A");
return scanner.hasNext() ? scanner.next() : "";
}
@Parser.AST
public Ast getAst() {
return ast;
}
}