From 4c0ac30dc82677b2b2db36d114b452fdea537a37 Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Sun, 24 Mar 2024 15:54:19 +0100 Subject: Add italics parsing unit tests --- .../kotlin/moe/nea/blog/md/test/TestItalics.kt | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/test/kotlin/moe/nea/blog/md/test/TestItalics.kt (limited to 'src/test/kotlin/moe/nea') diff --git a/src/test/kotlin/moe/nea/blog/md/test/TestItalics.kt b/src/test/kotlin/moe/nea/blog/md/test/TestItalics.kt new file mode 100644 index 0000000..b4b102a --- /dev/null +++ b/src/test/kotlin/moe/nea/blog/md/test/TestItalics.kt @@ -0,0 +1,64 @@ +package moe.nea.blog.md.test + +import moe.nea.blog.md.MarkdownFormat +import moe.nea.blog.md.MarkdownParser +import java.io.ByteArrayOutputStream +import java.io.PrintStream +import kotlin.test.Test +import kotlin.test.assertEquals + +class TestItalics { + + fun parseInline(string: String): MarkdownFormat { + val parser = MarkdownParser(string) + parser.addDefaultParsers() + return parser.parseInlineText(string) + } + + fun assertInlineFormat(expected: String, source: String) { + val format = parseInline(source) + val baos = ByteArrayOutputStream() + format.debugFormat(PrintStream(baos)) + assertEquals(expected, baos.toByteArray().decodeToString()) + } + + @Test + fun testDoubleStartItalicsInBold() { + assertInlineFormat("both just bold", "***both* just bold**") + } + + @Test + fun testDoubleStartBoldInItalics() { + assertInlineFormat("both just italics", "***both** just italics*") + } + + @Test + fun testDoubleStartRestartingItalics() { + assertInlineFormat( + "both just italics both again", + "***both** just italics **both again***" + ) + } + + @Test + fun testStandaloneBold() { + assertInlineFormat("bold", "**bold**") + } + + @Test + fun testStandaloneItalics() { + assertInlineFormat("italic", "*italic*") + } + + @Test + fun testInline() { + assertInlineFormat("left italics middle bold right", "left *italics* middle **bold** right") + } + + @Test + fun testNested() { + assertInlineFormat("a bold b", "*a **bold** b*") + assertInlineFormat("a double italics", "*a *double italics**") + } + +} \ No newline at end of file -- cgit