spb/autoscholar
Public
1import { describe, expect, it } from "vitest";2import { citeKeysInTex, parseBib } from "./bib.js";3import { texContainsNumber } from "./gates.js";45describe("bib + cite parsing", () => {6 it("parses entries and cite keys", () => {7 const bib = `@article{smith2020, title={A {Nested} Title}, doi={10.1/abc}, year=2020}\n@book{doe2019,\n title = "B", url = {https://x}\n}`;8 const e = parseBib(bib);9 expect(e.map((x) => x.key)).toEqual(["smith2020", "doe2019"]);10 expect(e[0]?.fields.doi).toBe("10.1/abc");11 expect(citeKeysInTex("see \\citep{smith2020, doe2019} and \\textcite[p.~3]{smith2020}").sort()).toEqual([12 "doe2019",13 "smith2020",14 ]);15 });16});1718describe("reported value tracing", () => {19 it("matches numbers tolerant of formatting", () => {20 expect(texContainsNumber("R^2 = 0.4300 and n = 1{,}234", 0.43)).toBe(true);21 expect(texContainsNumber("n = 1,234 observations", 1234)).toBe(true);22 expect(texContainsNumber("the coefficient is $-0.12$", "-0.12")).toBe(true);23 expect(texContainsNumber("value 12.5", 2.5)).toBe(false);24 expect(texContainsNumber("nothing here", 99)).toBe(false);25 });26});27