public void Push_WhenEmpty_AddsNode()
        {
            // Arrange
            var builder = new DefaultRazorIntermediateNodeBuilder();
            var node    = new BasicIntermediateNode();

            // Act
            builder.Push(node);

            // Assert
            Assert.Same(node, builder.Current);
        }
Ejemplo n.º 2
0
        public void Replace_ThrowsForNodeNotFound()
        {
            // Arrange
            var parent = new BasicIntermediateNode("Parent");

            var node1 = new BasicIntermediateNode("Node1");

            var reference = new IntermediateNodeReference(parent, node1);

            // Act & Assert
            var exception = Assert.Throws <InvalidOperationException>(() => reference.Replace(new BasicIntermediateNode("_")));

            Assert.Equal("The reference is invalid. The node 'Node1' could not be found as a child of 'Parent'.", exception.Message);
        }
Ejemplo n.º 3
0
        public void Replace_ThrowsForReadOnlyCollection()
        {
            // Arrange
            var parent = new BasicIntermediateNode("Parent", IntermediateNodeCollection.ReadOnly);

            var node1 = new BasicIntermediateNode("Node1");

            var reference = new IntermediateNodeReference(parent, node1);

            // Act & Assert
            var exception = Assert.Throws <InvalidOperationException>(() => reference.Replace(new BasicIntermediateNode("_")));

            Assert.Equal("The node 'Parent' has a read-only child collection and cannot be modified.", exception.Message);
        }
        public void Pop_SingleNodeDepth_RemovesAndReturnsNode()
        {
            // Arrange
            var builder = new DefaultRazorIntermediateNodeBuilder();

            var node = new BasicIntermediateNode();

            builder.Push(node);

            // Act
            var result = builder.Pop();

            // Assert
            Assert.Same(node, result);
            Assert.Null(builder.Current);
        }
        public void Push_WhenNonEmpty_SetsUpChild()
        {
            // Arrange
            var builder = new DefaultRazorIntermediateNodeBuilder();

            var parent = new BasicIntermediateNode();

            builder.Push(parent);

            var node = new BasicIntermediateNode();

            // Act
            builder.Push(node);

            // Assert
            Assert.Same(node, builder.Current);
            Assert.Collection(parent.Children, n => Assert.Same(node, n));
        }
        public void Insert_AddsToChildren_EmptyCollection()
        {
            // Arrange
            var builder = new DefaultRazorIntermediateNodeBuilder();

            var parent = new BasicIntermediateNode();

            builder.Push(parent);

            var node = new BasicIntermediateNode();

            // Act
            builder.Insert(0, node);

            // Assert
            Assert.Same(parent, builder.Current);
            Assert.Collection(parent.Children, n => Assert.Same(node, n));
        }
        public void Build_PopsMultipleLevels()
        {
            // Arrange
            var builder = new DefaultRazorIntermediateNodeBuilder();

            var document = new DocumentIntermediateNode();

            builder.Push(document);

            var node = new BasicIntermediateNode();

            builder.Push(node);

            // Act
            var result = builder.Build();

            // Assert
            Assert.Same(document, result);
            Assert.Null(builder.Current);
        }
Ejemplo n.º 8
0
        public void InsertAfter_SingleNode_AddsNodeAfterNode_AtEnd()
        {
            // Arrange
            var parent = new BasicIntermediateNode("Parent");

            var node1 = new BasicIntermediateNode("Node1");
            var node2 = new BasicIntermediateNode("Node2");
            var node3 = new BasicIntermediateNode("Node3");

            parent.Children.Add(node1);
            parent.Children.Add(node2);

            var reference = new IntermediateNodeReference(parent, node2);

            // Act
            reference.InsertAfter(node3);

            // Assert
            Assert.Equal(new[] { node1, node2, node3, }, parent.Children);
        }
Ejemplo n.º 9
0
        public void InsertAfter_MultipleNodes_AddsNodesAfterNode()
        {
            // Arrange
            var parent = new BasicIntermediateNode("Parent");

            var node1 = new BasicIntermediateNode("Node1");
            var node2 = new BasicIntermediateNode("Node2");
            var node3 = new BasicIntermediateNode("Node3");
            var node4 = new BasicIntermediateNode("Node4");

            parent.Children.Add(node1);
            parent.Children.Add(node4);

            var reference = new IntermediateNodeReference(parent, node1);

            // Act
            reference.InsertAfter(new[] { node2, node3 });

            // Assert
            Assert.Equal(new[] { node1, node2, node3, node4, }, parent.Children);
        }
Ejemplo n.º 10
0
        public void Remove_RemovesNode()
        {
            // Arrange
            var parent = new BasicIntermediateNode("Parent");

            var node1 = new BasicIntermediateNode("Node1");
            var node2 = new BasicIntermediateNode("Node2");
            var node3 = new BasicIntermediateNode("Node3");

            parent.Children.Add(node1);
            parent.Children.Add(node3);
            parent.Children.Add(node2);

            var reference = new IntermediateNodeReference(parent, node3);

            // Act
            reference.Remove();

            // Assert
            Assert.Equal(new[] { node1, node2, }, parent.Children);
        }
 public virtual void VisitBasic(BasicIntermediateNode node)
 {
     VisitDefault(node);
 }