From f339935587a06d58e561c7eb868c0384fb3aec2b Mon Sep 17 00:00:00 2001 From: Diana Belokon <67607236+dbelokon@users.noreply.github.com> Date: Thu, 18 Nov 2021 15:11:43 -0500 Subject: [PATCH] Add tests for MarkdownParser class --- glazed-donut.Tests/MarkdownParserTests.cs | 53 +++++++++++++++++++ .../FileParsing/Parsing/MarkdownParser.cs | 2 +- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 glazed-donut.Tests/MarkdownParserTests.cs diff --git a/glazed-donut.Tests/MarkdownParserTests.cs b/glazed-donut.Tests/MarkdownParserTests.cs new file mode 100644 index 0000000..8099b1a --- /dev/null +++ b/glazed-donut.Tests/MarkdownParserTests.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using GlazedDonut.FileParsing.Parsing; +using Xunit; + +namespace glazed_donut.Tests +{ + public class MarkdownParserTests + { + [Fact] + public void ThrowException_WhenStreamIsNull() + { + ArgumentNullException e = Assert.Throws(() => { + var parser = new MarkdownParser(null); + }); + + Assert.NotNull(e); + } + + [Fact] + public void ReturnEmptyParagraph_WhenStreamIsEmpty() + { + var str = ""; + var stream = new MemoryStream(Encoding.UTF8.GetBytes(str)); + var parser = new MarkdownParser(stream); + + var htmlString = parser.Parse(); + + Assert.Equal("", htmlString); + } + + [Theory, MemberData(nameof(ValidInputStringData))] + public void ReturnHtmlString_WhenParagraphIsValid(string input, string expectedHtml) + { + var stream = new MemoryStream(Encoding.UTF8.GetBytes(input)); + var parser = new MarkdownParser(stream); + + var htmlString = parser.Parse(); + + Assert.Equal(expectedHtml, htmlString); + } + + public static IEnumerable ValidInputStringData => + new List + { + new object[] { "Markdown", "

Markdown

\n" }, + new object[] { "# Markdown", "

Markdown

\n" }, + new object[] { "---", "
" } + }; + } +} diff --git a/glazed-donut/FileParsing/Parsing/MarkdownParser.cs b/glazed-donut/FileParsing/Parsing/MarkdownParser.cs index 1c87418..a456e83 100644 --- a/glazed-donut/FileParsing/Parsing/MarkdownParser.cs +++ b/glazed-donut/FileParsing/Parsing/MarkdownParser.cs @@ -70,7 +70,7 @@ private string ProduceHtmlString(IEnumerable paragraphs) { if (IsHeading(p)) { - htmlString += $"

{p.Replace("\n", " ").Replace("#", string.Empty)}

\n"; + htmlString += $"

{p.Replace("#", string.Empty).Trim()}

\n"; } else if (IsHorizontalLine(p)) {