mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-07 00:27:16 +08:00
- 实现配置架构解析器,支持JSON架构到递归树的转换 - 添加YAML解析器,支持根映射、嵌套对象和数组结构 - 集成配置验证诊断系统,提供架构和YAML内容校验 - 实现批量编辑器字段提取,支持标量类型安全更新 - 添加YAML注释提取功能,映射到逻辑字段路径 - 创建示例配置YAML生成功能,包含架构描述作为注释 - 实现表单更新应用到YAML功能,重写YAML树结构 - 添加标量兼容性检查,支持整数、数字、布尔值和字符串类型 - 实现精确十进制算术运算,用于multipleOf约束验证 - 添加模式匹配验证,支持正则表达式编译和测试 - 实现常量值比较功能,保持与运行时一致的比较格式 - 集成多语言本地化支持,提供中英文验证消息
96 lines
2.7 KiB
JavaScript
96 lines
2.7 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,
|
||
contains: {
|
||
type: "string",
|
||
constValue: "\"potion\"",
|
||
constDisplayValue: "\"potion\"",
|
||
refTable: "item"
|
||
}
|
||
},
|
||
localizer);
|
||
|
||
assert.deepEqual(lines, [
|
||
"Contains: string, Const: \"potion\", Ref table: item",
|
||
"Min contains: 2"
|
||
]);
|
||
});
|
||
|
||
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");
|
||
});
|