This commit is contained in:
2026-09-21 09:53:46 +08:00
commit 98d84a65f0
149 changed files with 34669 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
package readonly
import (
"bytes"
"path/filepath"
"testing"
"bd2server/internal/fixture"
"bd2server/internal/wire"
)
func TestSeedByteCompatibility(t *testing.T) {
root := filepath.Join("..", "..", "..", "data", "capture", "2.34.13", "20260920-003254")
set, err := fixture.Load(root)
if err != nil {
t.Skipf("optional capture unavailable: %v", err)
}
key, err := set.SessionKey()
if err != nil {
t.Fatal(err)
}
seed, err := Load(filepath.Join("..", "..", "seed", "v2_34_13", "readonly.json"))
if err != nil {
t.Fatal(err)
}
want := map[string]struct {
PacketCode int
Proto []byte
}{}
for batch := 1; batch <= 2; batch++ {
body, err := set.BatchResponse(batch)
if err != nil {
t.Fatal(err)
}
items, decoded, err := fixture.DecodeBatch(body, []byte(key))
if err != nil {
t.Fatal(err)
}
for _, item := range items {
if _, ok := seed.Responses[item.Path]; ok {
want[item.Path] = struct {
PacketCode int
Proto []byte
}{item.Response.PacketCode, decoded[item.Path]}
}
}
}
if len(want) != len(seed.Responses) {
t.Fatalf("capture has %d seed responses, want %d", len(want), len(seed.Responses))
}
for path, expected := range want {
code, got, ok, err := seed.Handle(path, wire.AppendVarint(nil, 1, 999))
if err != nil || !ok || code != expected.PacketCode || !bytes.Equal(got, expected.Proto) {
t.Errorf("%s: code=%d want=%d equal=%v err=%v", path, code, expected.PacketCode, bytes.Equal(got, expected.Proto), err)
}
}
}