Files
pkgs.lux/packages/markdown/test_markdown.lux
Brandon Lucas cbb66fbb73 Add frontmatter, markdown, path, xml, rss, and web packages
Sync local packages into the registry repo and update index.json
and README.md to include all 9 packages.
2026-02-24 21:04:20 -05:00

65 lines
3.4 KiB
Plaintext

import lib
fn test_escape_html(): Unit with {Test} = {
Test.assertEqualMsg("&lt;div&gt;", lib.escapeHtml("<div>"), "angle brackets")
Test.assertEqualMsg("a &amp; b", lib.escapeHtml("a & b"), "ampersand")
Test.assertEqualMsg("hello", lib.escapeHtml("hello"), "no special chars")
}
fn test_inline_formatting(): Unit with {Test} = {
Test.assertEqualMsg("<strong>bold</strong>", lib.inlineToHtml("**bold**"), "bold")
Test.assertEqualMsg("<em>italic</em>", lib.inlineToHtml("*italic*"), "italic with asterisk")
Test.assertEqualMsg("<em>italic</em>", lib.inlineToHtml("_italic_"), "italic with underscore")
Test.assertEqualMsg("<code>code</code>", lib.inlineToHtml("`code`"), "inline code")
Test.assertEqualMsg("<del>strike</del>", lib.inlineToHtml("~~strike~~"), "strikethrough")
Test.assertEqualMsg("plain text", lib.inlineToHtml("plain text"), "plain text unchanged")
}
fn test_links(): Unit with {Test} = {
Test.assertEqualMsg("<a href=\"https://example.com\">click</a>", lib.inlineToHtml("[click](https://example.com)"), "link")
Test.assertEqualMsg("<img src=\"img.png\" alt=\"alt\">", lib.inlineToHtml("![alt](img.png)"), "image")
Test.assertEqualMsg("<strong><a href=\"url\">bold link</a></strong>", lib.inlineToHtml("**[bold link](url)**"), "bold link")
}
fn test_headings(): Unit with {Test} = {
Test.assertEqualMsg("<h1>Hello</h1>\n", lib.toHtml("# Hello"), "h1")
Test.assertEqualMsg("<h2>World</h2>\n", lib.toHtml("## World"), "h2")
Test.assertEqualMsg("<h3>Sub</h3>\n", lib.toHtml("### Sub"), "h3")
Test.assertEqualMsg("<h4>Deep</h4>\n", lib.toHtml("#### Deep"), "h4")
}
fn test_paragraphs(): Unit with {Test} = {
Test.assertEqualMsg("<p>hello world</p>\n", lib.toHtml("hello world"), "single line paragraph")
}
fn test_code_blocks(): Unit with {Test} = {
let result = lib.toHtml("```\nhello\n```")
Test.assertEqualMsg("<pre><code>hello\n</code></pre>\n", result, "simple code block")
}
fn test_lists(): Unit with {Test} = {
Test.assertEqualMsg("<ul>\n<li>item one</li>\n<li>item two</li>\n</ul>\n", lib.toHtml("- item one\n- item two"), "unordered list")
Test.assertEqualMsg("<ol>\n<li>first</li>\n<li>second</li>\n</ol>\n", lib.toHtml("1. first\n2. second"), "ordered list")
}
fn test_heading_in_list(): Unit with {Test} = {
Test.assertEqualMsg("<ul>\n<li><h3>Title</h3></li>\n</ul>\n", lib.toHtml("- ### Title"), "h3 inside list item")
Test.assertEqualMsg("<ul>\n<li><h2>Big Title</h2></li>\n</ul>\n", lib.toHtml("- ## Big Title"), "h2 inside list item")
Test.assertEqualMsg("<ul>\n<li><h3><a href=\"/url\">Link</a></h3></li>\n</ul>\n", lib.toHtml("- ### [Link](/url)"), "h3 with link inside list item")
}
fn test_blockquotes(): Unit with {Test} = {
Test.assertEqualMsg("<blockquote>\n<p>quoted text</p>\n</blockquote>\n", lib.toHtml("> quoted text"), "simple blockquote")
}
fn test_horizontal_rule(): Unit with {Test} = {
Test.assertEqualMsg("<hr>\n", lib.toHtml("---"), "hr with dashes")
Test.assertEqualMsg("<hr>\n", lib.toHtml("***"), "hr with asterisks")
Test.assertEqualMsg("<hr>\n", lib.toHtml("___"), "hr with underscores")
}
fn test_html_passthrough(): Unit with {Test} = {
Test.assertEqualMsg("<div class=\"foo\">bar</div>\n", lib.toHtml("<div class=\"foo\">bar</div>"), "html element passes through")
Test.assertEqualMsg("<picture>\n<source srcset=\"img.avif\">\n</picture>\n", lib.toHtml("<picture>\n<source srcset=\"img.avif\">\n</picture>"), "multi-line html passthrough")
}