Skip to content

Commit 02d44fd

Browse files
committed
add unit tests to cover various code paths in _updateMapTransform()
1 parent e661375 commit 02d44fd

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed

src/ui/handler/scroll_zoom.test.ts

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,58 @@ describe('ScrollZoomHandler', () => {
297297

298298
});
299299

300+
test('Zooms for single mouse wheel tick while in the center of the map, should zoom to center', () => {
301+
const browserNow = jest.spyOn(browser, 'now');
302+
let now = 1555555555555;
303+
browserNow.mockReturnValue(now);
304+
305+
const map = createMap();
306+
map._renderTaskQueue.run();
307+
expect(map.getCenter().lat).toBeCloseTo(0, 10);
308+
expect(map.getCenter().lng).toBeCloseTo(0, 10);
309+
310+
// simulate a single 'wheel' event
311+
simulate.wheel(map.getCanvas(), {type: 'wheel', deltaY: -simulate.magicWheelZoomDelta, clientX: 200, clientY: 150});
312+
map._renderTaskQueue.run();
313+
314+
now += 400;
315+
browserNow.mockReturnValue(now);
316+
map._renderTaskQueue.run();
317+
318+
expect(map.getCenter().lat).toBeCloseTo(0, 10);
319+
expect(map.getCenter().lng).toBeCloseTo(0, 10);
320+
expect(map.getZoom()).toBeCloseTo(0.028567106927402726, 10);
321+
322+
map.remove();
323+
});
324+
325+
test('Zooms for single mouse wheel tick while not in the center of the map, should zoom according to mouse position', () => {
326+
const browserNow = jest.spyOn(browser, 'now');
327+
let now = 1555555555555;
328+
browserNow.mockReturnValue(now);
329+
330+
const map = createMap();
331+
map._elevateCameraIfInsideTerrain = (_tr : any) => ({});
332+
map._renderTaskQueue.run();
333+
map.terrain = {
334+
pointCoordinate: () => null
335+
} as any;
336+
337+
// simulate a single 'wheel' event
338+
simulate.wheel(map.getCanvas(), {type: 'wheel', deltaY: -simulate.magicWheelZoomDelta, clientX: 1000, clientY: 1000});
339+
map._renderTaskQueue.run();
340+
341+
now += 400;
342+
browserNow.mockReturnValue(now);
343+
map._renderTaskQueue.run();
344+
345+
expect(map.getCenter().lat).toBeCloseTo(-11.6371, 3);
346+
expect(map.getCenter().lng).toBeCloseTo(11.0286, 3);
347+
expect(map.getZoom()).toBeCloseTo(0.028567106927402726, 10);
348+
349+
map.remove();
350+
});
351+
300352
test('Zooms for single mouse wheel tick while not in the center of the map and terrain is on, should zoom according to mouse position', () => {
301353
const browserNow = jest.spyOn(browser, 'now');
302354
let now = 1555555555555;

src/ui/map_tests/map_events.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -975,6 +975,30 @@ describe('map events', () => {
975975
expect(actualZoom).toBe(map.getZoom());
976976
});
977977

978+
test('drag from center', () => {
979+
const map = createMap({interactive: true, clickTolerance: 4});
980+
map.on('moveend', () => {
981+
expect(map.getCenter().lng).toBeCloseTo(0, 10);
982+
expect(map.getCenter().lat).toBeCloseTo(33.13755119234696, 10);
983+
expect(map.getCenterElevation()).toBeCloseTo(0, 10);
984+
});
985+
const canvas = map.getCanvas();
986+
simulate.dragWithMove(canvas, {x: 100, y: 100}, {x: 100, y: 150});
987+
map._renderTaskQueue.run();
988+
});
989+
990+
test('drag from off center', () => {
991+
const map = createMap({interactive: true, clickTolerance: 4});
992+
map.on('moveend', () => {
993+
expect(map.getCenter().lng).toBeCloseTo(0, 10);
994+
expect(map.getCenter().lat).toBeCloseTo(33.13755119234696, 10);
995+
expect(map.getCenterElevation()).toBeCloseTo(0, 10);
996+
});
997+
const canvas = map.getCanvas();
998+
simulate.dragWithMove(canvas, {x: 50, y: 50}, {x: 50, y: 100});
999+
map._renderTaskQueue.run();
1000+
});
1001+
9781002
describe('error event', () => {
9791003
test('logs errors to console when it has NO listeners', () => {
9801004
// to avoid seeing error in the console in Jest

0 commit comments

Comments
 (0)