forked from JavaTX/JavaCompilerCore
SyntaxTreeNode.equals() implementiert
This commit is contained in:
parent
5d57179364
commit
94aae83ca8
@ -483,14 +483,16 @@ public class MyCompiler implements MyCompilerAPI
|
||||
*/
|
||||
// ino.end
|
||||
// ino.method.parse.21298.definition
|
||||
public void parse(File file)
|
||||
public SourceFile parse(File file)
|
||||
throws FileNotFoundException, IOException, JavaParser.yyException
|
||||
// ino.end
|
||||
// ino.method.parse.21298.body
|
||||
{
|
||||
FileReader fr = new FileReader(file);
|
||||
this.m_AbstractSyntaxTree.add(this.parse2SyntaxTree(fr));
|
||||
SourceFile ret = this.parse2SyntaxTree(fr);
|
||||
this.m_AbstractSyntaxTree.add(ret);
|
||||
fr.close();
|
||||
return ret;
|
||||
}
|
||||
// ino.end
|
||||
|
||||
|
@ -50,7 +50,7 @@ public interface MyCompilerAPI
|
||||
*/
|
||||
// ino.end
|
||||
// ino.method.parse.21334.declaration
|
||||
public void parse(File file)
|
||||
public SourceFile parse(File file)
|
||||
throws FileNotFoundException, IOException, JavaParser.yyException;
|
||||
// ino.end
|
||||
|
||||
|
@ -41,4 +41,13 @@ public abstract class SyntaxTreeNode {
|
||||
public String getDescription(){
|
||||
return this.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object object){
|
||||
if(!(object instanceof SyntaxTreeNode))return false;
|
||||
SyntaxTreeNode equal = (SyntaxTreeNode)object;
|
||||
if(!equal.getDescription().equals(this.getDescription()))return false;
|
||||
if(!this.getParent().equals(equal.getParent()))return false; //auch das Elternelement überprüfen.
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
49
test/syntaxTree/NodeEqualTest.java
Normal file
49
test/syntaxTree/NodeEqualTest.java
Normal file
@ -0,0 +1,49 @@
|
||||
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/plugindevelopment/";
|
||||
private static final String testFile = "";
|
||||
@Test
|
||||
public void test(){
|
||||
String inferedSource = "";
|
||||
MyCompilerAPI compiler = MyCompiler.getAPI();
|
||||
SourceFile tree = null;
|
||||
try {
|
||||
tree = compiler.parse(new File(rootDirectory + testFile));
|
||||
} catch (IOException | yyException e) {
|
||||
e.printStackTrace();
|
||||
fail();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void recursivlyCheckEqual(SyntaxTreeNode node1, SyntaxTreeNode node2){
|
||||
for(SyntaxTreeNode n1 : node1.getChildren()){
|
||||
int matches = 0;
|
||||
for(SyntaxTreeNode n2 : node2.getChildren()){
|
||||
if(n2.equals(n1)){
|
||||
matches++;
|
||||
this.recursivlyCheckEqual(n1, n2);
|
||||
}
|
||||
}
|
||||
assertTrue("Nur eines der Children darf gleich sein", matches == 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user