public void Push_WhenEmpty_AddsNode() { // Arrange var builder = new DefaultRazorIntermediateNodeBuilder(); var node = new BasicIntermediateNode(); // Act builder.Push(node); // Assert Assert.Same(node, builder.Current); }
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); }
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); }
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); }
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); }
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); }