Implement 40250 classic client port
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# guild_creation_ui_test —— GC_REQUEST_MAKE_GUILD -> 输入 -> CG_ANSWER_MAKE_GUILD。
|
||||
# godot --headless --path project --script guild_creation_ui_test.gd
|
||||
extends SceneTree
|
||||
|
||||
const GuildUI = preload("res://ui/guild_ui.gd")
|
||||
|
||||
class FakeClient extends Node:
|
||||
signal guild_make_requested()
|
||||
var calls: Array = []
|
||||
func guild_answer_make(name: String) -> bool:
|
||||
calls.append(name)
|
||||
return true
|
||||
|
||||
var _fail := 0
|
||||
func _ck(c: bool, m: String) -> void:
|
||||
if not c:
|
||||
_fail += 1
|
||||
printerr("FAIL: " + m)
|
||||
|
||||
func _init() -> void:
|
||||
# Window.popup_centered() requires the dialog to have entered the scene tree;
|
||||
# defer the UI assertions until the test root has finished attaching nodes.
|
||||
call_deferred("_run")
|
||||
|
||||
func _run() -> void:
|
||||
_run_checks()
|
||||
if _fail == 0:
|
||||
print("PASS: guild_creation_ui_test")
|
||||
quit(0)
|
||||
else:
|
||||
printerr("%d check(s) failed" % _fail)
|
||||
quit(1)
|
||||
|
||||
func _run_checks() -> void:
|
||||
var canvas := CanvasLayer.new()
|
||||
get_root().add_child(canvas)
|
||||
var fc := FakeClient.new()
|
||||
get_root().add_child(fc)
|
||||
var gu: Node = GuildUI.new()
|
||||
get_root().add_child(gu)
|
||||
gu.setup(fc, canvas)
|
||||
|
||||
# 服务端请求应弹出创建窗口,且只复用一个窗口。
|
||||
fc.guild_make_requested.emit()
|
||||
_ck(is_instance_valid(gu._create_dialog), "guild_make_requested -> 创建公会窗口")
|
||||
_ck(gu._create_name_edit.max_length == 12, "名称输入限制为 12 字")
|
||||
var first_dialog = gu._create_dialog
|
||||
fc.guild_make_requested.emit()
|
||||
_ck(gu._create_dialog == first_dialog, "重复请求复用窗口")
|
||||
|
||||
# 空名称和控制字符在发包前拦截,窗口保持可编辑。
|
||||
gu._create_name_edit.text = ""
|
||||
gu._on_guild_create_confirmed()
|
||||
_ck(fc.calls.is_empty(), "空名称不发应答")
|
||||
_ck(gu._create_status.text.contains("不能为空"), "空名称显示校验错误")
|
||||
gu._create_name_edit.text = "Guild\nName"
|
||||
gu._on_guild_create_confirmed()
|
||||
_ck(fc.calls.is_empty(), "控制字符名称不发应答")
|
||||
_ck(gu._create_status.text.contains("非法字符"), "非法字符显示校验错误")
|
||||
|
||||
# 合法名称回送 CG_ANSWER_MAKE_GUILD 并关闭窗口。
|
||||
gu._create_name_edit.text = "Knights"
|
||||
gu._on_guild_create_confirmed()
|
||||
_ck(fc.calls == ["Knights"], "合法名称 -> guild_answer_make")
|
||||
_ck(gu._create_dialog == null, "发送成功后关闭创建窗口")
|
||||
Reference in New Issue
Block a user