go_dreamfactory/sys/configure/serialization/marshal_test.go
2022-05-31 13:42:54 +08:00

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)
}
}
}