50 lines
2.1 KiB
JavaScript
50 lines
2.1 KiB
JavaScript
const assert = require("node:assert/strict");
|
|
const fs = require("node:fs");
|
|
const path = require("node:path");
|
|
const vm = require("node:vm");
|
|
|
|
const source = fs.readFileSync(path.resolve(__dirname,
|
|
"../../quickshell/.config/quickshell/labfy-sway/status/ScrollSteps.js"), "utf8");
|
|
const context = {};
|
|
vm.createContext(context);
|
|
vm.runInContext(source, context);
|
|
const advance = context.advance;
|
|
const empty = () => ({ remainder: 0, source: "" });
|
|
|
|
let state = empty();
|
|
for (const part of [3, 4, 5, 7, 8]) state = advance(state, part, 0, false, 2, false);
|
|
assert.equal(state.steps, 0);
|
|
state = advance(state, 5, 120, false, 2, false);
|
|
assert.equal(state.steps, 1); // pixelDelta a priorité, sans compter angleDelta.
|
|
assert.equal(state.remainder, 0);
|
|
|
|
state = advance(empty(), 0, 120, false, 0, false);
|
|
assert.equal(state.steps, 1); // Un cran de souris = un point.
|
|
state = advance(empty(), 0, -240, false, 0, false);
|
|
assert.equal(state.steps, -2);
|
|
state = advance(empty(), -32, 0, false, 2, true);
|
|
assert.equal(state.steps, 1); // Deltas ASUS normalisés : geste haut = hausse.
|
|
state = advance(empty(), 32, 0, false, 2, true);
|
|
assert.equal(state.steps, -1); // Geste bas = baisse.
|
|
state = advance(empty(), 32, 0, true, 2, true);
|
|
assert.equal(state.steps, 1); // inverted est traité une seule fois.
|
|
state = advance(empty(), 0, -120, false, 0, true);
|
|
assert.equal(state.steps, 1); // Touchpad à delta angulaire seul.
|
|
|
|
state = advance({ remainder: 20, source: "pixel" }, -16, 0, false, 2, false);
|
|
assert.equal(state.steps, 0);
|
|
assert.equal(state.remainder, -16); // Direction inversée : ancien reliquat abandonné.
|
|
state = advance({ remainder: 20, source: "pixel" }, 0, 120, false, 0, false);
|
|
assert.equal(state.steps, 1); // Changement de source : reliquat incomparable abandonné.
|
|
state = advance({ remainder: 20, source: "pixel" }, 0, 0, false, 3, false);
|
|
assert.equal(state.remainder, 0); // Fin de geste.
|
|
|
|
state = empty();
|
|
let total = 0;
|
|
for (let i = 0; i < 320; i++) {
|
|
state = advance(state, 1, 0, false, 2, false);
|
|
total += state.steps;
|
|
}
|
|
assert.equal(total, 10);
|
|
assert.equal(state.remainder, 0); // Dix points réguliers, sans accélération.
|
|
console.log("ScrollSteps: PASS");
|