feat: all cases of multidivert base structure
This commit is contained in:
@@ -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"]))))
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -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})";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user