创建新工程

This commit is contained in:
moyin
2025-12-05 19:00:14 +08:00
commit ff4fa5fffd
227 changed files with 32804 additions and 0 deletions

114
tests/test_input_handler.gd Normal file
View File

@@ -0,0 +1,114 @@
extends Node
## 输入处理器测试
## Feature: godot-ai-town-game, Property 17: 设备类型检测
const TEST_ITERATIONS = 100
func _ready():
print("\n=== InputHandler Tests ===")
test_property_device_detection()
test_keyboard_input()
test_input_signals()
print("=== All InputHandler tests completed ===\n")
## Feature: godot-ai-town-game, Property 17: 设备类型检测
func test_property_device_detection():
"""
属性测试:设备类型检测
对于任意设备类型(桌面或移动),系统应该正确检测设备类型
并应用相应的控制方案(键盘或触摸)
"""
print("\n[Property Test] Device Type Detection")
var passed = 0
var failed = 0
for i in range(TEST_ITERATIONS):
var input_handler = InputHandler.new()
add_child(input_handler)
await get_tree().process_frame
# 获取检测到的设备类型
var device_type = input_handler.get_device_type()
# 验证设备类型是有效的
var valid_device = device_type in [
InputHandler.DeviceType.DESKTOP,
InputHandler.DeviceType.MOBILE,
InputHandler.DeviceType.UNKNOWN
]
if valid_device:
passed += 1
else:
failed += 1
print(" FAILED iteration ", i + 1)
print(" Invalid device type: ", device_type)
input_handler.queue_free()
await get_tree().process_frame
print(" Result: ", passed, "/", TEST_ITERATIONS, " passed")
if failed > 0:
print(" ❌ FAILED: ", failed, " iterations failed")
else:
print(" ✅ PASSED: All iterations successful")
## Feature: godot-ai-town-game, Property 11: 键盘输入响应
func test_keyboard_input():
"""
单元测试:键盘输入响应
测试键盘输入是否正确转换为方向向量
"""
print("\n[Unit Test] Keyboard Input Response")
var input_handler = InputHandler.new()
add_child(input_handler)
await get_tree().process_frame
# 测试获取移动方向(在没有实际按键的情况下应该返回零向量)
var direction = input_handler.get_move_direction()
assert(direction == Vector2.ZERO, "Direction should be zero when no input")
# 测试交互键(应该返回 false
var interact = input_handler.is_interact_pressed()
assert(interact == false, "Interact should be false when not pressed")
print(" ✅ PASSED: Keyboard input methods work correctly")
input_handler.queue_free()
await get_tree().process_frame
## 测试输入信号
func test_input_signals():
"""
单元测试:输入信号
测试输入处理器是否正确发射信号
"""
print("\n[Unit Test] Input Signals")
var signal_data = {
"move_received": false,
"interact_received": false,
"device_received": false
}
var input_handler = InputHandler.new()
# 在添加到场景树之前连接信号
input_handler.move_input.connect(func(_dir): signal_data["move_received"] = true)
input_handler.interact_input.connect(func(): signal_data["interact_received"] = true)
input_handler.device_detected.connect(func(_dev): signal_data["device_received"] = true)
add_child(input_handler)
await get_tree().process_frame
# 设备检测信号应该在初始化时已经发射
assert(signal_data["device_received"], "Device detection signal should be emitted")
print(" ✅ PASSED: Input signals work correctly")
input_handler.queue_free()
await get_tree().process_frame