/
deka
/
buffer
Обзор
Документация
Войти
/
deka
/
buffer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
tests/converters/board-geometry.test.mjs
33 строки
2 KB
Maksim Ratnikov
feat: геометрия нативной доски, прямоугольники ячеек и преобразование пространств
05 авг 2026, 11:22
05 авг 2026, 11:22
0c1c4ab
Код
Авторство
О чём код?
import assert from "node:assert/strict"; import { tableCellRects, localToWorld, worldToLocal } from "../../src/converters/board-payload.js"; const ROW0 = 1361.9547665108976; const table = { x: -3062, y: -5554, w: 6273, rows: [ { cells: [{ id: "a", w: 459, h: ROW0 }, { id: "b", w: 5814, h: ROW0 }] }, { cells: [{ id: "c", w: 459, h: 1582.5 }, { id: "d", w: 5814, h: 1582.5 }] } ] }; const rects = tableCellRects(table); assert.deepEqual(rects.get("a"), { x: 0, y: 0, w: 459, h: ROW0 }, "первая ячейка в начале координат таблицы"); assert.deepEqual(rects.get("b"), { x: 459, y: 0, w: 5814, h: ROW0 }, "вторая колонка смещена на ширину первой"); assert.equal(rects.get("c").y, ROW0, "вторая строка смещена на высоту первой"); // Реальные числа из выгрузки: таблица x=-3062, правая колонка +459, ребёнок внутри ячейки x=95. const origin = { x: table.x + rects.get("b").x, y: table.y + rects.get("b").y }; assert.deepEqual(localToWorld({ x: 95, y: 163 }, origin), { x: -2508, y: -5391 }, "локальные координаты ребёнка разворачиваются в мировые один раз, а не дважды"); const point = { x: 95, y: 163 }; assert.deepEqual(worldToLocal(localToWorld(point, origin), origin), point, "worldToLocal обращает localToWorld на отрицательном origin"); const deep = { x: table.x + rects.get("d").x, y: table.y + rects.get("d").y }; assert.deepEqual(worldToLocal(localToWorld(point, deep), deep), point, "то же на второй строке, где origin смещён дробной высотой"); assert.deepEqual(tableCellRects({ rows: [] }), new Map(), "таблица без строк даёт пустую карту"); console.log("board-geometry tests passed");