message-size-increase #3
@ -71,136 +71,7 @@ func init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGenerateRunEncode(test *testing.T) {
|
func TestGenerateRunEncodeDecode(test *testing.T) {
|
||||||
testGenerateRun(test, &exampleProtocol, "encode", `
|
|
||||||
// imports
|
|
||||||
`, `
|
|
||||||
// test case
|
|
||||||
log.Println("MessageConnect")
|
|
||||||
messageConnect := MessageConnect {
|
|
||||||
Name: "rarity",
|
|
||||||
Password: "gems",
|
|
||||||
}
|
|
||||||
testEncode(
|
|
||||||
&messageConnect,
|
|
||||||
tu.S(0xE1, 0x02).AddVar(
|
|
||||||
[]byte { 0x00, 0x00, 0x86, 'r', 'a', 'r', 'i', 't', 'y' },
|
|
||||||
[]byte { 0x00, 0x01, 0x84, 'g', 'e', 'm', 's' },
|
|
||||||
))
|
|
||||||
log.Println("MessageUserList")
|
|
||||||
messageUserList := MessageUserList {
|
|
||||||
Users: []User {
|
|
||||||
User {
|
|
||||||
Name: "rarity",
|
|
||||||
Bio: "asdjads",
|
|
||||||
Followers: 0x324,
|
|
||||||
},
|
|
||||||
User {
|
|
||||||
Name: "deez nuts",
|
|
||||||
Bio: "logy",
|
|
||||||
Followers: 0x8000,
|
|
||||||
},
|
|
||||||
User {
|
|
||||||
Name: "creekflow",
|
|
||||||
Bio: "im creekflow",
|
|
||||||
Followers: 0x3894,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
testEncode(
|
|
||||||
&messageUserList,
|
|
||||||
tu.S(0xE1, 0x01, 0x00, 0x00,
|
|
||||||
0xC1, 0x03, 0xE1,
|
|
||||||
).Add(0x03).AddVar(
|
|
||||||
[]byte { 0x00, 0x00, 0x86, 'r', 'a', 'r', 'i', 't', 'y' },
|
|
||||||
[]byte { 0x00, 0x01, 0x87, 'a', 's', 'd', 'j', 'a', 'd', 's' },
|
|
||||||
[]byte { 0x00, 0x02, 0x23, 0x00, 0x00, 0x03, 0x24 },
|
|
||||||
).Add(0x03).AddVar(
|
|
||||||
[]byte { 0x00, 0x00, 0x89, 'd', 'e', 'e', 'z', ' ', 'n', 'u', 't', 's' },
|
|
||||||
[]byte { 0x00, 0x01, 0x84, 'l', 'o', 'g', 'y' },
|
|
||||||
[]byte { 0x00, 0x02, 0x23, 0x00, 0x00, 0x80, 0x00 },
|
|
||||||
).Add(0x03).AddVar(
|
|
||||||
[]byte { 0x00, 0x00, 0x89, 'c', 'r', 'e', 'e', 'k', 'f', 'l', 'o', 'w' },
|
|
||||||
[]byte { 0x00, 0x01, 0x8C, 'i', 'm', ' ', 'c', 'r', 'e', 'e', 'k', 'f',
|
|
||||||
'l', 'o', 'w' },
|
|
||||||
[]byte { 0x00, 0x02, 0x23, 0x00, 0x00, 0x38, 0x94 },
|
|
||||||
))
|
|
||||||
log.Println("MessagePulse")
|
|
||||||
messagePulse := MessagePulse {
|
|
||||||
Index: 9,
|
|
||||||
Offset: -0x3521,
|
|
||||||
X: 45.389,
|
|
||||||
Y: 294.1,
|
|
||||||
Z: 384729384.234892034,
|
|
||||||
}
|
|
||||||
testEncode(
|
|
||||||
&messagePulse,
|
|
||||||
tu.S(0xE1, 0x05).AddVar(
|
|
||||||
[]byte { 0x00, 0x00, 0x09 },
|
|
||||||
[]byte { 0x00, 0x01, 0x41, 0xCA, 0xDF },
|
|
||||||
[]byte { 0x00, 0x02, 0x61, 0x51, 0xAC },
|
|
||||||
[]byte { 0x00, 0x03, 0x63, 0x43, 0x93, 0x0C, 0xCD },
|
|
||||||
[]byte { 0x00, 0x04, 0x67, 0x41, 0xB6, 0xEE, 0x81, 0x28, 0x3C, 0x21, 0xE2 },
|
|
||||||
))
|
|
||||||
log.Println("MessageNestedArray")
|
|
||||||
uint8s := func(n int) []uint8 {
|
|
||||||
array := make([]uint8, n)
|
|
||||||
for index := range array {
|
|
||||||
array[index] = uint8(index + 1) | 0xF0
|
|
||||||
}
|
|
||||||
return array
|
|
||||||
}
|
|
||||||
messageNestedArray := MessageNestedArray {
|
|
||||||
uint8s(6),
|
|
||||||
uint8s(35),
|
|
||||||
}
|
|
||||||
testEncode(
|
|
||||||
&messageNestedArray,
|
|
||||||
tu.S(0xC1, 0x02, 0xC1,
|
|
||||||
0x06, 0x20, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6,
|
|
||||||
35, 0x20, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6,
|
|
||||||
0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC,
|
|
||||||
0xFD, 0xFE, 0xFF, 0xF0, 0xF1, 0xF2,
|
|
||||||
0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8,
|
|
||||||
0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE,
|
|
||||||
0xFF, 0xF0, 0xF1, 0xF2, 0xF3))
|
|
||||||
log.Println("MessageIntegers")
|
|
||||||
messageIntegers := MessageIntegers {
|
|
||||||
U5: 0x13,
|
|
||||||
U8: 0xC9,
|
|
||||||
U16: 0x34C9,
|
|
||||||
U32: 0x10E134C9,
|
|
||||||
U64: 0x639109BC10E134C9,
|
|
||||||
I8: 0x35,
|
|
||||||
I16: 0x34C9,
|
|
||||||
I32: 0x10E134C9,
|
|
||||||
I64: 0x639109BC10E134C9,
|
|
||||||
NI8: -0x35,
|
|
||||||
NI16: -0x34C9,
|
|
||||||
NI32: -0x10E134C9,
|
|
||||||
NI64: -0x639109BC10E134C9,
|
|
||||||
}
|
|
||||||
testEncode(
|
|
||||||
&messageIntegers,
|
|
||||||
tu.S(0xE1, 13).AddVar(
|
|
||||||
[]byte { 0x00, 0x00, 0x13 },
|
|
||||||
[]byte { 0x00, 0x01, 0x20, 0xC9 },
|
|
||||||
[]byte { 0x00, 0x02, 0x21, 0x34, 0xC9 },
|
|
||||||
[]byte { 0x00, 0x03, 0x23, 0x10, 0xE1, 0x34, 0xC9 },
|
|
||||||
[]byte { 0x00, 0x04, 0x27, 0x63, 0x91, 0x09, 0xBC, 0x10, 0xE1, 0x34, 0xC9 },
|
|
||||||
[]byte { 0x00, 0x06, 0x40, 0x35 },
|
|
||||||
[]byte { 0x00, 0x07, 0x41, 0x34, 0xC9 },
|
|
||||||
[]byte { 0x00, 0x08, 0x43, 0x10, 0xE1, 0x34, 0xC9 },
|
|
||||||
[]byte { 0x00, 0x09, 0x47, 0x63, 0x91, 0x09, 0xBC, 0x10, 0xE1, 0x34, 0xC9 },
|
|
||||||
[]byte { 0x00, 0x0B, 0x40, 0xCB },
|
|
||||||
[]byte { 0x00, 0x0C, 0x41, 0xCB, 0x37 },
|
|
||||||
[]byte { 0x00, 0x0D, 0x43, 0xEF, 0x1E, 0xCB, 0x37 },
|
|
||||||
[]byte { 0x00, 0x0E, 0x47, 0x9C, 0x6E, 0xF6, 0x43, 0xEF, 0x1E, 0xCB, 0x37 },
|
|
||||||
))
|
|
||||||
`)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGenerateRunDecode(test *testing.T) {
|
|
||||||
testGenerateRun(test, &exampleProtocol, "decode", `
|
testGenerateRun(test, &exampleProtocol, "decode", `
|
||||||
// imports
|
// imports
|
||||||
`, `
|
`, `
|
||||||
@ -209,7 +80,7 @@ func TestGenerateRunDecode(test *testing.T) {
|
|||||||
Name: "rarity",
|
Name: "rarity",
|
||||||
Password: "gems",
|
Password: "gems",
|
||||||
}
|
}
|
||||||
testDecode(
|
testEncodeDecode(
|
||||||
&messageConnect,
|
&messageConnect,
|
||||||
tu.S(0xE1, 0x02).AddVar(
|
tu.S(0xE1, 0x02).AddVar(
|
||||||
[]byte { 0x00, 0x00, 0x86, 'r', 'a', 'r', 'i', 't', 'y' },
|
[]byte { 0x00, 0x00, 0x86, 'r', 'a', 'r', 'i', 't', 'y' },
|
||||||
@ -235,7 +106,7 @@ func TestGenerateRunDecode(test *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
testEncode(
|
testEncodeDecode(
|
||||||
&messageUserList,
|
&messageUserList,
|
||||||
tu.S(0xE1, 0x01, 0x00, 0x00,
|
tu.S(0xE1, 0x01, 0x00, 0x00,
|
||||||
0xC1, 0x03, 0xE1,
|
0xC1, 0x03, 0xE1,
|
||||||
@ -261,7 +132,7 @@ func TestGenerateRunDecode(test *testing.T) {
|
|||||||
Y: 294.1,
|
Y: 294.1,
|
||||||
Z: 384729384.234892034,
|
Z: 384729384.234892034,
|
||||||
}
|
}
|
||||||
testEncode(
|
testEncodeDecode(
|
||||||
&messagePulse,
|
&messagePulse,
|
||||||
tu.S(0xE1, 0x05).AddVar(
|
tu.S(0xE1, 0x05).AddVar(
|
||||||
[]byte { 0x00, 0x00, 0x09 },
|
[]byte { 0x00, 0x00, 0x09 },
|
||||||
@ -282,7 +153,7 @@ func TestGenerateRunDecode(test *testing.T) {
|
|||||||
uint8s(6),
|
uint8s(6),
|
||||||
uint8s(35),
|
uint8s(35),
|
||||||
}
|
}
|
||||||
testEncode(
|
testEncodeDecode(
|
||||||
&messageNestedArray,
|
&messageNestedArray,
|
||||||
tu.S(0xC1, 0x02, 0xC1,
|
tu.S(0xC1, 0x02, 0xC1,
|
||||||
0x06, 0x20, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6,
|
0x06, 0x20, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6,
|
||||||
@ -308,7 +179,7 @@ func TestGenerateRunDecode(test *testing.T) {
|
|||||||
NI32: -0x10E134C9,
|
NI32: -0x10E134C9,
|
||||||
NI64: -0x639109BC10E134C9,
|
NI64: -0x639109BC10E134C9,
|
||||||
}
|
}
|
||||||
testEncode(
|
testEncodeDecode(
|
||||||
&messageIntegers,
|
&messageIntegers,
|
||||||
tu.S(0xE1, 13).AddVar(
|
tu.S(0xE1, 13).AddVar(
|
||||||
[]byte { 0x00, 0x00, 0x13 },
|
[]byte { 0x00, 0x00, 0x13 },
|
||||||
|
@ -78,6 +78,42 @@ func testGenerateRun(test *testing.T, protocol *Protocol, title, imports, testCa
|
|||||||
log.Fatalln("not equal")
|
log.Fatalln("not equal")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: possibly combine the two above functions into this one,
|
||||||
|
// also take a data parameter here (snake)
|
||||||
|
func testEncodeDecode(message Message, data tu.Snake) {buffer := bytes.Buffer { }
|
||||||
|
log.Println("encoding:")
|
||||||
|
encoder := tape.NewEncoder(&buffer)
|
||||||
|
n, err := message.Encode(encoder)
|
||||||
|
if err != nil { log.Fatalf("at %d: %v\n", n, err) }
|
||||||
|
encoder.Flush()
|
||||||
|
got := buffer.Bytes()
|
||||||
|
log.Printf("got: [%s]", tu.HexBytes(got))
|
||||||
|
log.Println("correct:", data)
|
||||||
|
if n != len(got) {
|
||||||
|
log.Fatalf("n incorrect: %d != %d\n", n, len(got))
|
||||||
|
}
|
||||||
|
if ok, n := data.Check(got); !ok {
|
||||||
|
log.Fatalln("not equal at", n)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Println("decoding:")
|
||||||
|
destination := reflect.New(reflect.ValueOf(message).Elem().Type()).Interface().(Message)
|
||||||
|
flat := data.Flatten()
|
||||||
|
log.Println("before: ", destination)
|
||||||
|
decoder := tape.NewDecoder(bytes.NewBuffer(flat))
|
||||||
|
n, err = destination.Decode(decoder)
|
||||||
|
if err != nil { log.Fatalf("at %d: %v\n", n, err) }
|
||||||
|
log.Println("got: ", destination)
|
||||||
|
log.Println("correct:", message)
|
||||||
|
if n != len(flat) {
|
||||||
|
log.Fatalf("n incorrect: %d != %d\n", n, len(flat))
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(destination, message) {
|
||||||
|
log.Fatalln("not equal")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
`
|
`
|
||||||
fmt.Fprintf(
|
fmt.Fprintf(
|
||||||
mainFile, "package main\n%s\nfunc main() {\n%s\n%s\n%s\n}\n%s",
|
mainFile, "package main\n%s\nfunc main() {\n%s\n%s\n%s\n}\n%s",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user