- Timestamp:
- 08/12/2026 10:00:38 PM (3 months ago)
- Parents:
- 5b6f93b
- File:
-
- 1 edited
-
test/ward-sky.test.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
test/ward-sky.test.js
r5b6f93b r3866994 9 9 import assert from 'node:assert/strict'; 10 10 11 const { orbitPlacement, nearestFace } = await import('../src/assets/js/ward-sky.js');11 const { orbitPlacement, nearestFace, SkyRenderer } = await import('../src/assets/js/ward-sky.js'); 12 12 13 13 const r = (s) => Math.hypot(s.x, s.y); … … 68 68 assert.equal(at(1.5), 1); 69 69 }); 70 71 test('zoomen houdt het punt onder je vingers op zijn plek', () => { 72 // De kern van pinch-to-zoom: de wereld onder het midden tussen je vingers 73 // mag NIET wegschuiven. We rekenen _zoomAround na zonder een echt canvas, 74 // door de renderer een minimale staat te geven. 75 // We hebben geen DOM, dus bouwen een kaal object met alleen wat _zoomAround 76 // aanraakt en lenen de methode. 77 const fake = { w: 400, h: 400, scale: 1, panX: 0, panY: 0, 78 _clampScale: SkyRenderer.prototype._clampScale }; 79 const zoom = SkyRenderer.prototype._zoomAround; 80 81 // Welk wereldpunt ligt nu onder (px,py)? 82 const worldUnder = (o, px, py) => ({ 83 x: (px - o.w / 2 - o.panX) / o.scale, 84 y: (py - o.h / 2 - o.panY) / o.scale, 85 }); 86 const px = 300, py = 120; 87 const before = worldUnder(fake, px, py); 88 zoom.call(fake, px, py, 1.6); // inzoomen om dat punt 89 const after = worldUnder(fake, px, py); 90 91 assert.ok(Math.abs(before.x - after.x) < 1e-6, 'x schoof weg onder de vingers'); 92 assert.ok(Math.abs(before.y - after.y) < 1e-6, 'y schoof weg onder de vingers'); 93 assert.ok(fake.scale > 1, 'er is niet ingezoomd'); 94 }); 95 96 test('de zoom blijft binnen zijn grenzen', () => { 97 const clamp = SkyRenderer.prototype._clampScale; 98 assert.equal(clamp(10), 2.5); // niet eindeloos in 99 assert.equal(clamp(0.01), 0.2); // niet eindeloos uit 100 });
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)