mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-07 00:39:00 +08:00
- 新增 Generator 与 Tooling 的 anyOf 和坏形状回归覆盖,补齐组合关键字与未知 type 拒绝 - 修复 VS Code 配置工具的 object-array 直属项收集与 contains 文案一致性问题 - 更新 README、Game 文档与工具说明,明确 additionalProperties 显式 false 边界与最小接入路径 - 补充 ai-plan 跟踪与 trace,记录 PR 306 open threads 收口结果和验证摘要
119 lines
3.3 KiB
JavaScript
119 lines
3.3 KiB
JavaScript
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"
|
||
]);
|
||
});
|