206 lines
4.7 KiB
Go
206 lines
4.7 KiB
Go
package serialization
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
)
|
|
|
|
func TestMarshal(t *testing.T) {
|
|
buf := NewByteBuf(10)
|
|
|
|
for i := 0; i < 2; i++ {
|
|
x := i != 0
|
|
buf.WriteBool(x)
|
|
if v, err := buf.ReadBool(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
for i := 0; i < 256; i = i*3/2 + 1 {
|
|
x := byte(i)
|
|
buf.WriteByte(x)
|
|
if v, err := buf.ReadByte(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
for i := 0; i < 0x10000; i = i*3/2 + 1 {
|
|
x := int16(i)
|
|
buf.WriteShort(x)
|
|
if v, err := buf.ReadShort(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
for i := 0; i < 0x10000; i = i*3/2 + 1 {
|
|
x := int16(i)
|
|
buf.WriteFshort(x)
|
|
if v, err := buf.ReadFshort(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
for i := 0; i < 0x1000000000; i = i*3/2 + 1 {
|
|
x := int32(i)
|
|
buf.WriteInt(x)
|
|
if v, err := buf.ReadInt(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
for i := 0; i < 0x1000000000; i = i*3/2 + 1 {
|
|
x := int32(i)
|
|
buf.WriteFint(x)
|
|
if v, err := buf.ReadFint(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
for i := 0; i < 0x100000000; i = i*3/2 + 1 {
|
|
x := int(i)
|
|
buf.WriteSize(x)
|
|
if v, err := buf.ReadSize(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
for i := 0; i < 0x100000000; i = i*3/2 + 1 {
|
|
x := int32(i)
|
|
buf.WriteSint(x)
|
|
if v, err := buf.ReadSint(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
for i := 0; i < 0x1000000000000000; i = i*3/2 + 1 {
|
|
x := int64(i)
|
|
buf.WriteLong(x)
|
|
if v, err := buf.ReadLong(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
|
|
x = -x
|
|
buf.WriteLong(x)
|
|
if v, err := buf.ReadLong(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
for i := 0; i < 0x100000000; i = i*3/2 + 1 {
|
|
x := float32(i)
|
|
buf.WriteFloat(x)
|
|
if v, err := buf.ReadFloat(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
for i := 0; i < 0x100000000; i = i*3/2 + 1 {
|
|
x := float64(i)
|
|
buf.WriteDouble(x)
|
|
if v, err := buf.ReadDouble(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
{
|
|
x := "walon"
|
|
buf.WriteString(x)
|
|
if v, err := buf.ReadString(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
{
|
|
x := Vector2{X: 1, Y: 2}
|
|
buf.WriteVector2(x)
|
|
if v, err := buf.ReadVector2(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
{
|
|
x := Vector3{X: 1, Y: 2, Z: 3}
|
|
buf.WriteVector3(x)
|
|
if v, err := buf.ReadVector3(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
{
|
|
x := Vector4{X: 1, Y: 2, Z: 3, W: 4}
|
|
buf.WriteVector4(x)
|
|
if v, err := buf.ReadVector4(); err != nil || v != x {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
{
|
|
x := []byte{1, 2, 3}
|
|
buf.WriteBytes(x)
|
|
if v, err := buf.ReadBytes(); err != nil || !bytes.Equal(x, v) {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
{
|
|
x := []byte{1, 2, 3, 4}
|
|
buf.WriteBytesWithoutSize(x)
|
|
if v, err := buf.ReadFint(); err != nil || v != 0x04030201 {
|
|
t.Fatalf("expect %v, get %v", x, v)
|
|
}
|
|
if buf.Size() != 0 {
|
|
t.Fatalf("expect empty. but size:%v, x:%v", buf.Size(), x)
|
|
}
|
|
}
|
|
|
|
}
|