45 lines
2.4 KiB
GDScript
45 lines
2.4 KiB
GDScript
# tests/unit/presentation/battle_narrator_test.gd — 战斗叙述直接单测
|
|
# 断言面 = 纯函数文案:休整/商店/终局三类叙述把数值带进去(玩家读数面由这里出)、
|
|
# 胜负两态文案互异、未知输入有兜底不吐空串。期望值由注入内容数出来。
|
|
# 运行:godot --headless --path game --script res://tests/unit/presentation/battle_narrator_test.gd
|
|
extends SceneTree
|
|
|
|
const Kit := preload("res://tests/unit/test_kit.gd")
|
|
const NarratorScript := preload("res://presentation/battle_narrator.gd")
|
|
|
|
|
|
func _init() -> void:
|
|
_test_numeric_lines_carry_values()
|
|
_test_end_text_differs_by_result()
|
|
_test_phase_text_nonempty()
|
|
quit(Kit.finish("battle_narrator_test"))
|
|
|
|
|
|
func _test_numeric_lines_carry_values() -> void:
|
|
var rest: String = NarratorScript.rest_line(12, 30, 40)
|
|
Kit.check("休整叙述带入回复量与当前血量(实际「%s」)" % rest,
|
|
rest.contains("12") and rest.contains("30") and rest.contains("40"))
|
|
var shop: String = NarratorScript.shop_line(77)
|
|
Kit.check("商店叙述带入 GP 数(实际「%s」)" % shop, shop.contains("77"))
|
|
Kit.check("奖励行与休整行互异(不是同一句套所有场景)",
|
|
NarratorScript.reward_line() != rest)
|
|
|
|
|
|
func _test_end_text_differs_by_result() -> void:
|
|
# 关卡收束(level_end=true)恒为「关卡通关!」——单场胜负文案只在非收束态出现
|
|
var level: String = NarratorScript.battle_end_text("lose", true)
|
|
Kit.check("关卡收束态恒为「关卡通关!」(实际「%s」)" % level, level == "关卡通关!")
|
|
var win: String = NarratorScript.battle_end_text("victory", false)
|
|
var lose: String = NarratorScript.battle_end_text("lose", false)
|
|
Kit.check("单场胜负文案互异(胜「%s」/负「%s」)" % [win, lose], win != lose)
|
|
Kit.check("胜利文案非空(实际「%s」)" % win, win != "")
|
|
var unknown: String = NarratorScript.battle_end_text("something_else", false)
|
|
Kit.check("未知结果有兜底文案不吐空串(实际「%s」)" % unknown, unknown != "")
|
|
|
|
|
|
func _test_phase_text_nonempty() -> void:
|
|
var t: String = NarratorScript.phase_text(1, "", false, false, "")
|
|
Kit.check("相位叙述非空(实际「%s」)" % t, t != "")
|
|
var boss: String = NarratorScript.phase_text(2, "", false, true, "灰矮人石君王")
|
|
Kit.check("Boss 在场时叙述带入 Boss 名(实际「%s」)" % boss, boss.contains("灰矮人石君王"))
|