v1.0.0
Initial release.
This commit is contained in:
328
funcs_test.go
Normal file
328
funcs_test.go
Normal file
@@ -0,0 +1,328 @@
|
||||
package wireproto
|
||||
|
||||
import (
|
||||
`bytes`
|
||||
`encoding/hex`
|
||||
`encoding/json`
|
||||
`fmt`
|
||||
"testing"
|
||||
|
||||
// `github.com/davecgh/go-spew/spew`
|
||||
)
|
||||
|
||||
var (
|
||||
testSimpleReqEncoded []byte = []byte{
|
||||
0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00,
|
||||
0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x76, 0x61, 0x6c, 0x75,
|
||||
0x65, 0x31, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
|
||||
0x76, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x03, 0x04,
|
||||
}
|
||||
testSimpleRespEncoded []byte = []byte{
|
||||
0x06, 0x1b, 0xce, 0xfd, 0x07, 0x20, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x01,
|
||||
0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x01,
|
||||
0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x10,
|
||||
0x64, 0x61, 0x74, 0x61, 0x31, 0x3c, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x72, 0x79, 0x20,
|
||||
0x64, 0x61, 0x74, 0x61, 0x3e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x76, 0x61, 0x6c, 0x75, 0x65,
|
||||
0x31, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x76,
|
||||
0x61, 0x6c, 0x75, 0x65, 0x32, 0x03, 0x04,
|
||||
}
|
||||
testMultiReqEncoded []byte = []byte{
|
||||
0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00,
|
||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
|
||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x31, 0x41, 0x76, 0x61,
|
||||
0x6c, 0x75, 0x65, 0x41, 0x31, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x66, 0x69,
|
||||
0x65, 0x6c, 0x64, 0x41, 0x31, 0x42, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x31, 0x42, 0x00, 0x00,
|
||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x66, 0x69,
|
||||
0x65, 0x6c, 0x64, 0x41, 0x32, 0x41, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x32, 0x41, 0x00, 0x00,
|
||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x32, 0x42, 0x76, 0x61,
|
||||
0x6c, 0x75, 0x65, 0x41, 0x32, 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
|
||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x66, 0x69,
|
||||
0x65, 0x6c, 0x64, 0x42, 0x31, 0x41, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x31, 0x41, 0x00, 0x00,
|
||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x31, 0x42, 0x76, 0x61,
|
||||
0x6c, 0x75, 0x65, 0x42, 0x31, 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
|
||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x32, 0x41, 0x76, 0x61,
|
||||
0x6c, 0x75, 0x65, 0x42, 0x32, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x66, 0x69,
|
||||
0x65, 0x6c, 0x64, 0x42, 0x32, 0x42, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x32, 0x42, 0x03, 0x04,
|
||||
}
|
||||
testMultiRespEncoded []byte = []byte{
|
||||
0x06, 0x1b, 0xae, 0x88, 0xbe, 0xd2, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02,
|
||||
0x00, 0x00, 0x01, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x01,
|
||||
0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10,
|
||||
0x64, 0x61, 0x74, 0x61, 0x41, 0x31, 0x3c, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x72, 0x79,
|
||||
0x20, 0x64, 0x61, 0x74, 0x61, 0x3e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
|
||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x31, 0x41, 0x76, 0x61,
|
||||
0x6c, 0x75, 0x65, 0x41, 0x31, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x66, 0x69,
|
||||
0x65, 0x6c, 0x64, 0x41, 0x31, 0x42, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x31, 0x42, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
|
||||
0x00, 0x10, 0x64, 0x61, 0x74, 0x61, 0x41, 0x32, 0x3c, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61,
|
||||
0x72, 0x79, 0x20, 0x64, 0x61, 0x74, 0x61, 0x3e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30,
|
||||
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x32, 0x41,
|
||||
0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x32, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08,
|
||||
0x66, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x32, 0x42, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x32, 0x42,
|
||||
0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e,
|
||||
0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x64, 0x61, 0x74, 0x61,
|
||||
0x42, 0x31, 0x3c, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x72, 0x79, 0x20, 0x64, 0x61, 0x74,
|
||||
0x61, 0x3e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
|
||||
0x00, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x31, 0x41, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42,
|
||||
0x31, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42,
|
||||
0x31, 0x42, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x31, 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x1e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x64, 0x61,
|
||||
0x74, 0x61, 0x42, 0x32, 0x3c, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x72, 0x79, 0x20, 0x64,
|
||||
0x61, 0x74, 0x61, 0x3e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x08,
|
||||
0x00, 0x00, 0x00, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x32, 0x41, 0x76, 0x61, 0x6c, 0x75,
|
||||
0x65, 0x42, 0x32, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x66, 0x69, 0x65, 0x6c,
|
||||
0x64, 0x42, 0x32, 0x42, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x32, 0x42, 0x03, 0x04,
|
||||
}
|
||||
)
|
||||
|
||||
const (
|
||||
testPrintModel bool = true
|
||||
)
|
||||
|
||||
func TestSimpleRequestMarshal(t *testing.T) {
|
||||
|
||||
var err error
|
||||
var b []byte
|
||||
|
||||
testSimpleReq.Resolve()
|
||||
|
||||
if b, err = testSimpleReq.MarshalBinary(); err != nil {
|
||||
t.Fatalf("Failed marshaling request: %v", err)
|
||||
}
|
||||
|
||||
t.Logf("Target:\n%v", hex.EncodeToString(testSimpleReqEncoded))
|
||||
t.Logf("Marshaled:\n%v", hex.EncodeToString(b))
|
||||
if !bytes.Equal(b, testSimpleReqEncoded) {
|
||||
t.Fatal("Marshaled request binary does not match")
|
||||
}
|
||||
|
||||
_ = b
|
||||
}
|
||||
|
||||
func TestSimpleRequestUnmarshal(t *testing.T) {
|
||||
|
||||
var err error
|
||||
var b []byte
|
||||
var b2 []byte
|
||||
var req *Request = new(Request)
|
||||
|
||||
testSimpleReq.Resolve()
|
||||
|
||||
if err = req.UnmarshalBinary(testSimpleReqEncoded); err != nil {
|
||||
t.Fatalf("Error when unmarshaling: %v", err)
|
||||
}
|
||||
|
||||
// if !reflect.DeepEqual(req, testSimpleReq) {
|
||||
// t.Fatalf("Unmarshaled request and canonical request do not match!")
|
||||
// }
|
||||
|
||||
// t.Log(spew.Sdump(req))
|
||||
if b, err = json.MarshalIndent(req, "", " "); err != nil {
|
||||
t.Fatalf("Failed to marshal to JSON: %v", err)
|
||||
}
|
||||
if b2, err = json.MarshalIndent(testSimpleReq, "", " "); err != nil {
|
||||
t.Fatalf("Failed to marshal to JSON: %v", err)
|
||||
}
|
||||
|
||||
if !bytes.Equal(b, b2) {
|
||||
// t.Logf("Unmarshaled JSON conversion:\n%v\nCanonical:\n%v", hex.EncodeToString(b), hex.EncodeToString(b2))
|
||||
t.Logf("Unmarshaled JSON conversion:\n%v\nCanonical:\n%v", string(b), string(b2))
|
||||
t.Fatalf("Unmarshaled request and canonical request do not match!")
|
||||
}
|
||||
|
||||
t.Logf(string(b))
|
||||
|
||||
_, _ = b, b2
|
||||
}
|
||||
|
||||
func TestSimpleResponseMarshal(t *testing.T) {
|
||||
|
||||
var err error
|
||||
var b []byte
|
||||
|
||||
testSimpleResp.Resolve()
|
||||
|
||||
if b, err = testSimpleResp.MarshalBinary(); err != nil {
|
||||
t.Fatalf("Failed marshaling request: %v", err)
|
||||
}
|
||||
|
||||
t.Logf("Target:\n%v", hex.EncodeToString(testSimpleRespEncoded))
|
||||
t.Logf("Marshaled:\n%v", hex.EncodeToString(b))
|
||||
if !bytes.Equal(b, testSimpleRespEncoded) {
|
||||
t.Fatal("Marshaled request binary does not match")
|
||||
}
|
||||
|
||||
_ = b
|
||||
}
|
||||
|
||||
func TestSimpleResponseUnmarshal(t *testing.T) {
|
||||
|
||||
var err error
|
||||
var b []byte
|
||||
var b2 []byte
|
||||
var resp *Response = new(Response)
|
||||
|
||||
testSimpleResp.Resolve()
|
||||
|
||||
if err = resp.UnmarshalBinary(testSimpleRespEncoded); err != nil {
|
||||
t.Fatalf("Error when unmarshaling: %v", err)
|
||||
}
|
||||
|
||||
// if !reflect.DeepEqual(resp, testSimpleResp) {
|
||||
// t.Fatalf("Unmarshaled response and canonical response do not match!")
|
||||
// }
|
||||
|
||||
// t.Log(spew.Sdump(resp))
|
||||
if b, err = json.MarshalIndent(resp, "", " "); err != nil {
|
||||
t.Fatalf("Failed to marshal to JSON: %v", err)
|
||||
}
|
||||
if b2, err = json.MarshalIndent(testSimpleResp, "", " "); err != nil {
|
||||
t.Fatalf("Failed to marshal to JSON: %v", err)
|
||||
}
|
||||
|
||||
if !bytes.Equal(b, b2) {
|
||||
// t.Logf("Unmarshaled JSON conversion:\n%v\nCanonical:\n%v", hex.EncodeToString(b), hex.EncodeToString(b2))
|
||||
t.Logf("Unmarshaled JSON conversion:\n%v\nCanonical:\n%v", string(b), string(b2))
|
||||
t.Fatalf("Unmarshaled response and canonical response do not match!")
|
||||
}
|
||||
|
||||
t.Logf(string(b))
|
||||
|
||||
_, _ = b, b2
|
||||
}
|
||||
|
||||
func TestMultiRequestMarshal(t *testing.T) {
|
||||
|
||||
var err error
|
||||
var b []byte
|
||||
|
||||
testMultiReq.Resolve()
|
||||
|
||||
if b, err = testMultiReq.MarshalBinary(); err != nil {
|
||||
t.Fatalf("Failed marshaling request: %v", err)
|
||||
}
|
||||
|
||||
t.Logf("Target:\n%v", hex.EncodeToString(testMultiReqEncoded))
|
||||
t.Logf("Marshaled:\n%v", hex.EncodeToString(b))
|
||||
if !bytes.Equal(b, testMultiReqEncoded) {
|
||||
t.Fatal("Marshaled request binary does not match")
|
||||
}
|
||||
|
||||
_ = b
|
||||
}
|
||||
|
||||
func TestMultiRequestUnmarshal(t *testing.T) {
|
||||
|
||||
var err error
|
||||
var b []byte
|
||||
var b2 []byte
|
||||
var req *Request = new(Request)
|
||||
|
||||
testMultiReq.Resolve()
|
||||
|
||||
if err = req.UnmarshalBinary(testMultiReqEncoded); err != nil {
|
||||
t.Fatalf("Error when unmarshaling: %v", err)
|
||||
}
|
||||
|
||||
// if !reflect.DeepEqual(req, testMultiReq) {
|
||||
// t.Fatalf("Unmarshaled request and canonical request do not match!")
|
||||
// }
|
||||
|
||||
// t.Log(spew.Sdump(req))
|
||||
if b, err = json.MarshalIndent(req, "", " "); err != nil {
|
||||
t.Fatalf("Failed to marshal to JSON: %v", err)
|
||||
}
|
||||
if b2, err = json.MarshalIndent(testMultiReq, "", " "); err != nil {
|
||||
t.Fatalf("Failed to marshal to JSON: %v", err)
|
||||
}
|
||||
|
||||
if !bytes.Equal(b, b2) {
|
||||
// t.Logf("Unmarshaled JSON conversion:\n%v\nCanonical:\n%v", hex.EncodeToString(b), hex.EncodeToString(b2))
|
||||
t.Logf("Unmarshaled JSON conversion:\n%v\nCanonical:\n%v", string(b), string(b2))
|
||||
t.Fatalf("Unmarshaled request and canonical request do not match!")
|
||||
}
|
||||
|
||||
t.Logf(string(b))
|
||||
|
||||
_, _ = b, b2
|
||||
}
|
||||
|
||||
func TestMultiResponseMarshal(t *testing.T) {
|
||||
|
||||
var err error
|
||||
var b []byte
|
||||
|
||||
testMultiResp.Resolve()
|
||||
|
||||
if b, err = testMultiResp.MarshalBinary(); err != nil {
|
||||
t.Fatalf("Failed marshaling request: %v", err)
|
||||
}
|
||||
|
||||
t.Logf("Target:\n%v", hex.EncodeToString(testMultiRespEncoded))
|
||||
t.Logf("Marshaled:\n%v", hex.EncodeToString(b))
|
||||
if !bytes.Equal(b, testMultiRespEncoded) {
|
||||
t.Fatal("Marshaled request binary does not match")
|
||||
}
|
||||
|
||||
_ = b
|
||||
}
|
||||
|
||||
func TestMultiResponseUnmarshal(t *testing.T) {
|
||||
|
||||
var err error
|
||||
var b []byte
|
||||
var b2 []byte
|
||||
var resp *Response = new(Response)
|
||||
|
||||
testMultiResp.Resolve()
|
||||
|
||||
if err = resp.UnmarshalBinary(testMultiRespEncoded); err != nil {
|
||||
t.Fatalf("Error when unmarshaling: %v", err)
|
||||
}
|
||||
|
||||
// if !reflect.DeepEqual(resp, testMultiResp) {
|
||||
// t.Fatalf("Unmarshaled response and canonical response do not match!")
|
||||
// }
|
||||
|
||||
// t.Log(spew.Sdump(resp))
|
||||
if b, err = json.MarshalIndent(resp, "", " "); err != nil {
|
||||
t.Fatalf("Failed to marshal to JSON: %v", err)
|
||||
}
|
||||
if b2, err = json.MarshalIndent(testMultiResp, "", " "); err != nil {
|
||||
t.Fatalf("Failed to marshal to JSON: %v", err)
|
||||
}
|
||||
|
||||
if !bytes.Equal(b, b2) {
|
||||
// t.Logf("Unmarshaled JSON conversion:\n%v\nCanonical:\n%v", hex.EncodeToString(b), hex.EncodeToString(b2))
|
||||
t.Logf("Unmarshaled JSON conversion:\n%v\nCanonical:\n%v", string(b), string(b2))
|
||||
t.Fatalf("Unmarshaled response and canonical response do not match!")
|
||||
}
|
||||
|
||||
t.Logf(string(b))
|
||||
|
||||
_, _ = b, b2
|
||||
}
|
||||
|
||||
func TestModels(t *testing.T) {
|
||||
|
||||
testSimpleReq.Resolve()
|
||||
testSimpleResp.Resolve()
|
||||
testMultiReq.Resolve()
|
||||
testMultiResp.Resolve()
|
||||
|
||||
if testPrintModel {
|
||||
fmt.Println("// REQUEST (Simple)")
|
||||
fmt.Println(testSimpleReq.Model())
|
||||
|
||||
fmt.Println("// RESPONSE (Simple)")
|
||||
fmt.Println(testSimpleResp.Model())
|
||||
|
||||
fmt.Println("// REQUEST (Complex)")
|
||||
fmt.Println(testMultiReq.Model())
|
||||
|
||||
fmt.Println("// RESPONSE (Complex)")
|
||||
fmt.Println(testMultiResp.Model())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user