Files

39 lines
1.1 KiB
JavaScript

import assert from "node:assert/strict";
import { readFile } from "node:fs/promises";
const source = await readFile(new URL("../js/mce_transform.js", import.meta.url), "utf8");
const moduleUrl = `data:text/javascript;base64,${Buffer.from(source).toString("base64")}`;
const { applyCanvasTransform, screenDeltaToOffset } = await import(moduleUrl);
const calls = [];
const context = {
translate: (...args) => calls.push(["translate", ...args]),
scale: (...args) => calls.push(["scale", ...args]),
rotate: (...args) => calls.push(["rotate", ...args]),
};
const state = {
scale: 2,
rotation: 90,
flipH: true,
flipV: false,
offsetX: 100,
offsetY: -25,
};
applyCanvasTransform(context, state, 0.5, 320, 240);
assert.deepEqual(calls, [
["translate", 320, 240],
["scale", 0.5, 0.5],
["translate", 100, -25],
["rotate", Math.PI / 2],
["scale", 2, 2],
["scale", -1, 1],
]);
assert.deepEqual(screenDeltaToOffset(50, -20, 0.5), [100, -40]);
assert.deepEqual(screenDeltaToOffset(50, -20, 2), [25, -10]);
console.log("frontend transform contract: OK");