package gameserver import ( "testing" "gac-hkrpg-go/internal/common" ) func TestClientRelicCatalogFiltersUnsupportedInventoryEntries(t *testing.T) { chdirRepositoryRoot(t) if _, err := loadInventoryItems(); err != nil { t.Fatal(err) } if len(inventoryCatalog.Relics) == 0 { t.Fatal("Relic catalog is empty") } validID := inventoryCatalog.Relics[0].RelicID for _, relic := range inventoryCatalog.Relics { if relic.RelicID/10000 >= 7 && relic.RelicID/10000 <= 9 { t.Fatalf("synthetic Relic ID %d appears in the Client catalog", relic.RelicID) } } got, omitted, err := supportedProtoRelics([]common.Relic{ {RelicID: validID, InternalUID: 1}, {RelicID: 71011, InternalUID: 2}, {RelicID: 63295, InternalUID: 3}, }) if err != nil { t.Fatal(err) } if len(got) != 1 || got[0].Tid != validID || omitted != 2 { t.Fatalf("filtered Relics = %+v, omitted %d; want only Client-supported ID %d", got, omitted, validID) } } func TestBagMaterialsAppliesOnlyCatalogBackedOverrides(t *testing.T) { chdirRepositoryRoot(t) itemIDs, err := loadInventoryItems() if err != nil { t.Fatal(err) } if len(itemIDs) == 0 { t.Fatal("inventory catalog is empty") } foodAuto := true player := &common.FreesrData{ Avatars: map[uint32]*common.AvatarJson{}, Materials: map[uint32]uint32{itemIDs[0]: 0, 99999999: 77}, TechniqueFoodStock: map[uint32]uint32{}, AutoTechniqueFood: &foodAuto, } materials, err := bagMaterials(player) if err != nil { t.Fatal(err) } counts := make(map[uint32]uint32, len(materials)) for _, material := range materials { counts[material.Tid] = material.Num } if count, ok := counts[itemIDs[0]]; !ok || count != 0 { t.Fatalf("catalog item override = %d, present=%v; want explicit zero", count, ok) } if _, ok := counts[99999999]; ok { t.Fatal("unknown item override leaked into the Client bag") } }