94 lines
2.2 KiB
C#
94 lines
2.2 KiB
C#
using MfGames.Markdown.Exceptions;
|
|
using MfGames.TestSetup;
|
|
using Xunit;
|
|
using Xunit.Abstractions;
|
|
|
|
namespace MfGames.Markdown.Tests;
|
|
|
|
/// <summary>
|
|
/// Tests the functionality of HeadingLevelTransformer.
|
|
/// </summary>
|
|
public class HeadingLevelTransformerTests : TestBase<TestContext>
|
|
{
|
|
public HeadingLevelTransformerTests(ITestOutputHelper output)
|
|
: base(output) { }
|
|
|
|
[Fact]
|
|
public void MakeShallow()
|
|
{
|
|
string input = string.Join("\n", "### Heading 3", "", "Paragraph", "");
|
|
|
|
string expected = string.Join("\n", "# Heading 3", "", "Paragraph", "");
|
|
|
|
HeadingLevelTransformer transformer = new(-2);
|
|
|
|
string? output = transformer.Transform(input);
|
|
|
|
Assert.Equal(expected, output);
|
|
}
|
|
|
|
[Fact]
|
|
public void ThreeLevels()
|
|
{
|
|
string input = string.Join(
|
|
"\n",
|
|
"# Heading 1",
|
|
"",
|
|
"## Heading 2",
|
|
"",
|
|
"### Heading 3",
|
|
"",
|
|
"Paragraph",
|
|
""
|
|
);
|
|
|
|
string expected = string.Join(
|
|
"\n",
|
|
"## Heading 1",
|
|
"",
|
|
"### Heading 2",
|
|
"",
|
|
"#### Heading 3",
|
|
"",
|
|
"Paragraph",
|
|
""
|
|
);
|
|
|
|
HeadingLevelTransformer transformer = new(1);
|
|
|
|
string? output = transformer.Transform(input);
|
|
|
|
Assert.Equal(expected, output);
|
|
}
|
|
|
|
[Fact]
|
|
public void TooDeep()
|
|
{
|
|
string input = string.Join("\n", "###### Heading 1", "", "Paragraph", "");
|
|
|
|
HeadingLevelTransformer transformer = new(5);
|
|
|
|
var exception = Assert.Throws<MarkdownHeaderOutOfRangeException>(
|
|
() => transformer.Transform(input)
|
|
);
|
|
|
|
Assert.Equal(6, exception.OldLevel);
|
|
Assert.Equal(11, exception.NewLevel);
|
|
}
|
|
|
|
[Fact]
|
|
public void TooShallow()
|
|
{
|
|
string input = string.Join("\n", "# Heading 1", "", "Paragraph", "");
|
|
|
|
HeadingLevelTransformer transformer = new(-1);
|
|
|
|
var exception = Assert.Throws<MarkdownHeaderOutOfRangeException>(
|
|
() => transformer.Transform(input)
|
|
);
|
|
|
|
Assert.Equal(1, exception.OldLevel);
|
|
Assert.Equal(0, exception.NewLevel);
|
|
}
|
|
}
|