diff --git a/packages/merman/src/core/canvas.test.ts b/packages/merman/src/core/canvas.test.ts index 59b343d32c6..2b1030d6050 100644 --- a/packages/merman/src/core/canvas.test.ts +++ b/packages/merman/src/core/canvas.test.ts @@ -4,7 +4,7 @@ import { DiagramCanvas, DiagramCanvasSizeError, type DiagramCanvasCell } from ". describe("DiagramCanvas", () => { test("rejects canvases that exceed the rendering budget", () => { - expect(() => new DiagramCanvas(2_000, 1_000)).toThrow(DiagramCanvasSizeError) + expect(() => new DiagramCanvas(1_000, 251)).toThrow(DiagramCanvasSizeError) }) test("rejects invalid canvas dimensions", () => { @@ -38,6 +38,12 @@ describe("DiagramCanvas", () => { expect(stringWidth(canvas.toString())).toBe(4) }) + test("does not emit partial wide graphemes", () => { + const clipped = new DiagramCanvas<"label">(1, 1) + clipped.setText(0, 0, "界", "label") + expect(clipped.toString()).toBe("") + }) + test("keeps custom measurement for ASCII text", () => { let measurements = 0 const canvas = new DiagramCanvas<"label">(5, 1, { diff --git a/packages/merman/src/core/canvas.ts b/packages/merman/src/core/canvas.ts index 4b6b4c013a6..d932d928cd0 100644 --- a/packages/merman/src/core/canvas.ts +++ b/packages/merman/src/core/canvas.ts @@ -40,7 +40,7 @@ export interface DiagramCanvasRunOptions