panel v0.9.2 — public release
Self-hostable game server control panel: Go controller + agent, 26 game modules, embedded web UI. One-line install via install.sh / install.ps1. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user