public void AddNodeShouldCopyNodeAndAddNewRegexNode() { // Arrange var target = new TestRegexNode(new List <RegexNode> { new CharacterNode('a'), new CharacterNode('b') }); var newNode = new CharacterNode('c'); // Act RegexNode result = target.AddNode(newNode); // Assert result.ChildNodes.Count().ShouldBe(3); result.ChildNodes.Last().ShouldBe(newNode); }
public void AddNodeResultShouldNotHaveReferenceToOriginalPrefix() { // Arrange var prefix = new CommentGroupNode("This is a prefix."); var target = new TestRegexNode { Prefix = prefix }; var newNode = new TestRegexNode(); // Act RegexNode result = target.AddNode(newNode); // Assert result.Prefix.ShouldNotBe(target.Prefix); }
public void AddNodeShouldCopyPrefix() { // Arrange var prefix = new CommentGroupNode("This is a prefix."); var target = new TestRegexNode { Prefix = prefix }; var newNode = new TestRegexNode(); // Act RegexNode result = target.AddNode(newNode); // Assert result.Prefix.ToString().ShouldBe(target.Prefix.ToString()); }
public void AddNodeShouldHaveNoReferencesToTheOriginalTreeNodes() { // Arrange var charNodeA = new CharacterNode('a'); var charNodeB = new CharacterNode('b'); var childNodes = new List <RegexNode> { charNodeA, charNodeB }; var target = new TestRegexNode(childNodes); var newNode = new CharacterNode('c'); // Act RegexNode result = target.AddNode(newNode); // Assert result.ShouldNotBe(target); result.ChildNodes.ShouldNotContain(charNodeA); result.ChildNodes.ShouldNotContain(charNodeB); }
public void AddNodeShouldNotReturnRootNodeIfReturnRootIsFalse() { // Arrange var targetChildNodes = new List <RegexNode> { new CharacterNode('a'), new CharacterNode('b') }; var target = new TestRegexNode(targetChildNodes); var targetParent = new TestRegexNode(target); _ = new TestRegexNode(targetParent); var newNode = new CharacterNode('c'); // Act RegexNode result = target.AddNode(newNode, false); // Assert result.ChildNodes.Count().ShouldBe(3); result.ChildNodes.Last().ShouldBe(newNode); }
public void AddNodeShouldCopyDescendants() { // Arrange var grandChildConcatNode = new ConcatenationNode(new List <RegexNode> { new CharacterNode('d'), new CharacterNode('e') }); var childConcatNode = new ConcatenationNode(new List <RegexNode> { grandChildConcatNode, new CharacterNode('a'), new CharacterNode('b') }); var target = new TestRegexNode(childConcatNode); var newNode = new CharacterNode('c'); // Act RegexNode result = target.AddNode(newNode); // Assert result.ChildNodes.Count().ShouldBe(2); result.ChildNodes.First().ChildNodes.Count().ShouldBe(3); result.ChildNodes.First().ChildNodes.First().ChildNodes.Count().ShouldBe(2); }
public void AddNodeShouldReturnRootNode() { // Arrange var targetChildNodes = new List <RegexNode> { new CharacterNode('a'), new CharacterNode('b') }; var target = new TestRegexNode(targetChildNodes); var targetParent = new TestRegexNode(target); _ = new TestRegexNode(targetParent); var newNode = new CharacterNode('c'); // Act RegexNode result = target.AddNode(newNode); // Assert var copiedTargetParent = result.ChildNodes.ShouldHaveSingleItem(); var modifiedTarget = copiedTargetParent.ChildNodes.ShouldHaveSingleItem(); modifiedTarget.ChildNodes.Count().ShouldBe(3); modifiedTarget.ChildNodes.Last().ShouldBe(newNode); }