public void RemoveNodeResultShouldNotHaveReferenceToOriginalPrefix() { // Arrange var prefix = new CommentGroupNode("This is a prefix."); var oldNode = new TestRegexNode(); var target = new TestRegexNode(oldNode) { Prefix = prefix }; // Act RegexNode result = target.RemoveNode(oldNode); // Assert result.Prefix.ShouldNotBe(target.Prefix); }
public void RemoveNodeShouldHaveNoReferencesToTheOriginalTreeNodes() { // Arrange var charNodeA = new CharacterNode('a'); var charNodeB = new CharacterNode('b'); var childNodes = new List <RegexNode> { charNodeA, charNodeB }; var target = new TestRegexNode(childNodes); // Act RegexNode result = target.RemoveNode(charNodeA); // Assert result.ShouldNotBe(target); result.ChildNodes.ShouldNotContain(charNodeA); result.ChildNodes.ShouldNotContain(charNodeB); }
public void RemoveNodeShouldCopyNodeAndRemoveOldNode() { // Arrange var charNodeA = new CharacterNode('a'); var charNodeB = new CharacterNode('b'); var childNodes = new List <RegexNode> { charNodeA, charNodeB }; var target = new TestRegexNode(childNodes); // Act RegexNode result = target.RemoveNode(charNodeA); // Assert var childNode = result.ChildNodes.ShouldHaveSingleItem(); childNode.ToString().ShouldBe("b"); }
public void RemoveNodeShouldCopyRootsPrefix() { // Arrange var prefix2 = new CommentGroupNode("This is the prefix's prefix."); var prefix = new CommentGroupNode("This is a prefix.") { Prefix = prefix2 }; var oldNode = new TestRegexNode(); var target = new TestRegexNode(oldNode) { Prefix = prefix }; // Act RegexNode result = target.RemoveNode(oldNode); // Assert result.Prefix.ToString().ShouldBe(target.Prefix.ToString()); }
public void RemoveNodeShouldNotReturnRootNodeIfReturnRootIsFalse() { // Arrange var charNodeA = new CharacterNode('a'); var charNodeB = new CharacterNode('b'); var targetChildNodes = new List <RegexNode> { charNodeA, charNodeB }; var target = new TestRegexNode(targetChildNodes); var targetParent = new TestRegexNode(target); _ = new TestRegexNode(targetParent); // Act RegexNode result = target.RemoveNode(charNodeA, false); // Assert var childNode = result.ChildNodes.ShouldHaveSingleItem(); childNode.ToString().ShouldBe("b"); }
public void RemoveNodeShouldReturnRootNode() { // Arrange var charNodeA = new CharacterNode('a'); var charNodeB = new CharacterNode('b'); var targetChildNodes = new List <RegexNode> { charNodeA, charNodeB }; var target = new TestRegexNode(targetChildNodes); var targetParent = new TestRegexNode(target); _ = new TestRegexNode(targetParent); // Act RegexNode result = target.RemoveNode(charNodeA); // Assert var copiedTargetParentNode = result.ChildNodes.ShouldHaveSingleItem(); var modifiedNode = copiedTargetParentNode.ChildNodes.ShouldHaveSingleItem(); modifiedNode.ChildNodes.ShouldHaveSingleItem(); modifiedNode.ChildNodes.First().ToString().ShouldBe("b"); }