优化语音输入/普通文本输入
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { DEFAULT_DESCRIPTOR, cloneDescriptor, parseInstruction } from "./parser-engine.js";
|
||||
|
||||
const successCases = [
|
||||
["开启车载冰箱", "refrigerator.set_power", { state: "on" }],
|
||||
["把冰箱温度调到4度", "refrigerator.set_temperature", { temperature_c: 4 }],
|
||||
["将冷藏箱设为速冷模式", "refrigerator.set_mode", { mode: "fast_cool" }],
|
||||
["关闭冰箱", "refrigerator.set_power", { state: "off" }],
|
||||
];
|
||||
|
||||
for (const [utterance, capability, parameters] of successCases) {
|
||||
const result = parseInstruction(utterance, DEFAULT_DESCRIPTOR);
|
||||
assert.equal(result.semantic_status, "recognized_executable", utterance);
|
||||
assert.equal(result.execution_eligible, true, utterance);
|
||||
assert.equal(result.command.capability, capability, utterance);
|
||||
assert.deepEqual(result.command.parameters, parameters, utterance);
|
||||
assert.equal(result.command.executor_payload.demo_only, true, utterance);
|
||||
}
|
||||
|
||||
const outOfRange = parseInstruction("把冰箱调到零下10度", DEFAULT_DESCRIPTOR);
|
||||
assert.equal(outOfRange.semantic_status, "recognized_unsupported");
|
||||
assert.equal(outOfRange.execution_eligible, false);
|
||||
assert.match(outOfRange.issues.join(" "), /低于下限/);
|
||||
|
||||
const noDevice = parseInstruction("把空调调到4度", DEFAULT_DESCRIPTOR);
|
||||
assert.equal(noDevice.semantic_status, "no_command");
|
||||
assert.equal(noDevice.execution_eligible, false);
|
||||
|
||||
const disabled = cloneDescriptor();
|
||||
disabled.capabilities.find((item) => item.id === "refrigerator.set_temperature").enabled = false;
|
||||
const disabledResult = parseInstruction("把冰箱温度调到4度", disabled);
|
||||
assert.equal(disabledResult.semantic_status, "incomplete");
|
||||
|
||||
console.log(`device capability card demo: ${successCases.length + 3} parser checks passed`);
|
||||
Reference in New Issue
Block a user