| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- const { JSDOM } = require('jsdom');
- describe('MG.geom utilities', () => {
- beforeAll(() => {
- // préparer un window global minimal
- const dom = new JSDOM(`<!doctype html><html><body></body></html>`);
- global.window = dom.window;
- global.document = dom.window.document;
- global.window.MG = global.window.MG || {};
- // injecter l'implémentation à tester depuis le fichier source
- const geomSrc = require('fs').readFileSync(require('path').resolve(__dirname, '../../public/assets/js/core/geom.js'), 'utf8');
- // exécuter le code pour qu'il attache window.MG.geom
- const fn = new Function('window', 'document', geomSrc + '\n return window.MG.geom;');
- const geom = fn(global.window, global.document);
- global.window.MG.geom = geom;
- });
- test('axialToPixel returns expected values for simple coords', () => {
- const size = 10;
- const p00 = global.window.MG.geom.axialToPixel(size, 0, 0);
- expect(p00.x).toBeCloseTo(0);
- expect(p00.y).toBeCloseTo(0);
- const p10 = global.window.MG.geom.axialToPixel(size, 1, 0);
- expect(p10.x).toBeGreaterThan(0);
- expect(p10.y).toBeCloseTo(0);
- const p01 = global.window.MG.geom.axialToPixel(size, 0, 1);
- expect(p01.y).toBeGreaterThan(0);
- });
- test('computeZoom clamps values', () => {
- expect(global.window.MG.geom.computeZoom(1, 10)).toBeLessThanOrEqual(5);
- expect(global.window.MG.geom.computeZoom(0.01, 0.01)).toBeGreaterThanOrEqual(0.1);
- });
- test('computePanOffset adds deltas', () => {
- const off = { x: 5, y: 7 };
- const r = global.window.MG.geom.computePanOffset(off, 3, -2);
- expect(r.x).toBe(8);
- expect(r.y).toBe(5);
- });
- });
|