Files

34 lines
1.2 KiB
TypeScript

import { describe, expect, test } from "bun:test"
import { generate, mutate, normalizeHtml, patchmark, referenceCore, referenceGfm, rng } from "./fuzz"
import { isKnownGfmDivergence } from "./fuzz-known"
describe("differential fuzzing against commonmark 0.31.2 and micromark-gfm", () => {
test("zero core CommonMark diffs across 5,000 seeded generated + spec-mutated cases", () => {
const r = rng(0xc0ffeed0)
for (let i = 0; i < 5_000; i++) {
const md = i % 2 === 0 ? generate(r, false) : mutate(r)
const got = patchmark(md, false)
const want = referenceCore(md)
if (got !== want) {
expect({ case: i, md, got }).toEqual({ case: i, md, got: want })
}
}
})
test("zero unexplained GFM diffs across 2,000 seeded generated + spec-mutated cases", () => {
const r = rng(0xdecafbad)
for (let i = 0; i < 2_000; i++) {
const md = i % 2 === 0 ? generate(r, true) : mutate(r)
const got = normalizeHtml(patchmark(md, true))
const want = normalizeHtml(referenceGfm(md))
if (got !== want && !isKnownGfmDivergence(md, got, want)) {
expect({ case: i, md, got }).toEqual({ case: i, md, got: want })
}
}
})
})