From 6b36c760c61617e82f71b4e83278405640932192 Mon Sep 17 00:00:00 2001 From: Younkue Date: Fri, 12 Jan 2018 18:56:55 +0900 Subject: [PATCH] test(all): add test --- demo/assets/js/axes.js | 4 +- test/unit/inputType/MoveKeyInput.spec.js | 62 +++++++- test/unit/inputType/TestHelper.js | 5 + test/unit/inputType/WheelInput.spec.js | 182 +++++++++++++---------- 4 files changed, 169 insertions(+), 84 deletions(-) diff --git a/demo/assets/js/axes.js b/demo/assets/js/axes.js index 46eed0be..6058f572 100644 --- a/demo/assets/js/axes.js +++ b/demo/assets/js/axes.js @@ -176,11 +176,11 @@ $(function () { var pos = e.pos; var delta = e.delta; var holding = e.holding; - console.log(e); + if (delta.panX || delta.panY) { pan.textContent = `panX: ${(+pos.panX.toFixed(0))}, panY: ${(+pos.panY.toFixed(0))}`; - if (e.inputEvent && e.inputEvent.type === "keydown") { + if (e.inputEvent && (e.inputEvent.type === "keydown" || e.inputEvent.type === "keyup")) { pan.classList.add("keyboard"); } else { pan.classList.remove("keyboard"); diff --git a/test/unit/inputType/MoveKeyInput.spec.js b/test/unit/inputType/MoveKeyInput.spec.js index 98082a7b..e1b15811 100644 --- a/test/unit/inputType/MoveKeyInput.spec.js +++ b/test/unit/inputType/MoveKeyInput.spec.js @@ -25,6 +25,7 @@ describe("MoveKeyInput", () => { // Then expect(this.observer).to.be.not.exist; expect(this.inst.element).to.be.exist; + expect(this._timer).to.be.not.exist; }); it("should check status after destroy", () => { // Given @@ -36,7 +37,7 @@ describe("MoveKeyInput", () => { // Then expect(this.inst.element).to.be.not.exist; expect(this.observer).to.be.not.exist; - + expect(this._timer).to.be.not.exist; this.inst = null; }); }); @@ -255,6 +256,65 @@ describe("MoveKeyInput", () => { expect(deltaY).to.be.equal(1); }); }); + // down + [1, 2, 3, 4].forEach((keyCode, idx) => { + it("should not trigger 'change' event to down wrong keyCode("+keyCode+")", done => { + // Given + let changeTriggered = false; + let deltaY = 0; + const changeHandler = sinon.spy(); + const holdHandler = sinon.spy(); + const releaseHandler = sinon.spy(); + const downKeyCode = { + keyCode: keyCode + }; + + + this.inst.on("hold", holdHandler); + this.inst.on("change", changeHandler); + this.inst.on("release", releaseHandler); + + // When + TestHelper.key(this.el, "keydown", downKeyCode); + + // Then + expect(changeHandler.calledOnce).to.be.false; + expect(holdHandler.calledOnce).to.be.false; + setTimeout(() => { + TestHelper.key(this.el, "keyup", downKeyCode); + expect(releaseHandler.calledOnce).to.be.false; + done(); + }, 100); + }); + it("triggering order test to down wrong keyCode("+keyCode+")", (done) => { + // Given + const deltaY = 1; + const eventLog = []; + const eventLogAnswer = ["hold", "change", "release"]; + + this.inst + .on("hold", () => { + eventLog.push("hold"); + }).on("change", () => { + eventLog.push("change"); + }).on("release", () => { + eventLog.push("release"); + }); + + // When + TestHelper.key(this.el, "keydown", {keyCode: KEYMAP.DOWN_ARROW}, () => { + setTimeout(()=> { + TestHelper.key(this.el, "keyup", {keyCode: KEYMAP.keyCode}, () => { + setTimeout(()=> { + // Then + expect(eventLog).to.be.deep.equal(eventLogAnswer); + done(); + }, 100); + }); + }, 20); + }); + }); + }); }); }); diff --git a/test/unit/inputType/TestHelper.js b/test/unit/inputType/TestHelper.js index cc21fa31..7b78ef50 100644 --- a/test/unit/inputType/TestHelper.js +++ b/test/unit/inputType/TestHelper.js @@ -13,8 +13,13 @@ export default class TestHelper { wheelEvent = document.createEvent("WheelEvent"); wheelEvent.initEvent("wheel", params); } + let isCall = false; function callbackOnce() { + if (isCall) { + return; + } + isCall = true; callback && callback(); target.removeEventListener("wheel", callbackOnce);// Is this posible?? } diff --git a/test/unit/inputType/WheelInput.spec.js b/test/unit/inputType/WheelInput.spec.js index 2730477a..a9377d71 100644 --- a/test/unit/inputType/WheelInput.spec.js +++ b/test/unit/inputType/WheelInput.spec.js @@ -92,95 +92,115 @@ describe("WheelInput", () => { }); }); - describe("wheel event test", function() { - beforeEach(() => { - this.el = sandbox(); - this.input = new WheelInput(this.el); - this.inst = new Axes({ - x: { - range: [10, 120] - } - }); - this.inst.connect(["x"], this.input); - }); - - afterEach(() => { - if (this.ins) { - this.inst.destroy(); - this.inst = null; - } - if (this.input) { - this.input.destroy(); - this.input = null; - } - cleanup(); - }); - - it("no event triggering when disconnected", (done) => { - // Given - const deltaY = 1; - let changeTriggered = false; - - this.inst - .on("change", () => { - changeTriggered = true; - }); - this.inst.disconnect(); - - // When - TestHelper.wheelVertical(this.el, deltaY, () => { - // Then - expect(changeTriggered).to.be.false; - done(); - }); - }); + [1,2,4].forEach(function(scale) { + [true, false].forEach(function(useNormalized) { + describe(`wheel event test(useNormalized: ${useNormalized})`, function() { + beforeEach(() => { + this.el = sandbox(); + this.input = new WheelInput(this.el, {useNormalized: useNormalized, scale: scale}); + this.inst = new Axes({ + x: { + range: [10, 120] + } + }); + this.inst.connect(["x"], this.input); + }); + + afterEach(() => { + this.el = null; + if (this.inst) { + this.inst.destroy(); + this.inst = null; + } + if (this.input) { + this.input.destroy(); + this.input = null; + } + cleanup(); + }); + [-1,-3,-5,-9].forEach(d => { + it(`should check delta test (delta: ${d}, useNormalized: ${useNormalized})`, done => { + this.inst.on("change", ({pos, delta}) => { + if (delta.x === 0) { + return; + } + const sign = 1; + expect(delta.x).to.be.equals(scale * (useNormalized ? sign : (sign * Math.abs(d)))); + }); + this.inst.on("release", e => { + done(); + }); + TestHelper.wheelVertical(this.el, d, () => { - it("no event triggering when offset is 0", (done) => { - // Given - const deltaY = 0; - let changeTriggered = false; + }); + }); + }); + it("no event triggering when disconnected", (done) => { + // Given + const deltaY = 1; + let changeTriggered = false; + + this.inst + .on("change", () => { + changeTriggered = true; + }); + this.inst.disconnect(); - this.inst - .on("change", () => { - changeTriggered = true; - }); + // When + TestHelper.wheelVertical(this.el, deltaY, () => { + // Then + expect(changeTriggered).to.be.false; + done(); + }); + }); - // When - TestHelper.wheelVertical(this.el, deltaY, () => { - // Then - expect(changeTriggered).to.be.false; - done(); - }); - }); + it("no event triggering when offset is 0", (done) => { + // Given + const deltaY = 0; + let changeTriggered = false; - it("triggering order test", (done) => { - // Given - const deltaY = 1; - const eventLog = []; - const eventLogAnswer = ["hold", "change", "change", "release"]; - - this.inst - .on("hold", () => { - eventLog.push("hold"); - }).on("change", () => { - eventLog.push("change"); - }).on("release", () => { - eventLog.push("release"); - }); + this.inst + .on("change", () => { + changeTriggered = true; + }); - // When - TestHelper.wheelVertical(this.el, deltaY, () => { - setTimeout(()=> { + // When + TestHelper.wheelVertical(this.el, deltaY, () => { + // Then + expect(changeTriggered).to.be.false; + done(); + }); + }); + + it("triggering order test", (done) => { + // Given + const deltaY = 1; + const eventLog = []; + const eventLogAnswer = ["hold", "change", "change", "release"]; + + this.inst + .on("hold", () => { + eventLog.push("hold"); + }).on("change", () => { + eventLog.push("change"); + }).on("release", () => { + eventLog.push("release"); + }); + + // When TestHelper.wheelVertical(this.el, deltaY, () => { setTimeout(()=> { - // Then - expect(eventLog).to.be.deep.equal(eventLogAnswer); - done(); - }, 60); + TestHelper.wheelVertical(this.el, deltaY, () => { + setTimeout(()=> { + // Then + expect(eventLog).to.be.deep.equal(eventLogAnswer); + done(); + }, 60); + }); + }, 20); }); - }, 20); - }); + }); + }); }); }); }); -