GFramework/tools/gframework-config-tool/test/containsSummary.test.js
GeWuYou 19088fed03 feat(config): 添加配置验证功能模块
- 实现配置架构解析器,支持JSON架构到递归树的转换
- 添加YAML解析器,支持根映射、嵌套对象和数组结构
- 集成配置验证诊断系统,提供架构和YAML内容校验
- 实现批量编辑器字段提取,支持标量类型安全更新
- 添加YAML注释提取功能,映射到逻辑字段路径
- 创建示例配置YAML生成功能,包含架构描述作为注释
- 实现表单更新应用到YAML功能,重写YAML树结构
- 添加标量兼容性检查,支持整数、数字、布尔值和字符串类型
- 实现精确十进制算术运算,用于multipleOf约束验证
- 添加模式匹配验证,支持正则表达式编译和测试
- 实现常量值比较功能,保持与运行时一致的比较格式
- 集成多语言本地化支持,提供中英文验证消息
2026-04-10 20:30:04 +08:00

96 lines
2.7 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,
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");
});