GFramework/tools/gframework-config-tool/test/containsSummary.test.js
gewuyou e671646a74 fix(ai-first-config): 收口 PR 306 审查遗留项
- 新增 Generator 与 Tooling 的 anyOf 和坏形状回归覆盖,补齐组合关键字与未知 type 拒绝

- 修复 VS Code 配置工具的 object-array 直属项收集与 contains 文案一致性问题

- 更新 README、Game 文档与工具说明,明确 additionalProperties 显式 false 边界与最小接入路径

- 补充 ai-plan 跟踪与 trace,记录 PR 306 open threads 收口结果和验证摘要
2026-04-30 15:22:04 +08:00

119 lines
3.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const test = require("node:test");
const assert = require("node:assert/strict");
const {buildContainsHintLines, describeContainsSchema} = require("../src/containsSummary");
const {createLocalizer} = require("../src/localization");
test("describeContainsSchema should reuse localized Chinese hint strings", () => {
const localizer = createLocalizer("zh-cn");
const summary = describeContainsSchema(
{
type: "string",
constValue: "\"potion\"",
constDisplayValue: "\"potion\"",
refTable: "item"
},
localizer);
assert.equal(summary, "string, 固定值:\"potion\", 引用表item");
});
test("describeContainsSchema should fall back to localized item label", () => {
const localizer = createLocalizer("en");
const summary = describeContainsSchema({}, localizer);
assert.equal(summary, "Item");
});
test("buildContainsHintLines should include default minContains when schema omits it", () => {
const localizer = createLocalizer("en");
const lines = buildContainsHintLines(
{
contains: {
type: "integer",
constValue: "5",
constDisplayValue: "5"
}
},
localizer);
assert.deepEqual(lines, [
"Contains: integer, Const: 5",
"Min contains: 1"
]);
});
test("buildContainsHintLines should use explicit minContains when provided", () => {
const localizer = createLocalizer("en");
const lines = buildContainsHintLines(
{
minContains: 2,
maxContains: 3,
contains: {
type: "string",
constValue: "\"potion\"",
constDisplayValue: "\"potion\"",
refTable: "item"
}
},
localizer);
assert.deepEqual(lines, [
"Contains: string, Const: \"potion\", Ref table: item",
"Min contains: 2",
"Max contains: 3"
]);
});
test("describeContainsSchema should format enum-based contains schema in English", () => {
const localizer = createLocalizer("en");
const summary = describeContainsSchema(
{
type: "string",
enumValues: ["potion", "elixir"],
refTable: "item"
},
localizer);
assert.equal(summary, "string, Allowed: potion, elixir, Ref table: item");
});
test("describeContainsSchema should format pattern-based contains schema in Chinese", () => {
const localizer = createLocalizer("zh-cn");
const summary = describeContainsSchema(
{
type: "string",
pattern: "^potion-",
refTable: "item"
},
localizer);
assert.equal(summary, "string, 正则模式:^potion-, 引用表item");
});
test("buildContainsHintLines should use updated Chinese contains hint wording", () => {
const localizer = createLocalizer("zh-cn");
const lines = buildContainsHintLines(
{
minContains: 1,
maxContains: 2,
contains: {
type: "string",
enumValues: ["potion", "elixir"]
}
},
localizer);
assert.deepEqual(lines, [
"contains 条件string, 允许值potion, elixir",
"最少匹配数1",
"最多匹配数2"
]);
});