package xturbo_test import ( "bytes" "testing" "bnema.dev/xturbo" "bnema.dev/xturbo/internal/xtest" "bnema.dev/xturbo/xproto" ) func TestBigRequestGolden(t *testing.T) { prefix, err := xtest.LoadHex("testdata/golden/xproto/ChangePropertyBig.req.hex") if err != nil { t.Fatal(err) } data := make([]byte, 262120) for i := range data { data[i] = byte(i) } want := append(prefix, data...) b := xturbo.NewBuf(0) if xproto.ChangeProperty(b, xproto.PropModeReplace, 0x0300009f, 0xe7, 0x1f, 8, uint32(len(data)), data) != 0 || b.Err() != xturbo.ErrRequestTooLarge || b.Len() != 0 { t.Fatal("core limit must reject a big request before BIG-REQUESTS is enabled") } b = xturbo.NewBuf(0) xturbo.SetMaxReqWords(b, 0x400000) if xproto.ChangeProperty(b, xproto.PropModeReplace, 0x0300009f, 0xe7, 0x1f, 8, uint32(len(data)), data) != 1 || b.Err() != nil { t.Fatal(b.Err()) } if !bytes.Equal(b.Bytes(), want) { t.Fatalf("got %x want %x", b.Bytes()[:32], want[:32]) } }