feat: all cases of multidivert base structure

This commit is contained in:
mattia
2025-03-01 18:11:17 +01:00
parent 43745e75e7
commit ec3ede424d
2 changed files with 50 additions and 0 deletions

View File

@@ -59,4 +59,47 @@ public class MultiDivertTest : TestBase
new TunnelListEndingDivert(null)))
]);
}
[Fact]
public void TestTunnelWithDivert()
{
var storyNodes = MyParseText("-> tunnelName -> divertName");
storyNodes.ShouldBe([
new MultiDivert(new TunnelsAndDivertsList([new Identifier(["tunnelName"])],
new TunnelListEndingDivert(new Identifier(["divertName"]))))
]);
}
[Fact]
public void TestMultiTunnel()
{
var storyNodes = MyParseText("-> tunnelName1 -> tunnelName2 ->");
storyNodes.ShouldBe([
new MultiDivert(new TunnelsAndDivertsList(
[new Identifier(["tunnelName1"]), new Identifier(["tunnelName2"])],
new TunnelListEndingDivert(null)))
]);
}
[Fact]
public void TestMultiTunnelWithReturn()
{
var storyNodes = MyParseText("-> tunnelName1 -> tunnelName2 ->->");
storyNodes.ShouldBe([
new MultiDivert(new TunnelsAndDivertsList(
[new Identifier(["tunnelName1"]), new Identifier(["tunnelName2"])],
new TunnelListEndingReturnFromTunnel(null)))
]);
}
[Fact]
public void TestMultiTunnelWithReturnAndReplacement()
{
var storyNodes = MyParseText("-> tunnelName1 -> tunnelName2 ->-> replacementDivert");
storyNodes.ShouldBe([
new MultiDivert(new TunnelsAndDivertsList(
[new Identifier(["tunnelName1"]), new Identifier(["tunnelName2"])],
new TunnelListEndingReturnFromTunnel(new Identifier(["replacementDivert"]))))
]);
}
}

View File

@@ -58,6 +58,8 @@ public record TunnelListEndingReturnFromTunnel(Identifier? Divert);
public record TunnelsAndDivertsList(Identifier[] TunnelIdentifiers, TunnelListEnding Ending)
: IStoryNode
{
private const string Sep = ", ";
public virtual bool Equals(TunnelsAndDivertsList? other)
{
return other is not null && Ending.Equals(other.Ending) &&
@@ -68,4 +70,9 @@ public record TunnelsAndDivertsList(Identifier[] TunnelIdentifiers, TunnelListEn
{
return HashCode.Combine(TunnelIdentifiers, Ending);
}
public override string ToString()
{
return $"TunnelsAndDivertsList({string.Join(Sep, TunnelIdentifiers.Select(i => i.ToString()))}, {Ending})";
}
}