Files
inkblot/InkBlot.Tests/ContentTextTest.cs
2025-02-16 18:26:28 +01:00

34 lines
1.1 KiB
C#

using InkBlot.ParseHierarchy;
using Shouldly;
namespace InkBlot.Tests;
public class ContentTextTest
{
[Theory]
[InlineData("Hello!", "Hello!", 0)]
[InlineData("Hel-lo!", "Hel-lo!", 0)]
[InlineData("Hel\\lo!", "Hello!", 0)]
[InlineData("Hel<lo!", "Hel<lo!", 0)]
// TODO: check error situations better when diverts (->), threads (<-) and tags (#) are supported
[InlineData("Hel->lo!", "", 1)]
[InlineData("Hel<-lo!", "", 1)]
[InlineData("Hel#lo!", "", 1)]
public void TestBaseContentSuccess(string inkInput, string result, int numErrors)
{
// parse the story
var fileReader = new PreMadeFileReader([
("main.ink", inkInput)
]);
var parser = new InkBlotParser();
var (story, diagnostics) = parser.Parse(fileReader, "main.ink");
// check the diagnostic counts match
diagnostics.Count().ShouldBe(numErrors);
// check the contents match (only if there was no diagnostic)
if (numErrors != 0) return;
var contents = story.StoryNodes.ToArray();
contents.ShouldBe([new Content(result)]);
}
}