Compare commits

...

3 Commits

Author SHA1 Message Date
mattia
2d1165f8e4 test: cleanup 2025-03-01 18:17:58 +01:00
mattia
d1051edc90 test: check both with and without spaces 2025-03-01 18:17:17 +01:00
mattia
ce174e0325 feat: default choice 2025-03-01 18:12:03 +01:00
2 changed files with 59 additions and 30 deletions

View File

@@ -27,7 +27,7 @@ internal static class Helpers
public class TestBase public class TestBase
{ {
protected (Story, Diagnostic[]) ParseText(string inkInput) protected static (Story, Diagnostic[]) ParseText(string inkInput)
{ {
// parse the story // parse the story
var fileReader = new InMemoryFileReader([ var fileReader = new InMemoryFileReader([

View File

@@ -5,9 +5,9 @@ namespace InkBlot.Tests;
public class MultiDivertTest : TestBase public class MultiDivertTest : TestBase
{ {
private IStoryNode[] MyParseText(string text) private static IStoryNode[] MyParseText(string text, bool stripSpaces)
{ {
var (story, diagnostics) = ParseText(text); var (story, diagnostics) = ParseText(stripSpaces ? text.Replace(" ", "").Replace("\t", "") : text);
diagnostics.ShouldBe([]); diagnostics.ShouldBe([]);
var storyNodes = story.StoryNodes.ToArray(); var storyNodes = story.StoryNodes.ToArray();
@@ -15,65 +15,90 @@ public class MultiDivertTest : TestBase
return storyNodes; return storyNodes;
} }
[Fact] [Theory]
public void TestThreadDivert() [InlineData(true)]
[InlineData(false)]
public void TestThreadDivert(bool stripSpaces)
{ {
var storyNodes = MyParseText("<- threadName"); var storyNodes = MyParseText("<- threadName", stripSpaces);
storyNodes.ShouldBe([new MultiDivert(new ThreadDivert(new Identifier(["threadName"])))]); storyNodes.ShouldBe([new MultiDivert(new ThreadDivert(new Identifier(["threadName"])))]);
} }
[Fact] [Theory]
public void TestSimpleDivert() [InlineData(true)]
[InlineData(false)]
public void TestSimpleDivert(bool stripSpaces)
{ {
var storyNodes = MyParseText("-> divertName"); var storyNodes = MyParseText("-> divertName", stripSpaces);
storyNodes.ShouldBe([ storyNodes.ShouldBe([
new MultiDivert(new TunnelsAndDivertsList([], new TunnelListEndingDivert(new Identifier(["divertName"])))) new MultiDivert(new TunnelsAndDivertsList([], new TunnelListEndingDivert(new Identifier(["divertName"]))))
]); ]);
} }
[Fact] [Theory]
public void TestReturnFromTunnel() [InlineData(true)]
[InlineData(false)]
public void TestDefaultChoice(bool stripSpaces)
{ {
var storyNodes = MyParseText("->->"); var storyNodes = MyParseText("->", stripSpaces);
storyNodes.ShouldBe([
new MultiDivert(new TunnelsAndDivertsList([], new TunnelListEndingDivert(null)))
]);
}
[Theory]
[InlineData(true)]
[InlineData(false)]
public void TestReturnFromTunnel(bool stripSpaces)
{
var storyNodes = MyParseText("->->", stripSpaces);
storyNodes.ShouldBe([ storyNodes.ShouldBe([
new MultiDivert(new TunnelsAndDivertsList([], new TunnelListEndingReturnFromTunnel(null))) new MultiDivert(new TunnelsAndDivertsList([], new TunnelListEndingReturnFromTunnel(null)))
]); ]);
} }
[Fact] [Theory]
public void TestDivertFromTunnel() [InlineData(true)]
[InlineData(false)]
public void TestDivertFromTunnel(bool stripSpaces)
{ {
var storyNodes = MyParseText("->-> divertName"); var storyNodes = MyParseText("->-> divertName", stripSpaces);
storyNodes.ShouldBe([ storyNodes.ShouldBe([
new MultiDivert(new TunnelsAndDivertsList([], new MultiDivert(new TunnelsAndDivertsList([],
new TunnelListEndingReturnFromTunnel(new Identifier(["divertName"])))) new TunnelListEndingReturnFromTunnel(new Identifier(["divertName"]))))
]); ]);
} }
[Fact] [Theory]
public void TestTunnel() [InlineData(true)]
[InlineData(false)]
public void TestTunnel(bool stripSpaces)
{ {
var storyNodes = MyParseText("-> tunnelName ->"); var storyNodes = MyParseText("-> tunnelName ->", stripSpaces);
storyNodes.ShouldBe([ storyNodes.ShouldBe([
new MultiDivert(new TunnelsAndDivertsList([new Identifier(["tunnelName"])], new MultiDivert(new TunnelsAndDivertsList([new Identifier(["tunnelName"])],
new TunnelListEndingDivert(null))) new TunnelListEndingDivert(null)))
]); ]);
} }
[Fact] [Theory]
public void TestTunnelWithDivert() [InlineData(true)]
[InlineData(false)]
public void TestTunnelWithDivert(bool stripSpaces)
{ {
var storyNodes = MyParseText("-> tunnelName -> divertName"); var storyNodes = MyParseText("-> tunnelName -> divertName", stripSpaces);
storyNodes.ShouldBe([ storyNodes.ShouldBe([
new MultiDivert(new TunnelsAndDivertsList([new Identifier(["tunnelName"])], new MultiDivert(new TunnelsAndDivertsList([new Identifier(["tunnelName"])],
new TunnelListEndingDivert(new Identifier(["divertName"])))) new TunnelListEndingDivert(new Identifier(["divertName"]))))
]); ]);
} }
[Fact] [Theory]
public void TestMultiTunnel() [InlineData(true)]
[InlineData(false)]
public void TestMultiTunnel(bool stripSpaces)
{ {
var storyNodes = MyParseText("-> tunnelName1 -> tunnelName2 ->"); var storyNodes = MyParseText("-> tunnelName1 -> tunnelName2 ->", stripSpaces);
storyNodes.ShouldBe([ storyNodes.ShouldBe([
new MultiDivert(new TunnelsAndDivertsList( new MultiDivert(new TunnelsAndDivertsList(
[new Identifier(["tunnelName1"]), new Identifier(["tunnelName2"])], [new Identifier(["tunnelName1"]), new Identifier(["tunnelName2"])],
@@ -81,10 +106,12 @@ public class MultiDivertTest : TestBase
]); ]);
} }
[Fact] [Theory]
public void TestMultiTunnelWithReturn() [InlineData(true)]
[InlineData(false)]
public void TestMultiTunnelWithReturn(bool stripSpaces)
{ {
var storyNodes = MyParseText("-> tunnelName1 -> tunnelName2 ->->"); var storyNodes = MyParseText("-> tunnelName1 -> tunnelName2 ->->", stripSpaces);
storyNodes.ShouldBe([ storyNodes.ShouldBe([
new MultiDivert(new TunnelsAndDivertsList( new MultiDivert(new TunnelsAndDivertsList(
[new Identifier(["tunnelName1"]), new Identifier(["tunnelName2"])], [new Identifier(["tunnelName1"]), new Identifier(["tunnelName2"])],
@@ -92,10 +119,12 @@ public class MultiDivertTest : TestBase
]); ]);
} }
[Fact] [Theory]
public void TestMultiTunnelWithReturnAndReplacement() [InlineData(true)]
[InlineData(false)]
public void TestMultiTunnelWithReturnAndReplacement(bool stripSpaces)
{ {
var storyNodes = MyParseText("-> tunnelName1 -> tunnelName2 ->-> replacementDivert"); var storyNodes = MyParseText("-> tunnelName1 -> tunnelName2 ->-> replacementDivert", stripSpaces);
storyNodes.ShouldBe([ storyNodes.ShouldBe([
new MultiDivert(new TunnelsAndDivertsList( new MultiDivert(new TunnelsAndDivertsList(
[new Identifier(["tunnelName1"]), new Identifier(["tunnelName2"])], [new Identifier(["tunnelName1"]), new Identifier(["tunnelName2"])],