import lib fn test_escape(): Unit with {Test} = { Test.assertEqualMsg("<b>hello</b>", lib.escape("hello"), "escape angle brackets") Test.assertEqualMsg("a & b", lib.escape("a & b"), "escape ampersand") Test.assertEqualMsg(""quoted"", lib.escape("\"quoted\""), "escape quotes") } fn test_text_node(): Unit with {Test} = { Test.assertEqualMsg("hello", lib.render(lib.text("hello")), "text node simple") Test.assertEqualMsg("<b>", lib.render(lib.text("")), "text node escaped") } fn test_cdata(): Unit with {Test} = { Test.assertEqualMsg("world]]>", lib.render(lib.cdata("hello world")), "cdata node") } fn test_raw(): Unit with {Test} = { Test.assertEqualMsg("
", lib.render(lib.raw("
")), "raw node") } fn test_text_element(): Unit with {Test} = { Test.assertEqualMsg("Hello", lib.render(lib.textEl("title", "Hello")), "text element") } fn test_element_with_attrs(): Unit with {Test} = { let linkEl = lib.element("link", [lib.attr("href", "http://example.com"), lib.attr("rel", "alternate")], []) Test.assertEqualMsg("", lib.render(linkEl), "element with attrs self-closing") } fn test_self_closing(): Unit with {Test} = { Test.assertEqualMsg("
", lib.render(lib.selfClosing("br", [])), "self-closing no attrs") Test.assertEqualMsg("", lib.render(lib.selfClosing("img", [lib.attr("src", "photo.jpg")])), "self-closing with attr") } fn test_nested_elements(): Unit with {Test} = { let nested = lib.el("root", [lib.textEl("child1", "a"), lib.textEl("child2", "b")]) Test.assertEqualMsg("ab", lib.render(nested), "nested elements") } fn test_element_with_attrs_and_children(): Unit with {Test} = { let withAttr = lib.element("item", [lib.attr("id", "1")], [lib.textEl("name", "Test")]) Test.assertEqualMsg("Test", lib.render(withAttr), "element with attrs and children") } fn test_text_element_with_attrs(): Unit with {Test} = { let attrText = lib.textElAttr("a", [lib.attr("href", "/page")], "Click") Test.assertEqualMsg("Click", lib.render(attrText), "text element with attrs") } fn test_xml_document(): Unit with {Test} = { let doc = lib.document(lib.textEl("root", "content")) let expected = "\ncontent" Test.assertEqualMsg(expected, doc, "xml document") } fn test_deeply_nested(): Unit with {Test} = { let deep = lib.el("a", [lib.el("b", [lib.el("c", [lib.text("deep")])])]) Test.assertEqualMsg("deep", lib.render(deep), "deeply nested") } fn test_empty_element(): Unit with {Test} = { Test.assertEqualMsg("", lib.render(lib.el("empty", [])), "el empty children self-closes") } fn test_attribute_value_escaping(): Unit with {Test} = { let escapedAttr = lib.selfClosing("div", [lib.attr("data", "a&b", lib.render(escapedAttr), "attribute value escaping") } fn test_mixed_children(): Unit with {Test} = { let mixed = lib.el("p", [lib.text("Hello "), lib.raw("world")]) Test.assertEqualMsg("

Hello world

", lib.render(mixed), "mixed text and raw children") }