forked from wxm/Fighting_Rthythm_game
61 lines
2.1 KiB
GDScript
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])
|