ring-sizer / tests /test_measurement_session.js
feng-x's picture
Upload folder using huggingface_hub
9f6a8e2 verified
Raw
History Blame Contribute Delete
1.62 kB
const assert = require("node:assert/strict");
const fs = require("node:fs");
const test = require("node:test");
const vm = require("node:vm");
const source = fs.readFileSync(
"web_demo/static/shared/measurement-session.js",
"utf8",
);
function loadHelper() {
const data = new Map();
let idCounter = 0;
const window = {
crypto: { randomUUID: () => `00000000-0000-4000-8000-${String(++idCounter).padStart(12, "0")}` },
sessionStorage: {
getItem: (key) => data.has(key) ? data.get(key) : null,
setItem: (key, value) => data.set(key, value),
},
};
vm.runInNewContext(source, { window, Date, JSON, Math, Number, String });
return window.MeasurementSession;
}
test("preserves returned state for an unchanged context", () => {
const helper = loadHelper();
const context = {
kol_email: "User@Example.com ", ring_model: "gen", mode: "multi",
finger_index: "index", source: "photo",
};
const first = helper.prepare(context);
const state = { session_id: first.session_id, attempt_count: 1, shots: [] };
helper.accept(context, { session_state: state });
assert.deepEqual(helper.prepare(context).session_state, state);
});
test("rotates the session when measurement context changes", () => {
const helper = loadHelper();
const base = {
kol_email: "user@example.com", ring_model: "gen", mode: "multi",
finger_index: "index", source: "photo",
};
const first = helper.prepare(base);
const second = helper.prepare({ ...base, ring_model: "air" });
assert.notEqual(second.session_id, first.session_id);
assert.equal(second.session_state, null);
});