Files
Fighting_Rthythm_game/tests/test_rhythm_ui_layout.gd

61 lines
2.1 KiB
GDScript

extends SceneTree
var failures: Array[String] = []
func _init() -> void:
_run.call_deferred()
func _run() -> void:
var scene: PackedScene = load("res://scenes/main/main.tscn")
if scene == null:
push_error("Could not load main.tscn")
quit(1)
return
var main: Node = scene.instantiate()
var initial_left_mover: Control = main.get_node("RhythmFeedback/RhythmTrack/LeftMover")
var initial_right_mover: Control = main.get_node("RhythmFeedback/RhythmTrack/RightMover")
var initial_center_base: Control = main.get_node("RhythmFeedback/RhythmTrack/CenterBase")
var initial_center_flash: Control = main.get_node("RhythmFeedback/RhythmTrack/CenterFlash")
var expected_left_start := _control_center(initial_left_mover)
var expected_right_start := _control_center(initial_right_mover)
var expected_track_center := _control_center(initial_center_base)
var expected_mover_size := initial_left_mover.size
var expected_center_flash_size := initial_center_flash.size
root.add_child(main)
await process_frame
_expect_vector("left_mover_start", main.get("left_mover_start"), expected_left_start)
_expect_vector("right_mover_start", main.get("right_mover_start"), expected_right_start)
_expect_vector("track_center", main.get("track_center"), expected_track_center)
_expect_vector("mover_size", main.get("mover_size"), expected_mover_size)
_expect_vector("center_flash_size", main.get("center_flash_size"), expected_center_flash_size)
main.free()
if failures.is_empty():
print("PASS rhythm ui layout")
quit(0)
else:
for failure: String in failures:
push_error(failure)
quit(1)
func _control_center(control: Control) -> Vector2:
return Vector2(
(control.offset_left + control.offset_right) * 0.5,
(control.offset_top + control.offset_bottom) * 0.5
)
func _expect_vector(label: String, actual: Variant, expected: Vector2) -> void:
if not actual is Vector2:
failures.append("%s should be cached as Vector2, got %s" % [label, typeof(actual)])
return
if not (actual as Vector2).is_equal_approx(expected):
failures.append("%s should match scene layout: expected %s got %s" % [label, expected, actual])