vonargo/mosAIc
1
1// test/resize.test.js — the span math (pure). The corner gesture is DOM, verified in-browser.2import { test } from 'node:test';3import assert from 'node:assert/strict';4import { resolveSpan, nextSpan, spanFromDrag } from '../js/resize.js';5 6test('resolveSpan: explicit span ≥1 wins (a resize to 1 sticks); junk/absent → 1', () => {7 assert.equal(resolveSpan({ span: 2 }), 2);8 assert.equal(resolveSpan({ span: 1 }), 1);9 assert.equal(resolveSpan({ span: 3.4 }), 3);10 assert.equal(resolveSpan({}), 1);11 assert.equal(resolveSpan({ span: 0 }), 1);12 assert.equal(resolveSpan({ span: 'x' }), 1);13 assert.equal(resolveSpan(null), 1);14});15 16test('nextSpan toggles 1↔2', () => {17 assert.equal(nextSpan(1), 2);18 assert.equal(nextSpan(2), 1);19 assert.equal(nextSpan(3), 2);20});21 22test('spanFromDrag: start + columns travelled, clamped [1, maxSpan]; colW ≤ 0 → no change', () => {23 assert.equal(spanFromDrag(1, 260, 250, 3), 2);24 assert.equal(spanFromDrag(1, 900, 250, 3), 3); // clamped to grid width25 assert.equal(spanFromDrag(2, -260, 250, 3), 1);26 assert.equal(spanFromDrag(2, -900, 250, 3), 1); // floor 127 assert.equal(spanFromDrag(2, 100, 0, 3), 2); // no geometry → no change28});29 