import test from "node:test";
import assert from "node:assert";
import {
parseXmlDeclaration,
decodeEntities,
parseXml,
} from "../lib/xml-parser.ts";
void test("parseXmlDeclaration", () => {
const buf = Buffer.from(
'\n',
);
const attrs = parseXmlDeclaration(buf);
assert.deepStrictEqual(attrs, [
{
name: "version",
namespace: "",
localName: "version",
value: "1.0",
},
{
name: "encoding",
namespace: "",
localName: "encoding",
value: "UTF-8",
},
]);
});
void test("decodeEntities", () => {
assert.strictEqual(
decodeEntities("&&<>"'>§;"),
"&&<>\"'>§𠮷;",
);
});
void test("parse", () => {
const xml =
'\ni';
const parsed = parseXml(xml);
assert.deepStrictEqual(parsed, {
name: "root",
namespace: "",
localName: "root",
attrs: "",
text: "",
bodyIndex: 0,
children: [
{
name: "a-b:c",
namespace: "a-b",
localName: "c",
attrs: "",
text: "",
bodyIndex: 29,
children: [
{
name: "d",
namespace: "",
localName: "d",
attrs: 'f="1"',
text: "",
bodyIndex: 42,
children: [],
},
{
name: "h",
namespace: "",
localName: "h",
attrs: "",
text: "i",
bodyIndex: 62,
children: [],
},
],
},
],
});
});