75 lines
1.2 KiB
Go
75 lines
1.2 KiB
Go
|
package reply
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestMarshalAndUnmarshal(t *testing.T) {
|
||
|
var a = Ints{1, 2, 3}
|
||
|
data := make([]byte, a.Size())
|
||
|
n, err := a.MarshalTo(data)
|
||
|
if n != 24 {
|
||
|
t.Logf("marshal size must be 24")
|
||
|
t.FailNow()
|
||
|
}
|
||
|
if err != nil {
|
||
|
t.Fatalf("err:%v", err)
|
||
|
}
|
||
|
|
||
|
var b Ints
|
||
|
err = b.Unmarshal(data)
|
||
|
if err != nil {
|
||
|
t.Fatalf("err:%v", err)
|
||
|
}
|
||
|
if b[0] != 1 || b[1] != 2 || b[2] != 3 {
|
||
|
t.Logf("unmarshal failed!b:%v", b)
|
||
|
t.FailNow()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestUncompleteMarshal(t *testing.T) {
|
||
|
var a = Ints{1, 2, 3}
|
||
|
data := make([]byte, a.Size()-7)
|
||
|
n, err := a.MarshalTo(data)
|
||
|
if n != 16 {
|
||
|
t.Logf("marshal size must be 16")
|
||
|
t.FailNow()
|
||
|
}
|
||
|
if err != nil {
|
||
|
t.Fatalf("err:%v", err)
|
||
|
}
|
||
|
|
||
|
var b Ints
|
||
|
err = b.Unmarshal(data)
|
||
|
if err != nil {
|
||
|
t.Fatalf("err:%v", err)
|
||
|
}
|
||
|
if b[0] != 1 || b[1] != 2 {
|
||
|
t.Logf("unmarshal failed!b:%v", b)
|
||
|
t.FailNow()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestNilMarshal(t *testing.T) {
|
||
|
var a = Ints{1, 2, 3}
|
||
|
var data []byte
|
||
|
n, err := a.MarshalTo(data)
|
||
|
if n != 0 {
|
||
|
t.Logf("marshal size must be 0")
|
||
|
t.FailNow()
|
||
|
}
|
||
|
if err != nil {
|
||
|
t.Fatalf("err:%v", err)
|
||
|
}
|
||
|
var b Ints
|
||
|
err = b.Unmarshal(data)
|
||
|
if err != nil {
|
||
|
t.Fatalf("err:%v", err)
|
||
|
}
|
||
|
if b != nil {
|
||
|
t.Logf("unmarshal failed!b:%v", b)
|
||
|
t.FailNow()
|
||
|
}
|
||
|
|
||
|
}
|