feat: all cases of multidivert base structure
This commit is contained in:
@@ -59,4 +59,47 @@ public class MultiDivertTest : TestBase
|
|||||||
new TunnelListEndingDivert(null)))
|
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)
|
public record TunnelsAndDivertsList(Identifier[] TunnelIdentifiers, TunnelListEnding Ending)
|
||||||
: IStoryNode
|
: IStoryNode
|
||||||
{
|
{
|
||||||
|
private const string Sep = ", ";
|
||||||
|
|
||||||
public virtual bool Equals(TunnelsAndDivertsList? other)
|
public virtual bool Equals(TunnelsAndDivertsList? other)
|
||||||
{
|
{
|
||||||
return other is not null && Ending.Equals(other.Ending) &&
|
return other is not null && Ending.Equals(other.Ending) &&
|
||||||
@@ -68,4 +70,9 @@ public record TunnelsAndDivertsList(Identifier[] TunnelIdentifiers, TunnelListEn
|
|||||||
{
|
{
|
||||||
return HashCode.Combine(TunnelIdentifiers, Ending);
|
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