package plugindevelopment; import static org.junit.Assert.*; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Vector; import org.junit.Test; import junit.framework.TestCase; import mycompiler.MyCompiler; import mycompiler.MyCompilerAPI; import mycompiler.SyntaxTreeNode; import mycompiler.myparser.JavaParser.yyException; import mycompiler.mytype.Pair; import mycompiler.mytype.Pair.PairOperator; import mycompiler.mytype.RefType; import mycompiler.mytype.Type; import mycompiler.mytype.TypePlaceholder; import mycompiler.mytypereconstruction.TypeinferenceResultSet; import mycompiler.mytypereconstruction.replacementlistener.CReplaceTypeEvent; import typinferenz.ResultSet; import typinferenz.TypeInsertable; import typinferenz.typedeployment.TypeInsertPoint; import typinferenz.typedeployment.TypeInsertSet; public class TRMEqualTest { Vector replaceSet = new Vector(); TestNode node; TypePlaceholder tph; public void initTRMEqualTest(){ node = new TestNode(); tph = TypePlaceholder.fresh(node); node.setType(tph); } @Test public void test(){ initTRMEqualTest(); assertTrue("Zu Beginn ist das Set leer",replaceSet.size()==0); addTestNode("Typ1"); assertTrue("Nach dem Anfügen eines Type muss das Set 1 Element enthalten",replaceSet.size()==1); addTestNode("Typ2"); assertTrue("Nach dem Anfügen eines weiteren Typs muss das Set 2 Elemente enthalten und nicht "+replaceSet.size(),replaceSet.size()==2); addTestNode("Typ1"); assertTrue("Nach dem Anfügen des selben Typs wie zuvor muss das Set immer noch 2 Element enthalten. Und nicht "+replaceSet.size(),replaceSet.size()==2); } private void addTestNode(String type){ Vector resultContent = new Vector(); Pair pair = new Pair(tph,new RefType(type,0)); pair.SetOperator(PairOperator.Equal); resultContent.add(pair); ResultSet resultSet = new ResultSet(resultContent); Vector tphs = tph.getTypeInsertPoints(resultSet); TypeInsertSet toAdd = new TypeInsertSet(resultSet); for(TypeInsertPoint tip : tphs){ toAdd.add(tip); } System.out.println("Füge hinzu: "+toAdd); if(!replaceSet.contains(toAdd))replaceSet.add(toAdd); } } class TestNode extends SyntaxTreeNode implements TypeInsertable{ @Override public void replaceType(CReplaceTypeEvent e) { // TODO Auto-generated method stub } @Override public int getTypeLineNumber() { // TODO Auto-generated method stub return 0; } @Override public void setType(Type typ) { // TODO Auto-generated method stub } @Override public Type getType() { // TODO Auto-generated method stub return null; } @Override public int getOffset() { // TODO Auto-generated method stub return 0; } @Override public void setOffset(int offset) { // TODO Auto-generated method stub } @Override public String getIdentifier() { // TODO Auto-generated method stub return null; } @Override public TypeInsertPoint createTypeInsertPoint(TypePlaceholder tph, ResultSet resultSet) { return new TypeInsertPoint( this, this, resultSet.getTypeEqualTo(tph), resultSet); } @Override public int getVariableLength() { // TODO Auto-generated method stub return 0; } @Override public Vector getChildren() { // TODO Auto-generated method stub return new Vector<>(); } }