private static void ExecuteDuplicationDetection(Result expectedResult, string codeText, string msgFromCodeComment) { TestLog.EmbedPlainText("The code", codeText); CompilationUnit cu = AstMatchHelper.ParseToCompilationUnit(codeText); // We require the first class in the file to have the Foo & Bar methods. var classes = cu.FindAllClasses(); Assert.That(classes.Count(), Is.GreaterThan(0), "Expected at least one class to be in the test cs file."); // Expect two methods, Foo & Bar. IndexableMethodFinderVisitor visitor = new IndexableMethodFinderVisitor(); classes.First().AcceptVisitor(visitor, null); Assert.AreEqual(visitor.FooMethod.Name, "Foo", "Expected a method named Foo."); Assert.AreEqual(visitor.BarMethod.Name, "Bar", "Expected a method named Bar."); AstComparisonVisitor cv = new AstComparisonVisitor(); visitor.BarMethod.AcceptVisitor(cv, visitor.FooMethod); if (expectedResult == Result.Match) { Assert.IsTrue(cv.Match, "Expected Foo & Bar to match: " + msgFromCodeComment); Assert.That(visitor.BarMethod.Body.Matches2(visitor.FooMethod.Body)); } else { Assert.IsFalse(cv.Match, "Expected Foo & Bar to not match: " + msgFromCodeComment); Assert.That(visitor.BarMethod.Matches2(visitor.FooMethod), Is.False); } }
public static bool Matches(this INode left, INode right) { AstComparisonVisitor cv = new AstComparisonVisitor(); left.AcceptVisitor(cv, right); return(cv.Match); }
public static bool Matches(this MethodDeclaration md_this, MethodDeclaration md) { AstComparisonVisitor cv = new AstComparisonVisitor(); md.AcceptVisitor(cv, md_this); return(cv.Match); }
private bool AcceptChildren(AstComparisonVisitor visitor, object data) { foreach (INode n in nodes) { if (!n.AcceptVisitor(visitor, data)) { return(false); } } return(true); }
public virtual bool AcceptChildren(AstComparisonVisitor visitor, object data) { AbstractNode d = (AbstractNode)data; for (int i = 0; i < children.Count; i++) { INode child = Children[i]; if (child == null) { return(false); } if (!child.AcceptVisitor(visitor, d.Children[i])) { return(false); } } return(true); }
public override bool AcceptVisitor(AstComparisonVisitor visitor, object data) { return(visitor.VisitPrimitiveExpression(this, data)); }
public bool AcceptVisitor(AstComparisonVisitor visitor, object data) { return(AcceptChildren(visitor, data)); }
public abstract bool AcceptVisitor(AstComparisonVisitor visitor, object data);
public override bool AcceptVisitor(AstComparisonVisitor visitor, object data) { return(true); }
public override bool AcceptVisitor(AstComparisonVisitor visitor, object data) { return(visitor.VisitBlockStatement(this, data)); }
public override bool AcceptVisitor(AstComparisonVisitor visitor, object data) { return(visitor.VisitTypeReference(this, data)); }
public override bool AcceptVisitor(AstComparisonVisitor visitor, object data) { return(visitor.VisitLocalVariableDeclaration(this, data)); }
public override bool AcceptVisitor(AstComparisonVisitor visitor, object data) { return(visitor.VisitCompilationUnit(this, data)); }