Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }