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) } }