import { describe, expect, it } from 'vitest'; import { fixedPageSize, placePage } from '../../src/ui/pageSize'; const size = (search: string) => fixedPageSize(new URLSearchParams(search)); describe('fixedPageSize', () => { it('reads ?w=&h=', () => { expect(size('?w=1920&h=1080')).toEqual({ w: 1920, h: 1080 }); expect(size('?project=abc&h=720&w=1280')).toEqual({ w: 1280, h: 720 }); }); it('needs both sides as whole numbers', () => { expect(size('')).toBeNull(); expect(size('?w=1920')).toBeNull(); expect(size('?w=1920&h=')).toBeNull(); expect(size('?w=1920&h=10.5')).toBeNull(); expect(size('?w=-5&h=1080')).toBeNull(); expect(size('?w=abc&h=1080')).toBeNull(); }); it('clamps a side to 200…8192', () => { expect(size('?w=50&h=100000')).toEqual({ w: 200, h: 8192 }); }); }); describe('placePage', () => { it('centres a canvas smaller than the window at full size', () => { expect(placePage({ w: 1920, h: 1080 }, { w: 2560, h: 1440 })).toEqual({ x: 320, y: 180, scale: 1 }); }); it('shrinks a canvas larger than the window to fit, keeping its aspect', () => { expect(placePage({ w: 1920, h: 1080 }, { w: 960, h: 900 })).toEqual({ x: 0, y: 180, scale: 0.5 }); }); });