SaveStore prüft jeden Schreibvorgang
Ein Speicherstand ersetzt den vorigen nur noch, wenn er vollständig geschrieben und zurückgelesen wurde. Ein nicht gespeicherter Spielerschlüssel wird gemeldet, und set_aside_save meldet, wenn nichts verschoben wurde. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -30,6 +30,25 @@ func test_an_empty_save_is_not_written() -> void:
|
||||
TestFiles.remove_dir(directory)
|
||||
|
||||
|
||||
func test_a_save_that_cannot_be_written_keeps_the_previous_one() -> void:
|
||||
var directory := TestFiles.temporary_dir("blocked")
|
||||
var store := SaveStore.new(directory)
|
||||
store.write_save(PackedByteArray([1, 2, 3]))
|
||||
# A folder in place of the temporary file makes the write fail.
|
||||
DirAccess.make_dir_absolute(directory.path_join(SaveStore.SAVE_FILE + ".tmp"))
|
||||
check(not store.write_save(PackedByteArray([4, 5])), "the failed save is reported")
|
||||
check_eq(store.read_save(), PackedByteArray([1, 2, 3]), "the previous save is untouched")
|
||||
check(not store.write_save(PackedByteArray()), "an empty save is refused")
|
||||
check_eq(store.read_save(), PackedByteArray([1, 2, 3]), "still untouched")
|
||||
TestFiles.remove_dir(directory)
|
||||
|
||||
|
||||
func test_setting_aside_without_a_save_reports_nothing_moved() -> void:
|
||||
var directory := TestFiles.temporary_dir("nothing")
|
||||
check_eq(SaveStore.new(directory).set_aside_save(), "", "no save, nothing moved")
|
||||
TestFiles.remove_dir(directory)
|
||||
|
||||
|
||||
func test_an_unusable_save_can_be_set_aside() -> void:
|
||||
var directory := TestFiles.temporary_dir("aside")
|
||||
var store := SaveStore.new(directory)
|
||||
|
||||
Reference in New Issue
Block a user