Files

52 lines
1.6 KiB
Go

package catalogs
import (
"os"
"path/filepath"
"testing"
)
func TestItemCatalogPathsAndLookup(t *testing.T) {
for _, file := range []string{"ItemCatalog.json", "ConsumableConfig.json"} {
dir := t.TempDir()
if err := os.WriteFile(filepath.Join(dir, file), []byte(`{"records":[{"Id":36000000,"Name":"Test","Quality":2,"SubType":18}]}`), 0600); err != nil {
t.Fatal(err)
}
entries, err := LoadItemCatalog4229938(dir)
if err != nil || len(entries) != 1 {
t.Fatalf("%s: %v %v", file, entries, err)
}
entry := ItemCatalog4229938_Find(36000000)
if entry == nil || entry.Name != "Test" || entry.Quality != 2 {
t.Fatalf("bad projection: %+v", entry)
}
entry.Name = "mutated"
if ItemCatalog4229938_Find(36000000).Name != "Test" {
t.Fatal("caller mutated cache")
}
}
empty := t.TempDir()
if _, err := LoadItemCatalog4229938(empty); err == nil {
t.Fatal("reused another directory's cache")
}
if err := os.WriteFile(filepath.Join(empty, "ItemCatalog.json"), []byte(`{"records":[]}`), 0600); err != nil {
t.Fatal(err)
}
if entries, err := LoadItemCatalog4229938(empty); err != nil || len(entries) != 0 {
t.Fatalf("retry after missing file: %v %v", entries, err)
}
if ItemCatalog4229938_Find(36000000) != nil {
t.Fatal("stale current catalog")
}
}
func TestShippedItemCatalog(t *testing.T) {
entries, err := LoadItemCatalog4229938("../../data/client_data/Configs")
if err != nil || len(entries) == 0 {
t.Fatalf("shipped consumables not loadable: %v", err)
}
if entry := ItemCatalog4229938_Find(36000000); entry == nil || entry.SubType != 18 {
t.Fatalf("missing known item: %+v", entry)
}
}