const { test } = require("node:test") const assert = require("node:assert/strict") const { convertHeadingToHTMLFragment, getMarkdownHeadings, getMarkdownIdOrAnchorNameFragments, isValidIntegerString, getNumberOfLines, getLineNumberStringFromFragment, } = require("../src/utils.js") test("utils", async (t) => { await t.test("convertHeadingToHTMLFragment", async () => { assert.strictEqual( convertHeadingToHTMLFragment("Valid Fragments"), "#valid-fragments", ) assert.strictEqual( convertHeadingToHTMLFragment("Valid Heading With Underscores _"), "#valid-heading-with-underscores-_", ) assert.strictEqual( convertHeadingToHTMLFragment( `Valid Heading With Quotes ' And Double Quotes "`, ), "#valid-heading-with-quotes--and-double-quotes-", ) assert.strictEqual( convertHeadingToHTMLFragment("🚀 Valid Heading With Emoji"), "#-valid-heading-with-emoji", ) }) await t.test("getMarkdownHeadings", async () => { assert.deepStrictEqual( getMarkdownHeadings("# Hello\n\n## World\n\n## Hello, world!\n"), ["Hello", "World", "Hello, world!"], ) }) await t.test("getMarkdownIdOrAnchorNameFragments", async () => { assert.deepStrictEqual( getMarkdownIdOrAnchorNameFragments( 'Link', ), ["#anchorId"], ) assert.deepStrictEqual( getMarkdownIdOrAnchorNameFragments('Link'), ["#anchorName"], ) assert.deepStrictEqual( getMarkdownIdOrAnchorNameFragments("Link"), [], ) assert.deepStrictEqual(getMarkdownIdOrAnchorNameFragments(""), []) assert.deepStrictEqual(getMarkdownIdOrAnchorNameFragments(""), []) }) await t.test("isValidIntegerString", async () => { assert.strictEqual(isValidIntegerString("1"), true) assert.strictEqual(isValidIntegerString("45"), true) assert.strictEqual(isValidIntegerString("1abc"), false) assert.strictEqual(isValidIntegerString("1.0"), false) }) await t.test("getNumberOfLines", async () => { assert.strictEqual(getNumberOfLines(""), 1) assert.strictEqual(getNumberOfLines("Hello"), 1) assert.strictEqual(getNumberOfLines("Hello\nWorld"), 2) assert.strictEqual(getNumberOfLines("Hello\nWorld\n"), 3) assert.strictEqual(getNumberOfLines("Hello\nWorld\n\n"), 4) }) await t.test("getLineNumberStringFromFragment", async () => { assert.strictEqual(getLineNumberStringFromFragment("#L50"), "50") }) })