57 lines
2.0 KiB
Odin
57 lines
2.0 KiB
Odin
package tests
|
|
|
|
import "core:fmt"
|
|
import "core:os"
|
|
import "core:testing"
|
|
import "../src/adapters"
|
|
import "../src/core"
|
|
import "../src/shared"
|
|
|
|
make_temp_project_path :: proc(t: ^testing.T) -> (string, string) {
|
|
tmp_dir, err := os.make_directory_temp("", "comic-odin-*", context.temp_allocator)
|
|
if err != nil {
|
|
testing.expect(t, false, "failed to create temp directory")
|
|
return "", ""
|
|
}
|
|
project_path := fmt.aprintf("%s/project.comic.json", tmp_dir)
|
|
return tmp_dir, project_path
|
|
}
|
|
|
|
@test
|
|
storage_save_load_roundtrip :: proc(t: ^testing.T) {
|
|
tmp_dir, project_path := make_temp_project_path(t)
|
|
defer os.remove_all(tmp_dir)
|
|
defer delete(project_path)
|
|
|
|
state := core.new_initial_state()
|
|
state.story_idea = "An inventor discovers a portal"
|
|
state.story_genre = "scifi"
|
|
state.user_mode = .Professional
|
|
|
|
err := adapters.save_project(project_path, state)
|
|
testing.expect(t, shared.is_ok(err), "save_project should succeed")
|
|
|
|
loaded, lerr := adapters.load_project(project_path)
|
|
defer core.dispose_state_owned(&loaded)
|
|
testing.expect(t, shared.is_ok(lerr), "load_project should succeed")
|
|
testing.expect(t, loaded.story_idea == state.story_idea, "story_idea should round-trip")
|
|
testing.expect(t, loaded.story_genre == state.story_genre, "story_genre should round-trip")
|
|
testing.expect(t, loaded.user_mode == state.user_mode, "user_mode should round-trip")
|
|
}
|
|
|
|
@test
|
|
storage_creates_asset_cache_dir :: proc(t: ^testing.T) {
|
|
tmp_dir, project_path := make_temp_project_path(t)
|
|
defer os.remove_all(tmp_dir)
|
|
defer delete(project_path)
|
|
|
|
state := core.new_initial_state()
|
|
err := adapters.save_project(project_path, state)
|
|
testing.expect(t, shared.is_ok(err), "save_project should succeed")
|
|
|
|
asset_dir, derr := adapters.derive_asset_cache_dir(project_path)
|
|
testing.expect(t, shared.is_ok(derr), "derive_asset_cache_dir should succeed")
|
|
testing.expect(t, os.exists(asset_dir), "asset cache directory should exist")
|
|
testing.expect(t, os.is_dir(asset_dir), "asset cache directory should be a directory")
|
|
}
|