package syntaxTree; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import mycompiler.MyCompiler; import mycompiler.MyCompilerAPI; import mycompiler.SourceFile; import mycompiler.SyntaxTreeNode; import mycompiler.myparser.JavaParser.yyException; import org.junit.Test; import junit.framework.TestCase; public class NodeEqualTest extends TestCase{ private static final String rootDirectory = System.getProperty("user.dir")+"/test/syntaxTree/"; private static final String testFile = "NodeEqualTest.jav"; @Test public void test(){ MyCompilerAPI compiler = MyCompiler.getAPI(); MyCompilerAPI compiler2 = MyCompiler.getAPI(); SourceFile tree = null; SourceFile tree2 = null; try { tree = compiler.parse(new File(rootDirectory + testFile)); tree2 = compiler2.parse(new File(rootDirectory + testFile)); } catch (IOException | yyException e) { e.printStackTrace(); fail(); } recursivlyCheckEqual(tree, tree2); } private void recursivlyCheckEqual(SyntaxTreeNode node1, SyntaxTreeNode node2){ for(SyntaxTreeNode n1 : node1.getChildren()){ int matches = 0; for(SyntaxTreeNode n2 : node2.getChildren()){ if(n2.equals(n1)){ System.out.println(n2 + " == "+n1); matches++; this.recursivlyCheckEqual(n1, n2); }else{ System.out.println(n2 + " != "+ n1); } } System.out.println(""); assertTrue("Nur eines der Children darf gleich sein, nicht "+matches, matches == 1 && node2.getChildren().size()>0); } } }