import { assertEquals } from "testing/asserts.ts";
import { HtmlStrRenderer } from "../ren/html_str.ts";
import { MarkdownParser } from "./md.ts";
const ren = new HtmlStrRenderer();
Deno.test({
name: "should parse empty ATX header",
fn: () => {
const par = new MarkdownParser();
const res = par.parse("#");
assertEquals(ren.render(res), "
");
},
});
Deno.test({
name: "should parse ATX header with text",
fn: () => {
const par = new MarkdownParser();
assertEquals(ren.render(par.parse("# hello")), "hello
");
assertEquals(ren.render(par.parse("# hello#")), "hello#
");
},
});
Deno.test({
name: "should parse ATX header with specific level",
fn: () => {
const par = new MarkdownParser();
assertEquals(ren.render(par.parse("# hello")), "hello
");
assertEquals(ren.render(par.parse("## hello")), "hello
");
assertEquals(ren.render(par.parse("### hello")), "hello
");
assertEquals(ren.render(par.parse("#### hello")), "hello
");
assertEquals(ren.render(par.parse("##### hello")), "hello
");
assertEquals(ren.render(par.parse("###### hello")), "hello
");
},
});
Deno.test({
name: "should parse ATX header if line contains additional spaces",
fn: () => {
const par = new MarkdownParser();
assertEquals(ren.render(par.parse(" # hello")), "hello
");
assertEquals(ren.render(par.parse(" # hello")), "hello
");
assertEquals(ren.render(par.parse(" # hello")), "hello
");
},
});
Deno.test({
name: "should parse ATX header with closing sequence",
fn: () => {
const par = new MarkdownParser();
assertEquals(ren.render(par.parse("# #")), "");
assertEquals(ren.render(par.parse("# hello #")), "hello
");
assertEquals(ren.render(par.parse("# hello #########")), "hello
");
assertEquals(ren.render(par.parse("# hello # ")), "hello
");
assertEquals(ren.render(par.parse("###### hello #")), "hello
");
},
});