summaryrefslogtreecommitdiff
path: root/src/test/kotlin
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-03-24 15:54:19 +0100
committerLinnea Gräf <nea@nea.moe>2024-03-24 15:54:19 +0100
commit4c0ac30dc82677b2b2db36d114b452fdea537a37 (patch)
treed29b45e396fab55ac119298143f4b7abb2cc9c8d /src/test/kotlin
parentbe66c61d729fe642e3dd3ed2214990f9f2273c5e (diff)
downloadblog-infra-4c0ac30dc82677b2b2db36d114b452fdea537a37.tar.gz
blog-infra-4c0ac30dc82677b2b2db36d114b452fdea537a37.tar.bz2
blog-infra-4c0ac30dc82677b2b2db36d114b452fdea537a37.zip
Add italics parsing unit tests
Diffstat (limited to 'src/test/kotlin')
-rw-r--r--src/test/kotlin/moe/nea/blog/md/test/TestItalics.kt64
1 files changed, 64 insertions, 0 deletions
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("<b><i>both</i> just bold</b>", "***both* just bold**")
+ }
+
+ @Test
+ fun testDoubleStartBoldInItalics() {
+ assertInlineFormat("<i><b>both</b> just italics</i>", "***both** just italics*")
+ }
+
+ @Test
+ fun testDoubleStartRestartingItalics() {
+ assertInlineFormat(
+ "<i><b>both</b> just italics <b>both again</b></i>",
+ "***both** just italics **both again***"
+ )
+ }
+
+ @Test
+ fun testStandaloneBold() {
+ assertInlineFormat("<b>bold</b>", "**bold**")
+ }
+
+ @Test
+ fun testStandaloneItalics() {
+ assertInlineFormat("<i>italic</i>", "*italic*")
+ }
+
+ @Test
+ fun testInline() {
+ assertInlineFormat("left <i>italics</i> middle <b>bold</b> right", "left *italics* middle **bold** right")
+ }
+
+ @Test
+ fun testNested() {
+ assertInlineFormat("<i>a <b>bold</b> b</i>", "*a **bold** b*")
+ assertInlineFormat("<i>a <i>double italics</i></i>", "*a *double italics**")
+ }
+
+} \ No newline at end of file