public void TestNamespaceIdentical() { var from = TreeHelper.SyntaxTreeFromString(" namespace test{ public class Foo1{}}"); var to = TreeHelper.SyntaxTreeFromString(" namespace test{ public class Foo1{}}"); var foo = TreeComparison.FindBelongingThing(from, to); Assert.IsNotNull(foo); Assert.IsFalse(foo.wasModified); Assert.AreEqual(ModificationKind.noModification, foo.howModified); }
public void TestClassIdentical() { var from = TreeHelper.SyntaxTreeFromString(" public class Foo1{}"); var to = TreeHelper.SyntaxTreeFromString(" public class Foo1{}"); Assert.AreEqual(1, to.childs.Count); // to and from should be compilation unit Assert.AreEqual(1, from.childs.Count); var foo = TreeComparison.FindBelongingThing(from.childs[0], to.childs[0]); Assert.IsNotNull(foo); Assert.IsFalse(foo.wasModified); Assert.AreEqual(ModificationKind.noModification, foo.howModified); }
public void TestMethodIdentical() { var from = TreeHelper.SyntaxTreeFromString(" public void Print(){Console.WriteLine(\"HalloWelt\");}"); var to = TreeHelper.SyntaxTreeFromString(" public void Print(){Console.WriteLine(\"HalloWelt\");}"); Assert.AreEqual(1, to.childs.Count); // to and from should be compilation unit Assert.AreEqual(1, from.childs.Count); var foo = TreeComparison.FindBelongingThing(from.childs[0], to.childs[0]); Assert.IsNotNull(foo); Assert.IsFalse(foo.wasModified); Assert.AreEqual(ModificationKind.noModification, foo.howModified); }
public void TestClassRenamed() { var from = TreeHelper.SyntaxTreeFromString(" public class Foo1{}"); var to = TreeHelper.SyntaxTreeFromString(" public class Foo2{}"); Assert.AreEqual(1, to.childs.Count); // to and from should be compilation unit Assert.AreEqual(1, from.childs.Count); var foo = TreeComparison.FindBelongingThing(from.childs[0], to.childs[0]); // gues that the namespace was renamed Assert.IsNotNull(foo); Assert.IsNotNull(foo.treeNode); Assert.IsTrue(foo.wasModified); Assert.AreEqual(ModificationKind.nameChanged, foo.howModified); }
public void TestClassContentChanged() { var from = TreeHelper.SyntaxTreeFromString(" public class Foo1{}"); var to = TreeHelper.SyntaxTreeFromString(" public class Foo1{ public void test(){} }"); Assert.AreEqual(1, to.childs.Count); // to and from should be compilation unit Assert.AreEqual(1, from.childs.Count); var foo = TreeComparison.FindBelongingThing(from.childs[0], to.childs[0]); // should find the namespace declaration with Foo2 in it Assert.IsNotNull(foo); Assert.IsNotNull(foo.treeNode); Assert.IsTrue(foo.wasModified); Assert.AreEqual(ModificationKind.contentChanged, foo.howModified); }
public void TestMethodRenamed() { var from = TreeHelper.SyntaxTreeFromString(" public void Print(){Console.WriteLine(\"HalloWelt\");}");; var to = TreeHelper.SyntaxTreeFromString(" public void PrintHelloWorld(){Console.WriteLine(\"HalloWelt\");}");; Assert.AreEqual(1, to.childs.Count); // to and from should be compilation unit Assert.AreEqual(1, from.childs.Count); var foo = TreeComparison.FindBelongingThing(from.childs[0], to.childs[0]); // gues that the namespace was renamed Assert.IsNotNull(foo); Assert.IsNotNull(foo.treeNode); Assert.IsTrue(foo.wasModified); Assert.AreEqual(ModificationKind.nameChanged, foo.howModified); }
public void TestMethodAdded2() { var from = TreeHelper.SyntaxTreeFromString(" public void Print(){Console.WriteLine(\"HalloWelt\");}");; var to = TreeHelper.SyntaxTreeFromString("public void Print2(){Console.WriteLine(\"blub blub\");} public void Print(){Console.WriteLine(\"HalloWelt\");} "); Assert.AreEqual(1, from.childs.Count); Assert.AreEqual(2, to.childs.Count); // first level is compilation unit var foo = TreeComparison.FindBelongingThing(from.childs[0], to.childs); // gues that the namespace was renamed Assert.IsNotNull(foo); Assert.IsNotNull(foo.treeNode); Assert.IsFalse(foo.wasModified); Assert.AreEqual(ModificationKind.noModification, foo.howModified); Assert.IsTrue(foo.treeNode.node.ToFullString().Contains("Hallo")); }
private static void CompareTressAndCreateEdges(SyntakTreeDecorator fromTree, SyntakTreeDecorator tooTree, List <Edge> transitionEdges) { if (fromTree == null || fromTree.childs == null) { return; } var thisLevelsEdges = new List <Edge>(); var tooList = new List <SyntakTreeDecorator>(); var notFound = new List <SyntakTreeDecorator>(); foreach (var from in fromTree.childs) { if (tooTree == null || tooTree.childs == null) { notFound.Add(from); continue; // probally deleted } var to = TreeComparison.FindBelongingThing(from, tooTree.childs); if (to != null) { if (tooList.Contains(to.treeNode)) { // used twice ... potential Bug DebugHelper.BreakIntoDebug(); } tooList.Add(to.treeNode); if (!to.wasModified) { transitionEdges.Add(new Edge(from.equivilantGraphNode, to.treeNode.equivilantGraphNode, Edge.EdgeType.NoCodeChange)); continue; } else { switch (to.howModified) { case ModificationKind.nameChanged: transitionEdges.Add(new Edge(from.equivilantGraphNode, to.treeNode.equivilantGraphNode, Edge.EdgeType.CodeChangedRename)); break; default: transitionEdges.Add(new Edge(from.equivilantGraphNode, to.treeNode.equivilantGraphNode, Edge.EdgeType.CodeChanged)); break; } } CompareTressAndCreateEdges(from, to.treeNode, transitionEdges); } else { // probally deleted notFound.Add(from); } } // track which kinds where found ... rest was probably created // todo: I should realy unit-test this. }