Add more chunk header tests
This commit is contained in:
parent
2dd887de7d
commit
a58425ea56
|
@ -5,10 +5,53 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestBrokenNonVitalHeader(t *testing.T) {
|
||||||
|
// this is a real vital header at a wrong offset
|
||||||
|
// so it creates a actually non vital header with a size that is bigger than usual
|
||||||
|
// verified results with teeworlds-network/twnet_parser python lib
|
||||||
|
|
||||||
|
header := ChunkHeader{}
|
||||||
|
// {0x40, 0x3a, 0x01}
|
||||||
|
header.Unpack([]byte{0x3a, 0x01})
|
||||||
|
|
||||||
|
want := ChunkHeader {
|
||||||
|
Flags: ChunkFlags {
|
||||||
|
Vital: false,
|
||||||
|
Resend: false,
|
||||||
|
},
|
||||||
|
Size: 3713,
|
||||||
|
Seq: 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(header, want) {
|
||||||
|
t.Errorf("got %v, wanted %v", header, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestVitalHeaderMapChange(t *testing.T) {
|
||||||
|
// generated by vanilla teeworlds 0.7 server
|
||||||
|
// verified with libtw2 wireshark dissector
|
||||||
|
|
||||||
|
header := ChunkHeader{}
|
||||||
|
header.Unpack([]byte{0x40, 0x3a, 0x01})
|
||||||
|
|
||||||
|
want := ChunkHeader {
|
||||||
|
Flags: ChunkFlags {
|
||||||
|
Vital: true,
|
||||||
|
Resend: false,
|
||||||
|
},
|
||||||
|
Size: 58,
|
||||||
|
Seq: 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(header, want) {
|
||||||
|
t.Errorf("got %v, wanted %v", header, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestVitalHeader(t *testing.T) {
|
func TestVitalHeader(t *testing.T) {
|
||||||
header := ChunkHeader{}
|
header := ChunkHeader{}
|
||||||
header.Unpack([]byte{0x40, 0x10, 0x0a})
|
header.Unpack([]byte{0x40, 0x10, 0x0a})
|
||||||
|
|
||||||
want := ChunkHeader {
|
want := ChunkHeader {
|
||||||
Flags: ChunkFlags {
|
Flags: ChunkFlags {
|
||||||
Vital: true,
|
Vital: true,
|
||||||
|
|
|
@ -6,6 +6,33 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestSplitterMapChange(t *testing.T) {
|
||||||
|
// real map change packet from a vanilla teeworlds 0.7 server
|
||||||
|
// dumped with the go client
|
||||||
|
|
||||||
|
// header := []byte{
|
||||||
|
// 0x00, 0x01, 0x01, 0x01, 0x02, 0x03, 0x04,
|
||||||
|
// }
|
||||||
|
|
||||||
|
payload := []byte {
|
||||||
|
0x3a, 0x01, 0x05, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x73,
|
||||||
|
0x00, 0x91, 0xa7, 0xf2, 0xa0, 0x05, 0x8b, 0x11, 0x08, 0xa8, 0x15, 0xa9, 0x19, 0x38, 0xaf, 0xfd, 0xb6,
|
||||||
|
0xcb, 0xf1, 0xdb, 0x5a, 0xfc, 0x73, 0x34, 0xae, 0xa3, 0x68, 0xa7, 0xfa, 0x35, 0x54, 0x37, 0xf9, 0x39,
|
||||||
|
0x96, 0xd6, 0x05, 0x25, 0xef, 0x7b, 0x22, 0x40, 0x9d,
|
||||||
|
}
|
||||||
|
|
||||||
|
chunks := UnpackChunks(payload)
|
||||||
|
|
||||||
|
{
|
||||||
|
got := len(chunks)
|
||||||
|
want := 1
|
||||||
|
|
||||||
|
if want != got {
|
||||||
|
t.Errorf("got %v, wanted %v", got, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestSplitter(t *testing.T) {
|
func TestSplitter(t *testing.T) {
|
||||||
// packet payload of real traffic
|
// packet payload of real traffic
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue