Profile, Startoptionen und vorsichtiges Lesen
Die Befehlszeile wählt ein Profil, einen Namen und einen Direktstart. Zwei Fenster auf einem Rechner sind so zwei Spieler. Ein Schlüssel oder Spielstand, der sich gerade nicht lesen lässt, wird nicht mehr ersetzt. Name und zuletzt genutzte Adresse bleiben gespeichert. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -126,3 +126,51 @@ func test_only_the_newest_recordings_are_kept() -> void:
|
||||
check(FileAccess.file_exists(paths[paths.size() - 1]), "the newest is there")
|
||||
check_eq(store.write_recording(PackedByteArray()), "", "an empty recording is not written")
|
||||
TestFiles.remove_dir(directory)
|
||||
|
||||
|
||||
func test_a_key_that_cannot_be_read_right_now_is_not_replaced() -> void:
|
||||
var directory := TestFiles.temporary_dir("held-key")
|
||||
var key := SaveStore.new(directory).player_key()
|
||||
var store := HeldFileStore.new(directory)
|
||||
store.unreadable = SaveStore.KEY_FILE
|
||||
check_eq(store.player_key(), PackedByteArray(), "no key for now")
|
||||
check_eq(store.last_read_error, ERR_FILE_CANT_READ, "the reason is kept")
|
||||
check_eq(SaveStore.new(directory).player_key(), key, "the key on disk is the old one")
|
||||
TestFiles.remove_dir(directory)
|
||||
|
||||
|
||||
func test_a_damaged_key_is_replaced() -> void:
|
||||
var directory := TestFiles.temporary_dir("damaged-key")
|
||||
var file := FileAccess.open(directory.path_join(SaveStore.KEY_FILE), FileAccess.WRITE)
|
||||
file.store_buffer(PackedByteArray([1, 2, 3]))
|
||||
file.close()
|
||||
var store := SaveStore.new(directory)
|
||||
var key := store.player_key()
|
||||
check_eq(key.size(), SaveStore.KEY_BYTES, "a new key")
|
||||
check_eq(SaveStore.new(directory).player_key(), key, "which is kept")
|
||||
TestFiles.remove_dir(directory)
|
||||
|
||||
|
||||
func test_a_save_that_cannot_be_read_right_now_reports_why() -> void:
|
||||
var directory := TestFiles.temporary_dir("held-save")
|
||||
SaveStore.new(directory).write_save(PackedByteArray([1, 2, 3]))
|
||||
var store := HeldFileStore.new(directory)
|
||||
store.unreadable = SaveStore.SAVE_FILE
|
||||
check_eq(store.read_save(), PackedByteArray(), "nothing read")
|
||||
check_eq(store.last_read_error, ERR_FILE_CANT_READ, "the reason")
|
||||
store.unreadable = ""
|
||||
check_eq(store.read_save(), PackedByteArray([1, 2, 3]), "readable again later")
|
||||
check_eq(store.last_read_error, OK, "no error now")
|
||||
TestFiles.remove_dir(directory)
|
||||
|
||||
|
||||
func test_the_settings_are_kept() -> void:
|
||||
var directory := TestFiles.temporary_dir("settings")
|
||||
var store := SaveStore.new(directory)
|
||||
check_eq(store.player_name(), "", "no name at first")
|
||||
store.set_player_name("Ada")
|
||||
store.set_last_address("192.168.1.20")
|
||||
var later := SaveStore.new(directory)
|
||||
check_eq(later.player_name(), "Ada", "name")
|
||||
check_eq(later.last_address(), "192.168.1.20", "address")
|
||||
TestFiles.remove_dir(directory)
|
||||
|
||||
Reference in New Issue
Block a user