Tests: Speichern beim Schließen und automatisches Speichern
Beides setzt Konzept 9 um („automatisch in festen Abständen“, Speichern beim Schließen), und beides ließ sich entfernen, ohne dass ein Test rot wurde. - Schließen: Die Hauptszene bekommt NOTIFICATION_WM_CLOSE_REQUEST. Danach meldet ein SaveStore im selben Ordner einen Spielstand und genau eine Aufzeichnung. - Automatisch: Die Hauptszene läuft per _run_tick bis zum Takt vor AUTOSAVE_TICKS, ohne Bilder abzuwarten. Bis dahin gibt es keinen Spielstand, einen Takt später gibt es einen. Entfernt man das Speichern beim Schließen, schlägt der erste Test fehl; entfernt man das automatische Speichern in _run_tick, der zweite. Ohne das Schreiben der Aufzeichnung beim Schließen schlägt der erste ebenfalls fehl. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -46,6 +46,33 @@ func test_a_saved_game_is_continued_on_the_next_start() -> void:
|
|||||||
TestFiles.remove_dir(directory)
|
TestFiles.remove_dir(directory)
|
||||||
|
|
||||||
|
|
||||||
|
func test_closing_the_window_saves_the_game_and_records_the_session() -> void:
|
||||||
|
var directory := TestFiles.temporary_dir("close")
|
||||||
|
var main := _start_main(directory)
|
||||||
|
await tree.process_frame
|
||||||
|
main.notification(Node.NOTIFICATION_WM_CLOSE_REQUEST)
|
||||||
|
var store := SaveStore.new(directory)
|
||||||
|
check(store.has_save(), "the game was saved")
|
||||||
|
check_eq(store.recordings().size(), 1, "the session was recorded")
|
||||||
|
_stop_main(main)
|
||||||
|
TestFiles.remove_dir(directory)
|
||||||
|
|
||||||
|
|
||||||
|
func test_the_game_is_saved_automatically_every_two_minutes() -> void:
|
||||||
|
var directory := TestFiles.temporary_dir("autosave")
|
||||||
|
var main := _start_main(directory)
|
||||||
|
var store := SaveStore.new(directory)
|
||||||
|
check(not store.has_save(), "there is no save at the start")
|
||||||
|
# No frames are awaited, so only these ticks run.
|
||||||
|
while main.session.tick() < main.AUTOSAVE_TICKS - 1:
|
||||||
|
main._run_tick()
|
||||||
|
check(not store.has_save(), "still no save one tick before the interval ends")
|
||||||
|
main._run_tick()
|
||||||
|
check(store.has_save(), "saved when the interval ends")
|
||||||
|
_stop_main(main)
|
||||||
|
TestFiles.remove_dir(directory)
|
||||||
|
|
||||||
|
|
||||||
func test_an_unusable_save_is_set_aside_and_a_new_world_starts() -> void:
|
func test_an_unusable_save_is_set_aside_and_a_new_world_starts() -> void:
|
||||||
var directory := TestFiles.temporary_dir("broken")
|
var directory := TestFiles.temporary_dir("broken")
|
||||||
var store := SaveStore.new(directory)
|
var store := SaveStore.new(directory)
|
||||||
|
|||||||
Reference in New Issue
Block a user