public void Invert_SimpleTree_ShouldReturnInvertedGraph() { // arrange var target = new GraphInvertor(); var root = new Node { Value = "1", Childs = new List <Node> { new Node("2") } }; // act var result = target.Invert(root); // assert var oldRoot = result.Single(n => n.Value == "1"); oldRoot.Childs.Should().BeEmpty(); var secondNode = result.Single(n => n.Value == "2"); secondNode.Childs.Should().HaveCount(1).And.Contain(oldRoot); }
public void Invert_ShouldReturnInvertedGraph() { // arrange var target = new GraphInvertor(); var root = new Node { Value = "1", Childs = new List <Node> { new Node { Value = "2", Childs = new List <Node> { new Node("3"), new Node("4") } }, new Node { Value = "5", Childs = new List <Node> { new Node("6"), new Node("7") } } } }; // act var result = target.Invert(root); // assert var oldRoot = result.Single(n => n.Value == "1"); oldRoot.Childs.Should().BeEmpty(); var secondNode = result.Single(n => n.Value == "2"); secondNode.Childs.Should().HaveCount(1).And.Contain(oldRoot); var fifthNode = result.Single(n => n.Value == "5"); fifthNode.Childs.Should().HaveCount(1).And.Contain(oldRoot); // old leafs var thirdNode = result.Single(n => n.Value == "3"); thirdNode.Childs.Should().HaveCount(1).And.Contain(secondNode); var forthNode = result.Single(n => n.Value == "4"); forthNode.Childs.Should().HaveCount(1).And.Contain(secondNode); var sixthNode = result.Single(n => n.Value == "6"); sixthNode.Childs.Should().HaveCount(1).And.Contain(fifthNode); var seventhNode = result.Single(n => n.Value == "7"); seventhNode.Childs.Should().HaveCount(1).And.Contain(fifthNode); }