Name popups *Popup and give scripts, scenes and classes matching names

Every popup is now called *Popup instead of *Window in its file, root node,
node name, class and variable, and PopupWindow becomes BasePopup. Player is
PlayerRow, SongListObject is SongRow and Character is CharacterCard. Script
files are snake_case and scene files PascalCase, each matching its class or
root node, and LightGrayTheme.tres is light_gray_theme.tres.
This commit is contained in:
Sansan committed 2026-10-06 11:22:39 +02:00
1 parent b7d67b573e
commit 390da577d7
78 files changed
+281 -258

No files matched your search

+2 -2
View File
@@ -84,10 +84,10 @@ func _add_player(player_name: String) -> PlayerObject:
## Returns the row in the player list that shows [param player_object].
func _player_row(player_object: PlayerObject) -> Player:
func _player_row(player_object: PlayerObject) -> PlayerRow:
var rows: Node = _quiz.get_node(
"PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer")
for row: Player in rows.get_children():
for row: PlayerRow in rows.get_children():
if row.player_object == player_object:
return row
return null
+31 -26
View File
@@ -27,10 +27,15 @@ const SYNC_RESULT: Dictionary = {
"total_time": "00:00:03",
}
## Popups in the order the tour opens them.
const POPUPS: Array[String] = [
"Search", "SyncWindow", "SettingsWindow", "QRWindow", "NewCharacterSelect",
"ShortcutsWindow", "AboutWindow", "WinnerWindow", "Log", "StatisticsPopupPanel",
## Popups in the order the tour opens them: the state name, then the popup's node. The
## state names are what the popups were first called, so screenshots taken before they
## were renamed can still be compared with new ones.
const POPUPS: Array[Array] = [
["Search", "SearchPopup"], ["SyncWindow", "SyncPopup"],
["SettingsWindow", "SettingsPopup"], ["QRWindow", "QRPopup"],
["NewCharacterSelect", "CharacterSelectPopup"], ["ShortcutsWindow", "ShortcutsPopup"],
["AboutWindow", "AboutPopup"], ["WinnerWindow", "WinnerPopup"], ["Log", "LogPopup"],
["StatisticsPopupPanel", "StatisticsPopupPanel"],
]
var _main: Control
@@ -108,31 +113,31 @@ func run(on_state: Callable) -> void:
await _settle()
await on_state.call("playing", null)
for popup_name: String in POPUPS:
var popup: Node = await _open_popup(popup_name)
for state_and_node: Array in POPUPS:
var popup: Node = await _open_popup(state_and_node[1])
await _settle()
await on_state.call("popup_" + popup_name, popup)
await on_state.call("popup_" + state_and_node[0], popup)
_close_popup(popup)
await _settle()
var sync_window: PopupWindow = _node("SyncWindow")
var sync_popup: BasePopup = _node("SyncPopup")
Settings.currently_syncing = false
sync_window.has_synced = false
sync_window.start_sync()
sync_window.sync_timer.stop()
sync_window._on_sync_timeout()
sync_popup.has_synced = false
sync_popup.start_sync()
sync_popup.sync_timer.stop()
sync_popup._on_sync_timeout()
await _settle()
await on_state.call("sync_in_progress", sync_window)
sync_window.close()
await on_state.call("sync_in_progress", sync_popup)
sync_popup.close()
await _settle()
await on_state.call("sync_buttons_locked", null)
_server().respond_json("/sync/progress", SYNC_RESULT)
sync_window._on_sync_timeout()
sync_window.open()
sync_popup._on_sync_timeout()
sync_popup.open()
await _settle()
await on_state.call("sync_result", sync_window)
sync_window.close()
await on_state.call("sync_result", sync_popup)
sync_popup.close()
await _settle()
@@ -204,7 +209,7 @@ func _add_player(player_name: String) -> void:
_call("add_player")
func _player_row(index: int) -> Player:
func _player_row(index: int) -> PlayerRow:
return _node("PlayersPanel").get_node(
"VBoxContainer/ScrollContainer/PlayersListVBoxContainer").get_child(index)
@@ -220,20 +225,20 @@ func _freeze_music_player() -> void:
## The log starts each row with the time of day; use a fixed time instead.
func _fix_log_times() -> void:
var log_window: PopupWindow = _node("Log")
for row: Label in log_window.log_box.get_children():
var log_popup: BasePopup = _node("LogPopup")
for row: Label in log_popup.log_box.get_children():
row.text = "12:00:00 " + row.text.substr(9)
func _open_popup(popup_name: String) -> Node:
var popup: Node = _node(popup_name)
match popup_name:
"SyncWindow":
# Opening the window starts a sync; show the empty window instead
"SyncPopup":
# Opening the popup starts a sync; show the empty popup instead
popup.open()
"NewCharacterSelect":
"CharacterSelectPopup":
popup.show_grid("Crono")
"WinnerWindow":
"WinnerPopup":
popup.show_winner(Settings.player_array[0])
"StatisticsPopupPanel":
_call("get_statistics")
@@ -243,7 +248,7 @@ func _open_popup(popup_name: String) -> Node:
func _close_popup(popup: Node) -> void:
if popup is PopupWindow:
if popup is BasePopup:
popup.close()
else:
popup.visible = false
+51 -33
View File
@@ -10,33 +10,53 @@ extends GdUnitTestSuite
const BASELINE_PATH: String = "res://tests/data/layout_baseline.json"
## Nodes that moved from the main window into the Quiz scene, by their old name.
const QUIZ_NODES: Array[String] = [
"Open", "FileDialog", "MusicListPanel", "DebugLabel", "SettingsWindow",
"NewCharacterSelect", "WinnerWindow",
]
## Nodes that moved into the Quiz scene under another path: old name to new path in
## the quiz.
const RENAMED_QUIZ_NODES: Dictionary = {
"Players": "PlayersPanel",
"ScrollContainer": "InspirationList",
"VBoxContainer": "NowPlaying",
"MusicPlayer": "MusicPlayer/PlayerBar",
"RepeatSongCheckButton": "MusicPlayer/RepeatSongCheckButton",
"ResetPlaylistButton": "QuizToolbar/ResetPlaylistButton",
"ResetPointsButton": "QuizToolbar/ResetPointsButton",
"SettingsButton": "QuizToolbar/SettingsButton",
"SoundTestButton": "QuizToolbar/SoundTestButton",
"ShowAnswerButton": "SongControls/ShowAnswerButton",
"NextButton": "SongControls/NextButton",
## Where each node of the old main window lives now: its old name, and the path that
## replaces it. Nodes that are not listed are still where they were.
const MOVED: Dictionary = {
# The top bar
"TopPanelContainer": "TopBar/TopPanelContainer",
"Title": "TopBar/Title",
"SearchButton": "TopBar/SearchButton",
"SyncButton": "TopBar/SyncButton",
"StatisticsButton": "TopBar/StatisticsButton",
"ShortcutsButton": "TopBar/ShortcutsButton",
"AboutButton": "TopBar/AboutButton",
"QRButton": "TopBar/QRButton",
# The popups of the main window, renamed from *Window to *Popup
"Search": "SearchPopup",
"SyncWindow": "SyncPopup",
"QRWindow": "QRPopup",
"ShortcutsWindow": "ShortcutsPopup",
"AboutWindow": "AboutPopup",
"Log": "LogPopup",
# The quiz and its parts
"Open": "Quiz/Open",
"FileDialog": "Quiz/FileDialog",
"DebugLabel": "Quiz/DebugLabel",
"MusicListPanel": "Quiz/MusicListPanel",
"Players": "Quiz/PlayersPanel",
"ScrollContainer": "Quiz/InspirationList",
"VBoxContainer": "Quiz/NowPlaying",
"MusicPlayer": "Quiz/MusicPlayer/PlayerBar",
"RepeatSongCheckButton": "Quiz/MusicPlayer/RepeatSongCheckButton",
"ResetPlaylistButton": "Quiz/QuizToolbar/ResetPlaylistButton",
"ResetPointsButton": "Quiz/QuizToolbar/ResetPointsButton",
"SettingsButton": "Quiz/QuizToolbar/SettingsButton",
"SoundTestButton": "Quiz/QuizToolbar/SoundTestButton",
"ShowAnswerButton": "Quiz/SongControls/ShowAnswerButton",
"NextButton": "Quiz/SongControls/NextButton",
"SettingsWindow": "Quiz/SettingsPopup",
"NewCharacterSelect": "Quiz/CharacterSelectPopup",
"WinnerWindow": "Quiz/WinnerPopup",
}
## Nodes that moved from the main window into the TopBar scene, by their old name.
const TOP_BAR_NODES: Array[String] = [
"TopPanelContainer", "Title", "SearchButton", "SyncButton", "StatisticsButton",
"ShortcutsButton", "AboutButton", "QRButton",
]
## Scenes that were renamed, by their old and new root name. A row added to a list is
## named after its scene's root when the name is still free, so these show up deeper in a
## path.
const RENAMED_SCENES: Dictionary = {
"SongListObject": "SongRow",
"Player": "PlayerRow",
}
## How far a node may be from its old place, in pixels.
const TOLERANCE: float = 0.5
@@ -71,14 +91,12 @@ func after() -> void:
## Where the node that used to be at [param old_path] in the main window is now.
static func new_path(old_path: String) -> String:
var first: String = old_path.get_slice("/", 0)
if first in QUIZ_NODES:
return "Quiz/" + old_path
if first in RENAMED_QUIZ_NODES:
return "Quiz/" + RENAMED_QUIZ_NODES[first] + old_path.trim_prefix(first)
if first in TOP_BAR_NODES:
return "TopBar/" + old_path
return old_path
var parts: PackedStringArray = old_path.split("/")
for i: int in parts.size():
parts[i] = RENAMED_SCENES.get(parts[i], parts[i])
var first: String = parts[0]
parts[0] = MOVED.get(first, first)
return "/".join(parts)
func _baseline() -> Dictionary:
+3 -3
View File
@@ -165,11 +165,11 @@ func _open_settings() -> void:
func _close_settings() -> void:
(_quiz.get_node("SettingsWindow") as Control).visible = false
(_quiz.get_node("SettingsPopup") as Control).visible = false
func _press_settings_button(unique_name: String) -> void:
(_quiz.get_node("SettingsWindow").get_node("%" + unique_name) as Button).pressed.emit()
(_quiz.get_node("SettingsPopup").get_node("%" + unique_name) as Button).pressed.emit()
func test_raising_cache_size_does_not_download_while_settings_are_open() -> void:
@@ -229,7 +229,7 @@ func test_show_answer_before_first_song_does_not_reveal_next_song() -> void:
func test_log_adds_one_row_per_point_with_padded_time() -> void:
var log_box: VBoxContainer = _window.get_node("%Log").get_node("%LogVBoxContainer")
var log_box: VBoxContainer = _window.get_node("%LogPopup").get_node("%LogVBoxContainer")
var crono: PlayerObject = _add_player("Crono")
await _play_first_song()
+1 -1
View File
@@ -37,7 +37,7 @@ func test_starts_empty() -> void:
func test_refresh_shows_one_row_per_song_in_order() -> void:
_panel.refresh()
assert_array(_rows().map(func(row: SongListObject) -> int: return row.song_object.song_number)) \
assert_array(_rows().map(func(row: SongRow) -> int: return row.song_object.song_number)) \
.contains_exactly([0, 1, 2])
+2 -2
View File
@@ -146,7 +146,7 @@ func test_player_list_shows_rows_in_player_order() -> void:
var rows: Array[Node] = _quiz.get_node(
"PlayersPanel/VBoxContainer/ScrollContainer/PlayersListVBoxContainer").get_children()
assert_array(rows.map(func(row: Player) -> PlayerObject: return row.player_object)) \
assert_array(rows.map(func(row: PlayerRow) -> PlayerObject: return row.player_object)) \
.contains_exactly([_marle, _lucca, robo])
assert_array(rows.map(func(row: Player) -> int: return row.list_index)) \
assert_array(rows.map(func(row: PlayerRow) -> int: return row.list_index)) \
.contains_exactly([0, 1, 2])
+6 -6
View File
@@ -58,7 +58,7 @@ func test_adding_a_name_adds_a_player_and_a_row() -> void:
assert_str(crono.player_name).is_equal("Crono")
await signals.is_emitted("player_added", [crono])
assert_str(_panel.new_player_name_field.text).is_empty()
assert_object((_rows()[0] as Player).player_object).is_same(crono)
assert_object((_rows()[0] as PlayerRow).player_object).is_same(crono)
func test_add_button_in_the_row_adds_the_player() -> void:
@@ -105,9 +105,9 @@ func test_rows_follow_player_order_and_numbering() -> void:
_add("Marle")
_add("Lucca")
assert_array(_rows().map(func(row: Player) -> String: return row.player_object.player_name)) \
assert_array(_rows().map(func(row: PlayerRow) -> String: return row.player_object.player_name)) \
.contains_exactly(["Crono", "Marle", "Lucca"])
assert_array(_rows().map(func(row: Player) -> int: return row.list_index)) \
assert_array(_rows().map(func(row: PlayerRow) -> int: return row.list_index)) \
.contains_exactly([0, 1, 2])
@@ -123,12 +123,12 @@ func test_remove_button_removes_the_player_and_row() -> void:
assert_array(Settings.player_array.map(
func(p: PlayerObject) -> String: return p.player_name)).contains_exactly(["Marle"])
assert_int(_rows().size()).is_equal(1)
assert_int((_rows()[0] as Player).list_index).is_equal(0)
assert_int((_rows()[0] as PlayerRow).list_index).is_equal(0)
func test_character_button_asks_for_a_new_character() -> void:
_add("Crono")
var row: Player = _rows()[0]
var row: PlayerRow = _rows()[0]
var signals: GdUnitSignalAssert = assert_signal(monitor_signals(_panel))
(row.get_node("HBoxContainer/Character") as BaseButton).pressed.emit()
@@ -142,5 +142,5 @@ func test_reload_shows_new_scores() -> void:
_panel.reload()
assert_str(((_rows()[0] as Player).get_node("HBoxContainer/Name") as Label).text) \
assert_str(((_rows()[0] as PlayerRow).get_node("HBoxContainer/Name") as Label).text) \
.ends_with("Crono: 3")
+17 -17
View File
@@ -1,44 +1,44 @@
extends MainWindowTestSuite
## All popups share PopupWindow: clicking outside the panel closes them, the backdrop
## All popups share BasePopup: clicking outside the panel closes them, the backdrop
## dims the window behind them, and the closing click does not reach the main window.
## The main window and the quiz each have their own popups and their own backdrop.
## Popups in the main window: the ones opened from the top bar, and the log.
const MAIN_POPUPS: Array[String] = [
"Search", "SyncWindow", "QRWindow", "ShortcutsWindow", "AboutWindow", "Log",
"SearchPopup", "SyncPopup", "QRPopup", "ShortcutsPopup", "AboutPopup", "LogPopup",
]
## Popups opened from the quiz, in the Quiz scene.
const QUIZ_POPUPS: Array[String] = [
"SettingsWindow", "NewCharacterSelect", "WinnerWindow",
"SettingsPopup", "CharacterSelectPopup", "WinnerPopup",
]
func _popup(node_name: String) -> PopupWindow:
func _popup(node_name: String) -> BasePopup:
return _quiz.get_node(node_name) if node_name in QUIZ_POPUPS \
else _window.get_node(node_name)
## The backdrop that shows behind [param popup].
func _backdrop(popup: PopupWindow = _popup("SettingsWindow")) -> ColorRect:
func _backdrop(popup: BasePopup = _popup("SettingsPopup")) -> ColorRect:
return popup.get_parent().get_node("PopupBackdrop")
## A point on screen outside the popup's panel.
func _outside(popup: PopupWindow) -> Vector2:
func _outside(popup: BasePopup) -> Vector2:
var rect: Rect2 = popup.panel.get_global_rect()
return Vector2(rect.end.x + 5, rect.end.y + 5) if rect.end.x < 1900 \
else Vector2(rect.position.x - 5, rect.position.y - 5)
func test_backdrops_are_hidden_without_popups() -> void:
assert_bool(_backdrop(_popup("SettingsWindow")).visible).is_false()
assert_bool(_backdrop(_popup("AboutWindow")).visible).is_false()
assert_bool(_backdrop(_popup("SettingsPopup")).visible).is_false()
assert_bool(_backdrop(_popup("AboutPopup")).visible).is_false()
func test_backdrops_cover_the_whole_window() -> void:
for node_name: String in ["SettingsWindow", "AboutWindow"]:
var popup: PopupWindow = _popup(node_name)
for node_name: String in ["SettingsPopup", "AboutPopup"]:
var popup: BasePopup = _popup(node_name)
popup.open()
assert_object(_backdrop(popup).get_global_rect()).override_failure_message(
@@ -49,12 +49,12 @@ func test_backdrops_cover_the_whole_window() -> void:
func test_every_popup_is_a_popup_window() -> void:
for node_name: String in MAIN_POPUPS + QUIZ_POPUPS:
assert_object(_popup(node_name)).is_instanceof(PopupWindow)
assert_object(_popup(node_name)).is_instanceof(BasePopup)
func test_every_popup_shows_backdrop_and_closes_on_outside_click() -> void:
for node_name: String in MAIN_POPUPS + QUIZ_POPUPS:
var popup: PopupWindow = _popup(node_name)
var popup: BasePopup = _popup(node_name)
popup.open()
await _runner.simulate_frames(1)
assert_bool(_backdrop(popup).visible).override_failure_message(
@@ -69,7 +69,7 @@ func test_every_popup_shows_backdrop_and_closes_on_outside_click() -> void:
func test_click_inside_popup_keeps_it_open() -> void:
var settings: PopupWindow = _popup("SettingsWindow")
var settings: BasePopup = _popup("SettingsPopup")
settings.open()
await _runner.simulate_frames(1)
@@ -79,7 +79,7 @@ func test_click_inside_popup_keeps_it_open() -> void:
func test_closing_click_does_not_press_button_behind_popup() -> void:
var settings: PopupWindow = _popup("SettingsWindow")
var settings: BasePopup = _popup("SettingsPopup")
var reset_button: Button = _quiz.get_node("QuizToolbar/ResetPlaylistButton")
settings.open()
await _runner.simulate_frames(1)
@@ -101,7 +101,7 @@ func test_button_works_again_after_popup_closed() -> void:
func test_closing_search_clears_the_search() -> void:
var search: PopupWindow = _popup("Search")
var search: BasePopup = _popup("SearchPopup")
search.open()
var search_bar: TextEdit = search.get_node("Searchbar")
search_bar.text = "mario"
@@ -112,7 +112,7 @@ func test_closing_search_clears_the_search() -> void:
func test_closing_character_select_allows_song_clicks_again() -> void:
var character_select: PopupWindow = _popup("NewCharacterSelect")
var character_select: BasePopup = _popup("CharacterSelectPopup")
character_select.show_grid("Crono")
assert_bool(Settings.character_select_open).is_true()
@@ -122,7 +122,7 @@ func test_closing_character_select_allows_song_clicks_again() -> void:
func test_toggle_opens_and_closes() -> void:
var shortcuts: PopupWindow = _popup("ShortcutsWindow")
var shortcuts: BasePopup = _popup("ShortcutsPopup")
shortcuts.toggle()
assert_bool(shortcuts.visible).is_true()
+22 -22
View File
@@ -5,8 +5,8 @@ extends MainWindowTestSuite
## server and the keyboard shortcuts reach both the main window and the quiz.
const MAIN_WINDOW_CHILDREN: Array[String] = [
"TopBar", "Quiz", "PopupBackdrop", "Search", "SyncWindow", "QRWindow",
"ShortcutsWindow", "StatisticsPopupPanel", "AboutWindow", "Log",
"TopBar", "Quiz", "PopupBackdrop", "SearchPopup", "SyncPopup", "QRPopup",
"ShortcutsPopup", "StatisticsPopupPanel", "AboutPopup", "LogPopup",
]
const TOP_BAR_CHILDREN: Array[String] = [
@@ -16,12 +16,12 @@ const TOP_BAR_CHILDREN: Array[String] = [
## Each top bar button and the popup it opens in the main window.
const TOP_BAR_POPUPS: Dictionary = {
"SearchButton": "Search",
"SyncButton": "SyncWindow",
"SearchButton": "SearchPopup",
"SyncButton": "SyncPopup",
"StatisticsButton": "StatisticsPopupPanel",
"ShortcutsButton": "ShortcutsWindow",
"AboutButton": "AboutWindow",
"QRButton": "QRWindow",
"ShortcutsButton": "ShortcutsPopup",
"AboutButton": "AboutPopup",
"QRButton": "QRPopup",
}
@@ -85,7 +85,7 @@ func test_clicking_each_top_bar_button_opens_its_popup() -> void:
assert_bool(popup.visible).override_failure_message(
"%s did not open %s" % [button_name, popup.name]).is_true()
if popup is PopupWindow:
if popup is BasePopup:
popup.close()
else:
popup.visible = false
@@ -115,7 +115,7 @@ func test_clicking_a_song_in_the_music_list_plays_it() -> void:
var rows: Array[Node] = _quiz.get_node("MusicListPanel/ScrollContainer/MusicList") \
.get_children()
var first_row: Control = rows.filter(
func(row: SongListObject) -> bool: return row.song_object.song_number == 0)[0]
func(row: SongRow) -> bool: return row.song_object.song_number == 0)[0]
await _click_at(first_row.get_global_rect().position + Vector2(20, first_row.size.y / 2))
await get_tree().create_timer(0.7).timeout
@@ -130,13 +130,13 @@ func test_points_from_the_player_list_reach_the_song_and_log() -> void:
(_player_row(crono).get_node("HBoxContainer/AddPoint") as BaseButton).pressed.emit()
assert_array(Playlist.song_object_array[0].players_given_point).contains_exactly([crono.id])
assert_int((_window.get_node("%Log").get_node("%LogVBoxContainer") as Node).get_child_count()) \
assert_int((_window.get_node("%LogPopup").get_node("%LogVBoxContainer") as Node).get_child_count()) \
.is_equal(1)
func test_character_button_in_the_player_list_picks_a_new_character() -> void:
var crono: PlayerObject = _add_player("Crono")
var character_select: PopupWindow = _quiz.get_node("NewCharacterSelect")
var character_select: BasePopup = _quiz.get_node("CharacterSelectPopup")
(_player_row(crono).get_node("HBoxContainer/Character") as BaseButton).pressed.emit()
@@ -167,12 +167,12 @@ func test_loaded_song_list_shows_in_the_music_list() -> void:
_quiz.song_loader.load_song_list()
var rows: Array[Node] = _quiz.get_node("MusicListPanel/ScrollContainer/MusicList").get_children()
assert_array(rows.map(func(row: SongListObject) -> int: return row.song_object.song_number)) \
assert_array(rows.map(func(row: SongRow) -> int: return row.song_object.song_number)) \
.contains_exactly([0, 1])
func test_quiz_popup_backdrop_covers_the_top_bar() -> void:
var settings: PopupWindow = _quiz.get_node("SettingsWindow")
var settings: BasePopup = _quiz.get_node("SettingsPopup")
settings.open()
await _runner.simulate_frames(1)
@@ -184,8 +184,8 @@ func test_quiz_popup_backdrop_covers_the_top_bar() -> void:
func test_click_on_top_bar_while_quiz_popup_is_open_only_closes_it() -> void:
var settings: PopupWindow = _quiz.get_node("SettingsWindow")
var search: PopupWindow = _window.get_node("Search")
var settings: BasePopup = _quiz.get_node("SettingsPopup")
var search: BasePopup = _window.get_node("SearchPopup")
settings.open()
await _runner.simulate_frames(1)
@@ -198,10 +198,10 @@ func test_click_on_top_bar_while_quiz_popup_is_open_only_closes_it() -> void:
func test_sync_disables_quiz_buttons_until_finished() -> void:
_server.respond_bytes("/sync", PackedByteArray())
_server.respond_json("/sync/progress", {"progress": 10, "time_spent": "00:00:01"})
var sync_window: PopupWindow = _window.get_node("SyncWindow")
var sync_popup: BasePopup = _window.get_node("SyncPopup")
_top_bar_button("SyncButton").pressed.emit()
sync_window.sync_timer.stop()
sync_popup.sync_timer.stop()
for button_name: String in ["QuizToolbar/SoundTestButton", "QuizToolbar/ResetPlaylistButton", "SongControls/ShowAnswerButton",
"SongControls/NextButton"]:
@@ -211,7 +211,7 @@ func test_sync_disables_quiz_buttons_until_finished() -> void:
_server.respond_json("/sync/progress", UiTour.SYNC_RESULT)
var reloads_before: int = _server.count("/music/all/order")
sync_window._on_sync_timeout()
sync_popup._on_sync_timeout()
await _runner.simulate_frames(2)
for button_name: String in ["QuizToolbar/SoundTestButton", "QuizToolbar/ResetPlaylistButton", "SongControls/ShowAnswerButton",
@@ -229,7 +229,7 @@ func test_changing_server_reloads_search_and_quiz() -> void:
var player: PlayerObject = _add_player("Crono")
player.add_point()
_quiz.get_node("SettingsWindow").server_changed.emit()
_quiz.get_node("SettingsPopup").server_changed.emit()
assert_int(_server.count("/music/all/order")).is_equal(search_loads + 1)
assert_int(_server.count("/music/all")).is_equal(inspiration_loads + 1)
@@ -239,10 +239,10 @@ func test_changing_server_reloads_search_and_quiz() -> void:
func test_alt_k_opens_shortcuts_and_alt_l_opens_log() -> void:
await _press_keys([KEY_ALT, KEY_K])
assert_bool((_window.get_node("ShortcutsWindow") as Control).visible).is_true()
assert_bool((_window.get_node("ShortcutsPopup") as Control).visible).is_true()
await _press_keys([KEY_ALT, KEY_L])
assert_bool((_window.get_node("Log") as Control).visible).is_true()
assert_bool((_window.get_node("LogPopup") as Control).visible).is_true()
func test_alt_down_lowers_the_volume() -> void:
@@ -258,7 +258,7 @@ func test_alt_down_lowers_the_volume() -> void:
func test_alt_enter_switches_fullscreen_and_settings_shows_it() -> void:
var settings: PopupWindow = _quiz.get_node("SettingsWindow")
var settings: BasePopup = _quiz.get_node("SettingsPopup")
var was_fullscreen: bool = Settings.fullscreen
await _press_keys([KEY_ALT, KEY_ENTER])
+2 -2
View File
@@ -12,7 +12,7 @@ func before_test() -> void:
func _stats_checkbox() -> CheckButton:
return _quiz.get_node("SettingsWindow").get_node("%AddToDatabaseCheckButton")
return _quiz.get_node("SettingsPopup").get_node("%AddToDatabaseCheckButton")
func test_winning_turns_statistics_off() -> void:
@@ -57,7 +57,7 @@ func test_songs_after_a_win_are_not_counted() -> void:
func test_winning_score_cannot_go_below_one() -> void:
_press("QuizToolbar/SettingsButton")
var lower_button: Button = _quiz.get_node("SettingsWindow").get_node("%LowerButton")
var lower_button: Button = _quiz.get_node("SettingsPopup").get_node("%LowerButton")
for i: int in 3:
lower_button.pressed.emit()
@@ -11,7 +11,7 @@ func before_test() -> void:
Settings.currently_syncing = false
_server = FakeHttpTransport.new().install()
_server.respond_bytes("/sync", PackedByteArray())
_runner = scene_runner("res://SyncWindow.tscn")
_runner = scene_runner("res://SyncPopup.tscn")
_window = _runner.scene()
+1 -1
View File
@@ -1,6 +1,6 @@
extends GdUnitTestSuite
const SearchWindowScript: GDScript = preload("res://SearchWindow.gd")
const SearchWindowScript: GDScript = preload("res://search_popup.gd")
var _search: Control