100 lines
2.4 KiB
Go
100 lines
2.4 KiB
Go
package worker
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
)
|
|
|
|
var (
|
|
outpackcases = map[uint32]map[string]string{
|
|
dtCanDo: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x01\x00\x00\x00\x01a",
|
|
"data": "a",
|
|
},
|
|
dtCanDoTimeout: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x17\x00\x00\x00\x06a\x00\x00\x00\x00\x01",
|
|
"data": "a\x00\x00\x00\x00\x01",
|
|
},
|
|
dtCantDo: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x02\x00\x00\x00\x01a",
|
|
"data": "a",
|
|
},
|
|
dtResetAbilities: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x03\x00\x00\x00\x00",
|
|
},
|
|
dtPreSleep: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x04\x00\x00\x00\x00",
|
|
},
|
|
dtGrabJob: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x09\x00\x00\x00\x00",
|
|
},
|
|
dtGrabJobUniq: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x1E\x00\x00\x00\x00",
|
|
},
|
|
dtWorkData: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x1C\x00\x00\x00\x03a\x00b",
|
|
"data": "a\x00b",
|
|
},
|
|
dtWorkWarning: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x1D\x00\x00\x00\x03a\x00b",
|
|
"data": "a\x00b",
|
|
},
|
|
dtWorkStatus: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x0C\x00\x00\x00\x08a\x0050\x00100",
|
|
"data": "a\x0050\x00100",
|
|
},
|
|
dtWorkComplete: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x0D\x00\x00\x00\x03a\x00b",
|
|
"data": "a\x00b",
|
|
},
|
|
dtWorkFail: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x0E\x00\x00\x00\x01a",
|
|
"handle": "a",
|
|
},
|
|
dtWorkException: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x19\x00\x00\x00\x03a\x00b",
|
|
"data": "a\x00b",
|
|
},
|
|
dtSetClientId: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x16\x00\x00\x00\x01a",
|
|
"data": "a",
|
|
},
|
|
dtAllYours: map[string]string{
|
|
"src": "\x00REQ\x00\x00\x00\x18\x00\x00\x00\x00",
|
|
},
|
|
}
|
|
)
|
|
|
|
func TestOutPack(t *testing.T) {
|
|
for k, v := range outpackcases {
|
|
outpack := getOutPack()
|
|
outpack.dataType = k
|
|
if handle, ok := v["handle"]; ok {
|
|
outpack.handle = handle
|
|
}
|
|
if data, ok := v["data"]; ok {
|
|
outpack.data = []byte(data)
|
|
}
|
|
data := outpack.Encode()
|
|
if bytes.Compare([]byte(v["src"]), data) != 0 {
|
|
t.Errorf("%d: %X expected, %X got.", k, v["src"], data)
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkEncode(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
for k, v := range outpackcases {
|
|
outpack := getOutPack()
|
|
outpack.dataType = k
|
|
if handle, ok := v["handle"]; ok {
|
|
outpack.handle = handle
|
|
}
|
|
if data, ok := v["data"]; ok {
|
|
outpack.data = []byte(data)
|
|
}
|
|
outpack.Encode()
|
|
}
|
|
}
|
|
}
|