Prepare production smart scale Android app
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import assert from "node:assert/strict";
|
||||
import test from "node:test";
|
||||
|
||||
import {
|
||||
createFileTimestamp,
|
||||
evaluateStability,
|
||||
formatWeight,
|
||||
parseScaleMessage,
|
||||
} from "../app/scale-utils.ts";
|
||||
|
||||
test("电子秤消息统一转换为千克", () => {
|
||||
assert.equal(parseScaleMessage("2.49"), 2.49);
|
||||
assert.equal(parseScaleMessage('{"weight":2490,"unit":"g"}'), 2.49);
|
||||
assert.equal(parseScaleMessage('{"weightKg":2.49}'), 2.49);
|
||||
assert.ok(Math.abs(parseScaleMessage('{"value":2.20462262,"unit":"lb"}') - 1) < 1e-9);
|
||||
});
|
||||
|
||||
test("电子秤消息拒绝非法数据", () => {
|
||||
assert.equal(parseScaleMessage(""), null);
|
||||
assert.equal(parseScaleMessage("-1"), null);
|
||||
assert.equal(parseScaleMessage('{"weight":"abc"}'), null);
|
||||
assert.equal(parseScaleMessage('{"weight":1,"unit":"oz"}'), null);
|
||||
});
|
||||
|
||||
test("连续相同读数可完成稳定判断", () => {
|
||||
assert.deepEqual(evaluateStability([2.49, 2.49, 2.49, 2.49, 2.49]), {
|
||||
stable: false,
|
||||
progress: 70,
|
||||
});
|
||||
assert.deepEqual(evaluateStability([2.49, 2.49, 2.49, 2.49, 2.49, 2.49]), {
|
||||
stable: true,
|
||||
progress: 100,
|
||||
});
|
||||
assert.equal(evaluateStability([2.4, 2.5, 2.42, 2.51, 2.43, 2.5]).stable, false);
|
||||
});
|
||||
|
||||
test("重量格式和文件时间戳符合终端规范", () => {
|
||||
assert.equal(formatWeight(2.486, "kg"), "2.49");
|
||||
assert.equal(formatWeight(2.486, "g"), "2486.00");
|
||||
assert.equal(formatWeight(Number.NaN, "kg"), "0.00");
|
||||
|
||||
const localTime = new Date(2026, 6, 28, 16, 9, 5).toISOString();
|
||||
assert.equal(createFileTimestamp(localTime), "20260728160905");
|
||||
});
|
||||
Reference in New Issue
Block a user