Preload songs only after the song list has loaded
At startup and after resetting the playlist, loading the song list and preloading the first song started at the same time. When the list answered last, it cleared the playlist and dropped the preloaded song. Preloading now starts once the list has loaded, and loading the list is retried if it fails.
This commit is contained in:
1 parent
05655cf81c
commit
d856e03c32
5 files changed
+78
-8
No files matched your search
@@ -0,0 +1,41 @@
|
||||
extends MainWindowTestSuite
|
||||
## Startup with a slow /music/list response.
|
||||
|
||||
|
||||
func _before_window_starts() -> void:
|
||||
_server.respond_json("/music/list", [
|
||||
{"SongNo": 0, "Soundtrack": "Chrono Trigger", "Song": "Corridors of Time"},
|
||||
])
|
||||
_next_song_is({"SongNo": 1, "Soundtrack": "Final Fantasy VI", "Song": "Dancing Mad"})
|
||||
_server.hold("/music/list")
|
||||
|
||||
|
||||
func test_preloaded_song_survives_a_slow_song_list() -> void:
|
||||
_server.release("/music/list")
|
||||
|
||||
# The song already on the server, then the preloaded one
|
||||
assert_int(Playlist.song_object_array.size()).is_equal(2)
|
||||
assert_str(Playlist.song_object_array[1].song_title).is_equal("Dancing Mad")
|
||||
assert_int(Playlist.get_preloaded_songs()).is_equal(1)
|
||||
|
||||
|
||||
func test_next_plays_the_preloaded_song_after_a_slow_song_list() -> void:
|
||||
_server.release("/music/list")
|
||||
|
||||
await _play_first_song()
|
||||
|
||||
assert_int(Playlist.currently_playing_song).is_equal(1)
|
||||
|
||||
|
||||
func test_failed_song_list_is_retried_before_preloading() -> void:
|
||||
_window.song_fetch_retry_seconds = 0.05
|
||||
_server.respond_json("/music/list", [], 503)
|
||||
_server.release("/music/list")
|
||||
|
||||
assert_int(_server.count("/music/rand")).is_equal(0)
|
||||
|
||||
_server.respond_json("/music/list", [])
|
||||
await await_millis(200)
|
||||
|
||||
assert_int(_server.count("/music/rand")).is_equal(1)
|
||||
assert_int(Playlist.get_preloaded_songs()).is_equal(1)
|
||||
@@ -0,0 +1 @@
|
||||
uid://sfwrqidmuj04
|
||||
Reference in new issue
Block a user