From d3731be6efd145694bceaea1820bf79fbb6207bf Mon Sep 17 00:00:00 2001 From: Horizontal42 <75383519+Horizontal42@users.noreply.github.com> Date: Sun, 9 Aug 2026 15:59:56 +0300 Subject: [PATCH] add missing evaluation error tests --- src/engine/engine.test.ts | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/engine/engine.test.ts b/src/engine/engine.test.ts index 90ea41d..29f15e1 100644 --- a/src/engine/engine.test.ts +++ b/src/engine/engine.test.ts @@ -1,8 +1,9 @@ import { describe, it, expect, beforeAll } from "vitest"; import { SumEngine } from "./index"; -import { qty } from "./types"; -import type { XRefResolution } from "./evaluator"; -import { formatValue } from "./index"; +import { qty, EvalError, XRefError } from "./types"; +import type { XRefResolution, EvalCtx } from "./evaluator"; +import { evaluate } from "./evaluator"; +import { formatValue } from "./formatter"; let eng: SumEngine; @@ -423,3 +424,24 @@ describe("cross-sheet references", () => { expect(r[0].assign).toBe("rent"); }); }); + +describe("evaluation errors", () => { + it("throws EvalError for unknown variable", () => { + const ctx = { + vars: new Map(), + reg: eng.reg, + historicalRates: {}, + } as unknown as EvalCtx; + expect(() => evaluate({ k: "var", name: "unknown" }, ctx)).toThrowError(EvalError); + }); + + it("throws XRefError for unresolved xref", () => { + const ctx = { + vars: new Map(), + reg: eng.reg, + historicalRates: {}, + resolveXRef: () => ({ ok: false, reason: "xref error" }), + } as unknown as EvalCtx; + expect(() => evaluate({ k: "xref", sheet: "Sheet", key: "key" }, ctx)).toThrowError(XRefError); + }); +});