Files
gplan-2/game/tests/unit/presentation/palette_token_pairwise_test.gd
T
DKChan 85abe37cf5 美术圣经去数值化批(用户裁 2026-11-07 两准则: 有落点补指针/无落点建脚本承载): art-bible v3.43→v3.44 全文定值剥离——头注定值单点纪律(数量面唯一事实源=执行件, 例外=WCAG 标准引用名与数据索引)+§8 头注两张表制退役+§4.1 主色板全 hex 清零(语义岗句+ui_kit 指针)+§4.2 五组微光/呈现参数/禁入带+§2 能量档改八拍序(数字退役)+世界底层两子带区间数值迁执行件+§3.2 封印/高墙 px 群+§6.1/6.2 舞台与营地坐标群+§6.5 迷雾定值群+§7.2/7.4/7.6 UI token/字号/控件态+§8.1/8.2/8.4 档位与帧数+换色合并沿革压缩归 git 史+六对欠账迁出; 执行件三件落地——glow_discrimination_sheet 增机检 E 门(世界底层两子带: 背景侧上沿+结构间隔, 地板侧归 tile_palette 归一化目标 0.10 渲染面, --no-sheet 全绿 exit=0)+新套件 animation_frame_spec_test(帧数档 4/6/2 规格表落码+现役单帧形制锚定, 经 UiKit.load_tex 装载链)+新套件 palette_token_pairwise_test(ui_kit Color 常量面两两互查, 存量 36 对在册豁免账含〔欠账〕四对, 账外零新增); run_all manifest 65→86 全量单元位次不变+能力清单帧数行入册+互查套件挂主题行; oracle 锚注记换代六件(seal/type_glow/standee/theme_projection/terrain/ui_contrast_probe——定值面=本测试措辞); art-pipeline-tools 升格执行件门值登记面(14 行定值落点索引)+边界句换代; 下游复写换代七件(术语表/08-Alpha/camp/battle/character-design/两清单); 待办清单去数值化条目推进文档设计已闭合+欠账条目新立。凭据: 圣经 hex 字面量 0+七触碰套件单跑 all green(exit=0)+熵增闸 PASS(--docs 内)+流水线闸 PASS(34 条目)+能力审计红 0(110 行·86 套·链断 0)+doc_term 零命中(销账/随批/收口/若干四词自清扫)+--docs 域闸【验收通过】exit=0
2026-11-07 04:31:39 +08:00

102 lines
5.3 KiB
GDScript
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.
# tests/unit/presentation/palette_token_pairwise_test.gd — 语义/UI token 板两两互查守门
# 断言面:ui_kit 全部 Color 常量两两 RGB 三通道差禁止全部 <8/255(色板增量纪律第二道门的存量面;
# 文档侧只述纪律并指路本测试,数值门=本件 NEAR_EPS);六对已登记欠账走豁免账(清偿批逐对销账,
# 债务登记=待办清单「色板近色欠账六对清偿」条;新增欠账禁直入本账,须走待办清单修订)。
# 豁免账中两对伙伴色(3e3731/3e4048/3f4147)为迷雾合成底素材侧色——不在 ui_kit 常量面,
# 其清偿随素材批处理;本测试扫常量面,素材侧对子由互辨抽测件近色读数承载。
# 运行:godot --headless --path game --script res://tests/unit/presentation/palette_token_pairwise_test.gd
extends SceneTree
const Kit := preload("res://tests/unit/test_kit.gd")
const UI_KIT_PATH := "res://presentation/views/ui_kit.gd"
const NEAR_EPS := 8
# 存量近色关系在册账(键=两色 hex 升序拼接,值=性质标签)。账面=常量面全量现状的机器真值;
# 闸只拦「账外新增」。标「欠账」四对=art-bible 原六对债的常量面部分(清偿批销账);
# 另两对(3e362c3e3731/3e40483f4147)伙伴为迷雾合成底素材侧色,不在常量面,随素材批清偿。
# 同一键可覆盖多名对(同值别名与其伙伴构成的同 hex 对)。
const EXEMPT_LEDGER := {
"140f0d18120c": "深墨族(DIM↔DIM_NIGHT)",
"140f0d181410": "深墨族(DIM↔INK_ROUTE)",
"18120c181410": "深墨族(DIM_NIGHT↔INK_ROUTE)〔欠账〕",
"18120c1e1812": "深墨族(DIM_NIGHT↔FOG_OUTLINE)",
"291f172e2218": "暗底族(INK_LABEL↔TIP_BG)",
"2820182e2218": "暗底族(CAMP_BADGE_PANEL↔INK_LABEL)",
"282018291f17": "暗底族(CAMP_BADGE_PANEL↔TIP_BG)",
"33261b342a20": "墨族近结构件(E_FACADE_FOOT_COL↔INK)",
"33261b362b20": "墨族近屏底(INK↔BG_OVERLAY)〔欠账〕",
"342a20362b20": "结构件暗棕近屏底(E_FACADE_FOOT_COL↔BG_OVERLAY)",
"342a203a2e22": "结构件暗棕近屏底(E_FACADE_FOOT_COL↔BG_ROOT)",
"362b203a2e22": "屏底双件(BG_OVERLAY↔BG_ROOT)〔欠账〕",
"3a3a3a403a34": "暗板族(DARK_UPCOMING↔FOG_MEMORY_PLATE)",
"4537234a3b2a": "暖亮底双件(BG_BRIGHT↔BG_MAP_TOP)〔欠账〕",
"4a3b2a4a3e30": "同域暗棕(BG_MAP_TOP↔HINT_STRIP_EDGE)",
"6e45266e4526": "α 派生别名(CAMP_HEADER_BAND↔CAMP_HUD_BAND,非色板新增)",
"786e58786e58": "文档别名(DOT_OFF↔PANEL_BORDER——兼熄灭点阵)",
"1a17141e1812": "深墨族(FOG_OUTLINE↔ICON_TINT_ON_GOLD)",
"1814101a1714": "深墨族(ICON_TINT_ON_GOLD↔INK_ROUTE)",
"1a17141e1a16": "深墨族(ICON_TINT_ON_GOLD↔INK_TITLE)",
"1814101e1812": "深墨族(FOG_OUTLINE↔INK_ROUTE)",
"1e18121e1a16": "深墨族(FOG_OUTLINE↔INK_TITLE)",
"1814101e1a16": "深墨族(INK_ROUTE↔INK_TITLE)",
"1a1a1c1e1a16": "深墨族(HP_BAR_TRACK↔INK_TITLE)",
"2e221833261b": "墨族(INK↔INK_LABEL)",
"c9b88ecdb88c": "暖米族(MAP_VDIV↔WARM_FAINT)",
"e0b860e6be5a": "金族亮档双件(GOLD_BRIGHT↔GOLD_LIT)",
"f0e2c8f0e2c8": "同值别名(INK_L_WARM↔WARM)",
"f0e2c8f0e4c8": "暖米板族(INK_L_WARM/MAP_BAR_PLATE/WARM 同 hex 双名对)",
"f0e2c8f0e6ce": "暖米板族(CAMP_ROW_PLATE↔INK_L_WARM/WARM 同 hex 双名对)",
"f0e4c8f0e6ce": "暖米板族(CAMP_ROW_PLATE↔MAP_BAR_PLATE)",
"f0e6cef5ead3": "暖米板族(CAMP_ROW_PLATE↔DIGIT_PLATE)",
"f0e8d6f5ead3": "暖纸板族(DIGIT_PLATE↔TOAST_BG)",
"f5ead3f6eeda": "暖纸板族(DIGIT_PLATE↔INK_ON_DEEP)",
"f0e8d6f6eeda": "暖纸板族(INK_ON_DEEP↔TOAST_BG)",
"f8e2a8f8e3a8": "同族亮金墨(INK_L_GOLD↔RAP_DOT_CORE_WARM)",
}
func _init() -> void:
# oracle: design/art/art-bible.md:220 (色板增量纪律条——存量两两互查组)
_test_pairwise()
quit(Kit.finish("palette_token_pairwise_test"))
func _token_colors() -> Dictionary:
var script: Script = load(UI_KIT_PATH)
var cmap: Dictionary = script.get_script_constant_map()
var out: Dictionary = {}
for name: String in cmap:
if cmap[name] is Color:
out[name] = cmap[name]
return out
func _hex(c: Color) -> String:
return "%02x%02x%02x" % [c.r8, c.g8, c.b8]
# 存量两两互查:豁免账外零近色对(扫描面>0 前置防静默绿)
func _test_pairwise() -> void:
# oracle: design/art/art-bible.md:220 (色板增量纪律条——存量两两互查组)
var tokens := _token_colors()
Kit.check("token 面非空(扫描面>0)〔token互查 V1〕", tokens.size() >= 40)
var names: Array = tokens.keys()
names.sort()
var bad: Array = []
for i in range(names.size()):
for j in range(i + 1, names.size()):
var a: Color = tokens[names[i]]
var b: Color = tokens[names[j]]
if absi(a.r8 - b.r8) < NEAR_EPS and absi(a.g8 - b.g8) < NEAR_EPS \
and absi(a.b8 - b.b8) < NEAR_EPS:
var pair: Array = [_hex(a), _hex(b)]
pair.sort()
var key: String = pair[0] + pair[1]
if not EXEMPT_LEDGER.has(key):
bad.append("%s↔%s(%s)" % [names[i], names[j], key])
Kit.check("豁免账外零新增近色对〔token互查 V2〕", bad.is_empty())
if not bad.is_empty():
for item: String in bad:
print(" [近色对] ", item)