75 lines
1.9 KiB
Python
75 lines
1.9 KiB
Python
import time
|
|
|
|
from untitled import content, migration, model, persistence, rules
|
|
|
|
|
|
def test_save_load_roundtrip(tmp_path):
|
|
original = model.Save(
|
|
version=content.SAVE_VERSION,
|
|
cat=model.Cat(
|
|
"Fry",
|
|
{
|
|
"size": "tiny",
|
|
"color": "tuxedo",
|
|
"eyes": "blue",
|
|
"personality": "judges you silently",
|
|
},
|
|
),
|
|
)
|
|
persistence.save(original, tmp_path)
|
|
loaded = persistence.load("Fry", tmp_path)
|
|
assert loaded.cat.name == "Fry"
|
|
assert loaded.cat.traits == {
|
|
"size": "tiny",
|
|
"color": "tuxedo",
|
|
"eyes": "blue",
|
|
"personality": "judges you silently",
|
|
}
|
|
assert loaded.version == content.SAVE_VERSION
|
|
|
|
|
|
def test_migration():
|
|
v1 = {
|
|
"version": 1,
|
|
"cat": {
|
|
"name": "Fry",
|
|
"traits": {
|
|
"size": "tiny",
|
|
"color": "tuxedo",
|
|
"eyes": "blue",
|
|
"personality": "judges you silently",
|
|
},
|
|
},
|
|
}
|
|
result = migration.migrate(v1)
|
|
assert result["version"] == content.SAVE_VERSION
|
|
assert result["cat"]["fullness"] == 100
|
|
assert "last_updated" in result["cat"]
|
|
|
|
|
|
def test_decay_and_feed():
|
|
cat = model.Save(
|
|
version=content.SAVE_VERSION,
|
|
cat=model.Cat(
|
|
"Fry",
|
|
{
|
|
"size": "tiny",
|
|
"color": "tuxedo",
|
|
"eyes": "blue",
|
|
"personality": "judges you silently",
|
|
},
|
|
),
|
|
)
|
|
rules.reconcile(cat.cat, time.time() + 3600)
|
|
assert cat.cat.fullness < 98
|
|
rules.feed(cat.cat)
|
|
assert cat.cat.fullness > 98 and cat.cat.fullness <= 100
|
|
|
|
|
|
def test_list_saves(tmp_path):
|
|
open(tmp_path / "test.kitten", "w").close()
|
|
open(tmp_path / "test2.kitten", "w").close()
|
|
saves = persistence.list_saves(tmp_path)
|
|
assert "test" in saves
|
|
assert "test2" in saves
|