ccf9813c80
Alle Texte stehen in einer Tabelle mit Deutsch und Englisch, die das Spiel zur Laufzeit liest. Die Tasten werden in Code angelegt, nach physischer Position. SaveStore verwaltet den Spielerschlüssel dieser Installation, schreibt den Speicherstand über eine temporäre Datei, legt unbrauchbare Stände beiseite und behält die zehn neuesten Aufzeichnungen. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
36 lines
1.1 KiB
GDScript
36 lines
1.1 KiB
GDScript
extends TestCase
|
|
|
|
|
|
func _by_locale() -> Dictionary:
|
|
var result := {}
|
|
for translation in I18n.load_translations(I18n.TEXTS_FILE):
|
|
result[translation.locale] = translation
|
|
return result
|
|
|
|
|
|
func test_german_and_english_exist() -> void:
|
|
var translations := _by_locale()
|
|
check(translations.has("de"), "German")
|
|
check(translations.has("en"), "English")
|
|
|
|
|
|
func test_every_text_exists_in_every_language() -> void:
|
|
var translations := _by_locale()
|
|
var german: Translation = translations["de"]
|
|
var english: Translation = translations["en"]
|
|
var keys := german.get_message_list()
|
|
keys.sort()
|
|
var english_keys := english.get_message_list()
|
|
english_keys.sort()
|
|
check_eq(english_keys, keys, "the same keys")
|
|
for key in keys:
|
|
check(not String(german.get_message(key)).is_empty(), "German text for %s" % key)
|
|
check(not String(english.get_message(key)).is_empty(), "English text for %s" % key)
|
|
|
|
|
|
func test_the_stone_count_has_a_slot_for_the_number() -> void:
|
|
var translations := _by_locale()
|
|
for locale: String in translations:
|
|
var text := String(translations[locale].get_message("STONE_COUNT"))
|
|
check(text.contains("%d"), "%s: %s" % [locale, text])
|