52 lines
1.6 KiB
Go
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)
|
|
}
|
|
}
|