using System.Collections.Generic; using System.Linq; using Gallium; using Nitride.Contents; using Nitride.Tests; using Xunit; using Xunit.Abstractions; namespace Nitride.Yaml.Tests; public class ParseYamlHeaderTest : NitrideTestBase { public ParseYamlHeaderTest(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() .GetText() .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() .GetText() .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() .GetText() .Split("\n")); Assert.True(output.Has()); Assert.Equal( "Test Title 1", output.Get() .Title); } private class TestHeader { public string? Title { get; set; } } }