Refactor rhythm action architecture
This commit is contained in:
@@ -8,34 +8,35 @@ func _init() -> void:
|
||||
|
||||
|
||||
func _run() -> void:
|
||||
var scene: PackedScene = load("res://scenes/main/main.tscn")
|
||||
var scene: PackedScene = load("res://scenes/ui/rhythm_track.tscn")
|
||||
if scene == null:
|
||||
push_error("Could not load main.tscn")
|
||||
push_error("Could not load rhythm_track.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)
|
||||
|
||||
var track := scene.instantiate() as Control
|
||||
root.add_child(track)
|
||||
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()
|
||||
|
||||
|
||||
_expect_float(track.anchor_left, 0.5, "RhythmTrack should stay centered")
|
||||
_expect_float(track.anchor_right, 0.5, "RhythmTrack should stay centered")
|
||||
_expect_bool(track.has_node("JudgementLabel"), true, "RhythmTrack should own its judgement label")
|
||||
|
||||
track.free()
|
||||
_finish()
|
||||
|
||||
|
||||
func _expect_float(actual: float, expected: float, label: String) -> void:
|
||||
if not is_equal_approx(actual, expected):
|
||||
failures.append("%s: expected %.3f, got %.3f" % [label, expected, actual])
|
||||
|
||||
|
||||
func _expect_bool(actual: bool, expected: bool, label: String) -> void:
|
||||
if actual != expected:
|
||||
failures.append("%s: expected %s, got %s" % [label, expected, actual])
|
||||
|
||||
|
||||
func _finish() -> void:
|
||||
if failures.is_empty():
|
||||
print("PASS rhythm ui layout")
|
||||
quit(0)
|
||||
@@ -43,18 +44,3 @@ func _run() -> void:
|
||||
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])
|
||||
|
||||
Reference in New Issue
Block a user