diff --git a/src/commonTest/kotlin/nl/astraeus/markdown/parser/ParseTest.kt b/src/commonTest/kotlin/nl/astraeus/markdown/parser/ParseTest.kt index 618a28f..fce3160 100644 --- a/src/commonTest/kotlin/nl/astraeus/markdown/parser/ParseTest.kt +++ b/src/commonTest/kotlin/nl/astraeus/markdown/parser/ParseTest.kt @@ -1,6 +1,7 @@ package nl.astraeus.markdown.parser import kotlin.test.Test +import kotlin.test.assertEquals class ParseTest { @@ -19,7 +20,25 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(3, md.size) + val p1 = md[0] as MarkdownPart.Paragraph + assertEquals("Dit is een ", (p1.parts[0] as MarkdownPart.ParagraphPart.Text).text) + assertEquals("test", (p1.parts[1] as MarkdownPart.ParagraphPart.Bold).text) + assertEquals(", laat ", (p1.parts[2] as MarkdownPart.ParagraphPart.Text).text) + assertEquals("mij", (p1.parts[3] as MarkdownPart.ParagraphPart.BoldItalic).text) + assertEquals(" maar eens zien!\n\n", (p1.parts[4] as MarkdownPart.ParagraphPart.Text).text) + + val p2 = md[1] as MarkdownPart.Paragraph + assertEquals("link: ", (p2.parts[0] as MarkdownPart.ParagraphPart.Text).text) + val link = p2.parts[1] as MarkdownPart.ParagraphPart.Link + assertEquals("www.nos.nl ", link.url) + assertEquals("NOS", link.label) + assertEquals("Nos title", link.title) + assertEquals(" of zo.\n\n", (p2.parts[2] as MarkdownPart.ParagraphPart.Text).text) + + val l1 = md[2] as MarkdownPart.UnorderedList + assertEquals(1, l1.lines.size) + assertEquals("link: [NU](www.nu.nl \"Nu site\") of zo.", l1.lines[0].text) } @Test @@ -31,7 +50,11 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(1, md.size) + val p = md[0] as MarkdownPart.Paragraph + val img = p.parts[0] as MarkdownPart.ParagraphPart.Image + assertEquals("test2", img.alt) + assertEquals("https://upload.wikimedia.org/wikipedia/commons.png", img.src) } @Test @@ -47,7 +70,10 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(3, md.size) + assertEquals("Dit is een text\n\n", (md[0] as MarkdownPart.Paragraph).parts[0].let { (it as MarkdownPart.ParagraphPart.Text).text }) + assertEquals("Code block\nCode block\n\n", (md[1] as MarkdownPart.CodeBlock).text) + assertEquals("Meer text\n\n", (md[2] as MarkdownPart.Paragraph).parts[0].let { (it as MarkdownPart.ParagraphPart.Text).text }) } @Test @@ -65,7 +91,12 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(3, md.size) + val list = md[1] as MarkdownPart.UnorderedList + assertEquals(2, list.lines.size) + assertEquals("First More text", list.lines[0].text) + assertEquals("Second More text", list.lines[1].text) + assertEquals("Another paragraph\n\n", (md[2] as MarkdownPart.Paragraph).parts[0].let { (it as MarkdownPart.ParagraphPart.Text).text }) } @Test @@ -81,7 +112,19 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(1, md.size) + val list = md[0] as MarkdownPart.UnorderedList + assertEquals(6, list.lines.size) + assertEquals("First", list.lines[0].text) + assertEquals(0, list.lines[0].indentation) + assertEquals("Second", list.lines[1].text) + assertEquals("2.1", list.lines[2].text) + assertEquals(2, list.lines[2].indentation) + assertEquals("2.1.1", list.lines[3].text) + assertEquals(4, list.lines[3].indentation) + assertEquals("2.1.1", list.lines[4].text) + assertEquals(6, list.lines[4].indentation) + assertEquals("3", list.lines[5].text) } @Test @@ -99,7 +142,11 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(3, md.size) + val list = md[1] as MarkdownPart.UnorderedList + assertEquals(2, list.lines.size) + assertEquals("First More text", list.lines[0].text) + assertEquals("Second More text", list.lines[1].text) } @Test @@ -119,7 +166,15 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(3, md.size) + val list = md[1] as MarkdownPart.UnorderedList + assertEquals(4, list.lines.size) + assertEquals("First More text", list.lines[0].text) + assertEquals("Second More text", list.lines[1].text) + assertEquals("Sub 1", list.lines[2].text) + assertEquals(2, list.lines[2].indentation) + assertEquals("Sub 2", list.lines[3].text) + assertEquals(2, list.lines[3].indentation) } @Test @@ -140,7 +195,12 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(3, md.size) + val list = md[1] as MarkdownPart.OrderedList + assertEquals(5, list.lines.size) + assertEquals(" First More text", list.lines[0].text) + assertEquals(" Sub 1", list.lines[2].text) + assertEquals(2, list.lines[2].indentation) } @Test @@ -158,7 +218,11 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(3, md.size) + val list = md[1] as MarkdownPart.OrderedList + assertEquals(2, list.lines.size) + assertEquals("First More text", list.lines[0].text) + assertEquals("Second More text", list.lines[1].text) } @Test @@ -177,7 +241,15 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(3, md.size) + val list = md[1] as MarkdownPart.CheckboxList + assertEquals(3, list.lines.size) + assertEquals(false, list.lines[0].checked) + assertEquals("Not checked, with some more text here", list.lines[0].text) + assertEquals(true, list.lines[1].checked) + assertEquals("Checked!", list.lines[1].text) + assertEquals(true, list.lines[2].checked) + assertEquals("Checked, text it!", list.lines[2].text) } @Test @@ -192,7 +264,12 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(2, md.size) + assertEquals("Todo", (md[0] as MarkdownPart.Header).text) + val list = md[1] as MarkdownPart.CheckboxList + assertEquals(2, list.lines.size) + assertEquals(false, list.lines[0].checked) + assertEquals(true, list.lines[1].checked) } @Test @@ -220,7 +297,11 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(5, md.size) + assertEquals(MarkdownPart.CheckboxList::class, md[1]::class) + assertEquals(MarkdownPart.CheckboxList::class, md[3]::class) + val list2 = md[3] as MarkdownPart.CheckboxList + assertEquals(2, list2.lines[0].indentation) } @Test @@ -247,7 +328,18 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(5, md.size) + val list1 = md[1] as MarkdownPart.CheckboxList + assertEquals(3, list1.lines.size) + assertEquals(0, list1.lines[0].indentation) + assertEquals(0, list1.lines[1].indentation) + assertEquals(2, list1.lines[2].indentation) + + val list2 = md[3] as MarkdownPart.CheckboxList + assertEquals(3, list2.lines.size) + assertEquals(2, list2.lines[0].indentation) + assertEquals(4, list2.lines[1].indentation) + assertEquals(2, list2.lines[2].indentation) } @@ -261,7 +353,11 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(2, md.size) + val list = md[1] as MarkdownPart.CheckboxList + assertEquals(2, list.lines.size) + assertEquals(false, list.lines[0].checked) + assertEquals(true, list.lines[1].checked) } @Test @@ -270,18 +366,12 @@ class ParseTest { val md = markdown(input) - printMarkdownParts(md) + assertEquals(2, md.size) + assertEquals("Markdown", (md[0] as MarkdownPart.Header).text) + assertEquals(1, (md[0] as MarkdownPart.Header).size) + val p = md[1] as MarkdownPart.Paragraph + assertEquals("My ", (p.parts[0] as MarkdownPart.ParagraphPart.Text).text) + assertEquals("markdown", (p.parts[1] as MarkdownPart.ParagraphPart.Bold).text) } - private fun printMarkdownParts(md: List) { - for (part in md) { - if (part is MarkdownPart.Paragraph) { - for (para in part.parts) { - println("PARA: ${para::class.simpleName} - ${para.toString().take(75)}") - } - } else { - println("PART: ${part::class.simpleName} - ${part.toString().take(75)}") - } - } - } }