完善客户端功能并同步差距文档
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# app_flow_lifecycle_test —— §9.3 生命周期单一属主回归。
|
||||
# AppFlow 跨登录 / 选人 / 游戏持有唯一 AppLifecycle;GameScene 不重复创建。
|
||||
extends SceneTree
|
||||
|
||||
const AppFlow = preload("res://app_flow.gd")
|
||||
|
||||
class FakeClient extends Node:
|
||||
signal phase_changed(phase: String)
|
||||
signal disconnected(reason: String)
|
||||
signal char_list(characters: Array)
|
||||
signal char_name_changed(pid: int, name: String)
|
||||
signal entered_game()
|
||||
signal login_failed(reason: String)
|
||||
signal char_created(slot: int)
|
||||
signal char_create_failed(reason: int)
|
||||
signal char_deleted(slot: int)
|
||||
signal char_delete_failed()
|
||||
|
||||
var _fail := 0
|
||||
|
||||
func _ck(ok: bool, message: String) -> void:
|
||||
if not ok:
|
||||
_fail += 1
|
||||
printerr("FAIL: " + message)
|
||||
|
||||
func _init() -> void:
|
||||
var client := FakeClient.new()
|
||||
var flow := AppFlow.new()
|
||||
flow.build_game_scene = false
|
||||
get_root().add_child(flow)
|
||||
flow.start("", client)
|
||||
await process_frame
|
||||
|
||||
var lifecycle_nodes: Array[Node] = []
|
||||
for child in flow.get_children():
|
||||
if child.name == "AppLifecycle":
|
||||
lifecycle_nodes.append(child)
|
||||
_ck(lifecycle_nodes.size() == 1, "AppFlow owns exactly one AppLifecycle")
|
||||
_ck(flow.get_node_or_null("AppLifecycle") != null,
|
||||
"AppLifecycle survives login screen construction")
|
||||
_ck(client.get_parent() == flow,
|
||||
"AppFlow keeps the same client beside lifecycle coordinator")
|
||||
|
||||
flow.queue_free()
|
||||
await process_frame
|
||||
if _fail == 0:
|
||||
print("PASS: app_flow_lifecycle_test (single lifecycle owner)")
|
||||
quit(0)
|
||||
else:
|
||||
printerr("%d check(s) failed" % _fail)
|
||||
quit(1)
|
||||
Reference in New Issue
Block a user