main/ holds the main window and top bar, quiz/ the quiz and its parts, player/ the music player, popups/ every popup and what they share, data/ the songs, players, playlist and settings, server/ the MusicServer client, common/ the list row and GameLog, and themes/ the themes and style boxes.
86 lines
2.4 KiB
GDScript
86 lines
2.4 KiB
GDScript
extends GdUnitTestSuite
|
|
## Show answer and Next: each reports its press, also from its keyboard shortcut, and
|
|
## Next is only enabled while a song is ready.
|
|
|
|
var _runner: GdUnitSceneRunner
|
|
var _controls: SongControls
|
|
|
|
|
|
func before_test() -> void:
|
|
_runner = scene_runner("res://quiz/SongControls.tscn")
|
|
_controls = _runner.scene()
|
|
|
|
|
|
func _click(button: Button) -> void:
|
|
_runner.set_mouse_position(_controls.get_viewport().get_final_transform()
|
|
* button.get_global_rect().get_center())
|
|
await _runner.simulate_mouse_button_pressed(MOUSE_BUTTON_LEFT)
|
|
await _runner.await_input_processed()
|
|
|
|
|
|
func _press_keys(keys: Array[Key]) -> void:
|
|
for key: Key in keys:
|
|
_runner.simulate_key_press(key)
|
|
await _runner.await_input_processed()
|
|
keys.reverse()
|
|
for key: Key in keys:
|
|
_runner.simulate_key_release(key)
|
|
await _runner.await_input_processed()
|
|
|
|
|
|
func test_next_starts_disabled() -> void:
|
|
assert_bool(_controls.next_button.disabled).is_true()
|
|
|
|
|
|
func test_clicking_show_answer_reports_it() -> void:
|
|
var signals: GdUnitSignalAssert = assert_signal(monitor_signals(_controls))
|
|
|
|
await _click(_controls.show_answer_button)
|
|
|
|
await signals.is_emitted("show_answer_pressed")
|
|
|
|
|
|
func test_clicking_next_reports_it_when_enabled() -> void:
|
|
_controls.set_next_enabled(true)
|
|
var signals: GdUnitSignalAssert = assert_signal(monitor_signals(_controls))
|
|
|
|
await _click(_controls.next_button)
|
|
|
|
await signals.is_emitted("next_pressed")
|
|
|
|
|
|
func test_clicking_disabled_next_does_nothing() -> void:
|
|
var signals: GdUnitSignalAssert = assert_signal(monitor_signals(_controls))
|
|
|
|
await _click(_controls.next_button)
|
|
|
|
await signals.wait_until(200).is_not_emitted("next_pressed")
|
|
|
|
|
|
func test_alt_v_shows_answer_and_alt_c_plays_next() -> void:
|
|
_controls.set_next_enabled(true)
|
|
var signals: GdUnitSignalAssert = assert_signal(monitor_signals(_controls))
|
|
|
|
await _press_keys([KEY_ALT, KEY_V])
|
|
await signals.is_emitted("show_answer_pressed")
|
|
await _press_keys([KEY_ALT, KEY_C])
|
|
await signals.is_emitted("next_pressed")
|
|
|
|
|
|
func test_locking_disables_both() -> void:
|
|
_controls.set_next_enabled(true)
|
|
|
|
_controls.set_locked(true)
|
|
|
|
assert_bool(_controls.show_answer_button.disabled).is_true()
|
|
assert_bool(_controls.next_button.disabled).is_true()
|
|
|
|
|
|
func test_unlocking_enables_show_answer_but_waits_for_a_song_for_next() -> void:
|
|
_controls.set_locked(true)
|
|
|
|
_controls.set_locked(false)
|
|
|
|
assert_bool(_controls.show_answer_button.disabled).is_false()
|
|
assert_bool(_controls.next_button.disabled).is_true()
|