582b5a6b08
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
73 lines
1.8 KiB
Go
73 lines
1.8 KiB
Go
package empyrionitems
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestLoadItemsConfig(t *testing.T) {
|
|
idx, err := LoadFromFile("ItemsConfig.ecf")
|
|
if err != nil {
|
|
t.Fatalf("LoadFromFile: %v", err)
|
|
}
|
|
if len(idx.Items) < 30 {
|
|
t.Fatalf("expected at least 30 items in ItemsConfig.ecf, got %d", len(idx.Items))
|
|
}
|
|
t.Logf("ItemsConfig: parsed %d items", len(idx.Items))
|
|
|
|
// Spot checks against entries seen in the live ItemsConfig.ecf header sample.
|
|
cases := []struct {
|
|
id int
|
|
name string
|
|
}{
|
|
{1, "MeleePlayer"},
|
|
{12, "Fillertool"},
|
|
{220, "MetalPieces"},
|
|
{240, "EnergyCellHydrogen"},
|
|
{398, "XP"},
|
|
}
|
|
for _, tc := range cases {
|
|
it := idx.ByID(tc.id)
|
|
if it == nil {
|
|
t.Errorf("id %d not found", tc.id)
|
|
continue
|
|
}
|
|
if it.Name != tc.name {
|
|
t.Errorf("id %d: name %q, want %q", tc.id, it.Name, tc.name)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestLoadBlocksConfig(t *testing.T) {
|
|
if _, err := os.Stat("BlocksConfig.ecf"); os.IsNotExist(err) {
|
|
t.Skip("BlocksConfig.ecf not present alongside test")
|
|
}
|
|
idx, err := LoadFromFile("BlocksConfig.ecf")
|
|
if err != nil {
|
|
t.Fatalf("LoadFromFile: %v", err)
|
|
}
|
|
if len(idx.Items) < 1500 {
|
|
t.Fatalf("expected >1500 entries in BlocksConfig.ecf, got %d", len(idx.Items))
|
|
}
|
|
t.Logf("BlocksConfig: parsed %d entries", len(idx.Items))
|
|
|
|
// Spot check by name (IDs evolve across versions; names are stable).
|
|
for _, name := range []string{"Air", "Stone", "Grass"} {
|
|
if idx.ByName(name) == nil {
|
|
t.Errorf("expected to find %q", name)
|
|
}
|
|
}
|
|
|
|
// Search must return matches for common item families.
|
|
hits := idx.Search("Constructor", "", 50)
|
|
if len(hits) < 2 {
|
|
t.Errorf("search 'Constructor' should hit multiple devices, got %d", len(hits))
|
|
}
|
|
for _, h := range hits[:1] {
|
|
if !strings.Contains(strings.ToLower(h.Name), "constructor") {
|
|
t.Errorf("unexpected match: %+v", h)
|
|
}
|
|
}
|
|
}
|