feat: multidivert; more tests

This commit is contained in:
mattia
2025-03-01 18:03:42 +01:00
parent 6ee8051004
commit 43745e75e7
11 changed files with 276 additions and 212 deletions

View File

@@ -3,22 +3,60 @@ using Shouldly;
namespace InkBlot.Tests;
public class MultiDivertTest
public class MultiDivertTest : TestBase
{
[Fact]
public void TestThreadDivert()
private IStoryNode[] MyParseText(string text)
{
var fileReader = new InMemoryFileReader([
("main.ink", "<- threadName")
]);
var tokensStream = InkBlotParser.GetTokenStream(fileReader, "main.ink");
tokensStream.Fill();
var tokens = tokensStream.GetTokens();
using var loggerFactory = Helpers.GetLoggerFactory();
var (story, diagnostics) = InkBlotParser.Parse(fileReader, loggerFactory, "main.ink");
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)))
]);
}
}