test(迁移): 批 B 波 1 G3 套2 资源身份面十条迁入 board_gen_reward_test.gd——剪切挂载绿(宿主累计 14 检查)+按条变异 10/10 验红全部红唯一(幂等两条用扰动副本形态、退役条两点变异已记账);smoke_all.gd 同批删函数

This commit is contained in:
DKChan committed 2026-10-23 02:00:41 +08:00
1 parent 7077a04d52
commit c84a05f5a2
3 files changed
+49 -47

No files matched your search

@@ -31,6 +31,7 @@ func _init() -> void:
_rng.set_master_seed(42)
# 套执行序沿源编排序
_smoke_layout_cell_formula()
_smoke_reward_identity_unit()
quit(Kit.finish("board_gen_reward_test"))
@@ -64,3 +65,50 @@ func _smoke_layout_cell_formula() -> void:
Kit.check("L%d 格边在 26–46 档内(%dpx)" % [L, int(cell)],
cell >= 26.0 and cell <= 46.0)
board_view.free()
# ---- 地图战斗资源·身份面单元冒烟(格面资源:roll 恰一次 / 雷安同池 / 幂等 / 清图批尾)----
func _smoke_reward_identity_unit() -> void:
print("--- 地图战斗资源·格面资源身份面 ---")
var rng = load("res://core/rng_service.gd").new()
rng.set_master_seed(20260911)
var reward_economy_factory = load("res://core/reward_economy.gd")
var reward_economy = reward_economy_factory.new(_db, rng)
var eligible: Array = []
for i in range(6):
eligible.append({"cell": Vector2i(i, 0)})
Kit.check("roll_board 受理", reward_economy.roll_board(eligible))
Kit.check("重复 roll_board 被拒(恰一次——double-roll 守卫)", not reward_economy.roll_board(eligible))
# 身份查询投影 = {reward_id, cell_type, tier};五型封闭
var types_ok := true
var types_seen := {}
for e in eligible:
var ident: Dictionary = reward_economy.query_identity(e.cell)
if not (ident.has("reward_id") and ident.has("cell_type") and ident.has("tier")):
types_ok = false
if not RewardTable.CELL_TYPES.has(String(ident.cell_type)):
types_ok = false
types_seen[String(ident.cell_type)] = true
Kit.check("query_identity 投影 = {reward_id, cell_type, tier} 且五型封闭(样本 %s)" % str(types_seen.keys()), types_ok)
# 清单外坐标 = null(E19——封锁格不入清单的同款出口)
Kit.check("清单外坐标查询 = null(封锁格无身份同口径)", reward_economy.query_identity(Vector2i(99, 99)) == null)
# 同格重复受理幂等:同一快照逐字段相同
var snap1: Dictionary = reward_economy.grant(eligible[0].cell)
var snap2: Dictionary = reward_economy.grant(eligible[0].cell)
Kit.check("同格重复 grant 幂等(同一快照——受理恰一次)", JSON.stringify(snap1) == JSON.stringify(snap2))
Kit.check("清单外 grant 拒绝", reward_economy.grant(Vector2i(99, 99)) == null)
# 清图批尾身份:clear_default 唯一活行 clear_blast(blast 型正向);重调幂等
var cs1: Dictionary = reward_economy.grant_clear()
var cs2: Dictionary = reward_economy.grant_clear()
Kit.check("清图批尾身份 = clear_blast(clear_default 唯一活行)", String(cs1.cell_type) == "blast" and String(cs1.reward_id) == "clear_blast")
var cb_range := [-1, -1]
for row in _db.reward.rows:
if String(row.reward_id) == "clear_blast":
cb_range = [int(row.get("power_min", row.power)), int(row.get("power_max", row.power))]
Kit.check("清图奖励 power ∈ 表区间 [%d, %d](roll 值 %d——配置推导)" % [cb_range[0], cb_range[1], int(cs1.power)],
int(cs1.power) >= int(cb_range[0]) and int(cs1.power) <= int(cb_range[1]))
Kit.check("grant_clear 同批次重调幂等", JSON.stringify(cs1) == JSON.stringify(cs2))
# 退役后受理拒绝
reward_economy.retire_mapping()
Kit.check("映射退役后 grant 拒绝(生命周期闭合)", reward_economy.grant(eligible[0].cell) == null)