package syntaxTree; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import org.junit.Test; import de.dhbwstuttgart.core.MyCompiler; import de.dhbwstuttgart.core.MyCompilerAPI; import de.dhbwstuttgart.logger.LoggerConfiguration; import de.dhbwstuttgart.logger.Section; import de.dhbwstuttgart.parser.JavaParser.yyException; import de.dhbwstuttgart.syntaxtree.SourceFile; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; 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(){ LoggerConfiguration logConfig = new LoggerConfiguration(); logConfig.setOutput(Section.TYPEINFERENCE, System.out); MyCompilerAPI compiler = MyCompiler.getAPI(logConfig); MyCompilerAPI compiler2 = MyCompiler.getAPI(logConfig); 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); } } }