Add cycle detection to tree rendering

This commit is contained in:
Matt Constable
2021-01-14 17:37:22 +00:00
committed by GitHub
parent dee3c01629
commit 994540d97f
4 changed files with 49 additions and 2 deletions

View File

@ -1,5 +1,6 @@
using System.Linq;
using System.Threading.Tasks;
using Shouldly;
using Spectre.Console.Testing;
using Spectre.Verify.Extensions;
using VerifyXunit;
@ -56,5 +57,29 @@ namespace Spectre.Console.Tests.Unit
// Then
return Verifier.Verify(console.Output);
}
[Fact]
public void Should_Throw_If_Tree_Contains_Cycles()
{
// Given
var console = new FakeConsole(width: 80);
var child2 = new TreeNode(new Text("child 2"));
var child3 = new TreeNode(new Text("child 3"));
var child1 = new TreeNode(new Text("child 1"));
child1.AddNodes(child2, child3);
var root = new TreeNode(new Text("Branch Node"));
root.AddNodes(child1);
child2.AddNode(root);
var tree = new Tree("root node");
tree.AddNodes(root);
// When
var result = Record.Exception(() => console.Render(tree));
// Then
result.ShouldBeOfType<CircularTreeException>();
}
}
}
}