using System.Collections.Generic; using System.Linq; using MfGames.Gallium; using MfGames.Nitride.Contents; using MfGames.Nitride.Tests; using Xunit; using Xunit.Abstractions; namespace MfGames.Nitride.Yaml.Tests; public class ParseYamlHeaderTests : NitrideTestBase { public ParseYamlHeaderTests(ITestOutputHelper output) : base(output) { } [Fact] public void ParseNoContent() { var input = new List { new Entity().SetTextContent( new StringTextContent("---", "title: Test Title 1", "---")) }; var op = new ParseYamlHeader(); Entity output = input.Run(op) .First(); Assert.True(output.Has()); Assert.Equal( new[] { string.Empty, }, output.Get() .GetTextContentString() .Split("\n")); Assert.True(output.Has()); Assert.Equal( "Test Title 1", output.Get() .Title); } [Fact] public void ParseNoHeader() { var input = new List { new Entity().SetTextContent(new StringTextContent("Hello")) }; var op = new ParseYamlHeader(); Entity output = input.Run(op) .First(); Assert.True(output.Has()); Assert.Equal( new[] { "Hello", string.Empty, }, output.Get() .GetTextContentString() .Split("\n")); Assert.True(output.Has()); Assert.Null( output.Get() .Title); } [Fact] public void ParseSimpleHeader() { var input = new List { new Entity().SetTextContent( new StringTextContent( "---", "title: Test Title 1", "---", "Hello")) }; var op = new ParseYamlHeader(); Entity output = input.Run(op) .First(); Assert.True(output.Has()); Assert.Equal( new[] { "Hello", string.Empty, }, output.Get() .GetTextContentString() .Split("\n")); Assert.True(output.Has()); Assert.Equal( "Test Title 1", output.Get() .Title); } private class TestHeader { public string? Title { get; set; } } }