Fix add entity velocity encoding
This commit is contained in:
parent
6413216876
commit
f0279cdb65
4 changed files with 162 additions and 29 deletions
48
internal/protocol/lpvec3_test.go
Normal file
48
internal/protocol/lpvec3_test.go
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
package protocol
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"math"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestLPVec3VanillaFixtures(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
x, y, z float64
|
||||
encoded []byte
|
||||
tolerance float64
|
||||
}{
|
||||
{name: "zero", encoded: []byte{0x00}},
|
||||
{
|
||||
name: "entity velocity", x: 123.0 / 8000.0, y: -456.0 / 8000.0, z: 789.0 / 8000.0,
|
||||
encoded: []byte{0xd9, 0x07, 0x8c, 0x9e, 0xf1, 0x66}, tolerance: 1.0 / 16383.0,
|
||||
},
|
||||
{
|
||||
name: "continuation scale", x: 4.095875,
|
||||
encoded: []byte{0x65, 0xa3, 0x7f, 0xfe, 0xff, 0xff, 0x01}, tolerance: 5.0 / 16383.0,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
w := NewWriter(len(tc.encoded))
|
||||
w.LPVec3(tc.x, tc.y, tc.z)
|
||||
if !bytes.Equal(w.Bytes(), tc.encoded) {
|
||||
t.Fatalf("encoded = % x, want % x", w.Bytes(), tc.encoded)
|
||||
}
|
||||
|
||||
r := NewReader(tc.encoded)
|
||||
x, y, z, err := r.LPVec3()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if math.Abs(x-tc.x) > tc.tolerance || math.Abs(y-tc.y) > tc.tolerance || math.Abs(z-tc.z) > tc.tolerance {
|
||||
t.Fatalf("decoded = (%v, %v, %v), want (%v, %v, %v)", x, y, z, tc.x, tc.y, tc.z)
|
||||
}
|
||||
if r.Remaining() != 0 {
|
||||
t.Fatalf("remaining bytes = %d, want 0", r.Remaining())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue