Files
panel/pkg/empyrionitems/items_test.go
T
dbledeez 8a94ffd58f panel public release
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 01:13:02 -07:00

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