diff --git a/src/ui/handler/mouse_rotate.test.ts b/src/ui/handler/mouse_rotate.test.ts new file mode 100644 index 0000000000..8b9f9e7e16 --- /dev/null +++ b/src/ui/handler/mouse_rotate.test.ts @@ -0,0 +1,64 @@ +import {extend} from '../../util/util'; +import Map from '../../ui/map'; +import DOM from '../../util/dom'; +import simulate from '../../../test/util/simulate_interaction'; +import browser from '../../util/browser'; +import {setMatchMedia, setPerformance, setWebGlContext} from '../../util/test/util'; + +function createMap(options?) { + return new Map(extend({container: DOM.create('div', '', window.document.body)}, options)); +} + +beforeEach(() => { + setPerformance(); + setWebGlContext(); + setMatchMedia(); +}); + +describe('mouse rotate', () => { + test('MouseRotateHandler#isActive', () => { + const map = createMap(); + const mouseRotate = map.handlers._handlersById.mouseRotate; + + // Prevent inertial rotation. + jest.spyOn(browser, 'now').mockReturnValue(0); + expect(mouseRotate.isActive()).toBe(false); + + simulate.mousedown(map.getCanvas(), {buttons: 2, button: 2}); + map._renderTaskQueue.run(); + expect(mouseRotate.isActive()).toBe(false); + + simulate.mousemove(map.getCanvas(), {buttons: 2, clientX: 10, clientY: 10}); + map._renderTaskQueue.run(); + expect(mouseRotate.isActive()).toBe(true); + + simulate.mouseup(map.getCanvas(), {buttons: 0, button: 2}); + map._renderTaskQueue.run(); + expect(mouseRotate.isActive()).toBe(false); + + map.remove(); + }); + + test('MouseRotateHandler#isActive #4622 regression test', () => { + const map = createMap(); + const mouseRotate = map.handlers._handlersById.mouseRotate; + + // Prevent inertial rotation. + simulate.mousedown(map.getCanvas(), {buttons: 2, button: 2}); + map._renderTaskQueue.run(); + expect(mouseRotate.isActive()).toBe(false); + + simulate.mousemove(map.getCanvas(), {buttons: 2, clientX: 10, clientY: 10}); + map._renderTaskQueue.run(); + expect(mouseRotate.isActive()).toBe(true); + + // Some browsers don't fire mouseup when it happens outside the window. + // Make the handler in active when it encounters a mousemove without the button pressed. + + simulate.mousemove(map.getCanvas(), {buttons: 0, clientX: 10, clientY: 10}); + map._renderTaskQueue.run(); + expect(mouseRotate.isActive()).toBe(false); + + map.remove(); + }); +}); diff --git a/test/unit/ui/handler/mouse_rotate.test.js b/test/unit/ui/handler/mouse_rotate.test.js deleted file mode 100644 index ebf7964723..0000000000 --- a/test/unit/ui/handler/mouse_rotate.test.js +++ /dev/null @@ -1,59 +0,0 @@ -import '../../../stub_loader'; -import {test} from '../../../util/test'; -import {extend} from '../../../../rollup/build/tsc/src/util/util'; -import Map from '../../../../rollup/build/tsc/src/ui/map'; -import DOM from '../../../../rollup/build/tsc/src/util/dom'; -import simulate from '../../../util/simulate_interaction'; -import browser from '../../../../rollup/build/tsc/src/util/browser'; - -function createMap(options) { - return new Map(extend({container: DOM.create('div', '', window.document.body)}, options)); -} - -test('MouseRotateHandler#isActive', (t) => { - const map = createMap(); - const mouseRotate = map.handlers._handlersById.mouseRotate; - - // Prevent inertial rotation. - t.stub(browser, 'now').returns(0); - t.equal(mouseRotate.isActive(), false); - - simulate.mousedown(map.getCanvas(), {buttons: 2, button: 2}); - map._renderTaskQueue.run(); - t.equal(mouseRotate.isActive(), false); - - simulate.mousemove(map.getCanvas(), {buttons: 2, clientX: 10, clientY: 10}); - map._renderTaskQueue.run(); - t.equal(mouseRotate.isActive(), true); - - simulate.mouseup(map.getCanvas(), {buttons: 0, button: 2}); - map._renderTaskQueue.run(); - t.equal(mouseRotate.isActive(), false); - - map.remove(); - t.end(); -}); - -test('MouseRotateHandler#isActive #4622 regression test', (t) => { - const map = createMap(); - const mouseRotate = map.handlers._handlersById.mouseRotate; - - // Prevent inertial rotation. - simulate.mousedown(map.getCanvas(), {buttons: 2, button: 2}); - map._renderTaskQueue.run(); - t.equal(mouseRotate.isActive(), false); - - simulate.mousemove(map.getCanvas(), {buttons: 2, clientX: 10, clientY: 10}); - map._renderTaskQueue.run(); - t.equal(mouseRotate.isActive(), true); - - // Some browsers don't fire mouseup when it happens outside the window. - // Make the handler in active when it encounters a mousemove without the button pressed. - - simulate.mousemove(map.getCanvas(), {buttons: 0, clientX: 10, clientY: 10}); - map._renderTaskQueue.run(); - t.equal(mouseRotate.isActive(), false); - - map.remove(); - t.end(); -});