using InkBlot.ParseHierarchy; using Shouldly; namespace InkBlot.Tests; public class MultiDivertTest : TestBase { private IStoryNode[] MyParseText(string text) { var (story, diagnostics) = ParseText(text); diagnostics.ShouldBe([]); var storyNodes = story.StoryNodes.ToArray(); return storyNodes; } [Fact] public void TestThreadDivert() { var storyNodes = MyParseText("<- threadName"); storyNodes.ShouldBe([new MultiDivert(new ThreadDivert(new Identifier(["threadName"])))]); } [Fact] public void TestSimpleDivert() { var storyNodes = MyParseText("-> divertName"); storyNodes.ShouldBe([ new MultiDivert(new TunnelsAndDivertsList([], new TunnelListEndingDivert(new Identifier(["divertName"])))) ]); } [Fact] public void TestReturnFromTunnel() { var storyNodes = MyParseText("->->"); storyNodes.ShouldBe([ new MultiDivert(new TunnelsAndDivertsList([], new TunnelListEndingReturnFromTunnel(null))) ]); } [Fact] public void TestDivertFromTunnel() { var storyNodes = MyParseText("->-> divertName"); storyNodes.ShouldBe([ new MultiDivert(new TunnelsAndDivertsList([], new TunnelListEndingReturnFromTunnel(new Identifier(["divertName"])))) ]); } [Fact] public void TestTunnel() { var storyNodes = MyParseText("-> tunnelName ->"); storyNodes.ShouldBe([ new MultiDivert(new TunnelsAndDivertsList([new Identifier(["tunnelName"])], new TunnelListEndingDivert(null))) ]); } }