diff options
Diffstat (limited to 'satp/packet_test.go')
-rw-r--r-- | satp/packet_test.go | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/satp/packet_test.go b/satp/packet_test.go index 1284880..2ae7aad 100644 --- a/satp/packet_test.go +++ b/satp/packet_test.go @@ -69,7 +69,7 @@ var ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xA8, 0x2A, 0x01} ) -func TestPlainPacketPayloadType(t *testing.T) { +func TestPlainPacketHeader(t *testing.T) { testvectors := []uint16{0, IPv4Type, IPv6Type, EthernetType, 0xAA55, 0xF00F} for _, vector := range testvectors { @@ -195,6 +195,60 @@ func TestPlainPacketReadWrite(t *testing.T) { } } +func TestEncryptedPacketHeader(t *testing.T) { + testvectors := []struct { + SequenceNumber uint32 + SenderID uint16 + Mux uint16 + }{ + {0, 0, 0}, + {23, 0, 0}, + {0, 12, 0}, + {0, 0, 42}, + {1, 2, 3}, + {4294967295, 0, 0}, + {0, 65535, 0}, + {0, 0, 65535}, + {1254234, 2, 23}, + } + + for _, vector := range testvectors { + pkt := NewEncryptedPacket() + if vector.SequenceNumber > 0 { + pkt.SetSequenceNumber(vector.SequenceNumber) + } + if vector.SenderID > 0 { + pkt.SetSenderID(vector.SenderID) + } + if vector.Mux > 0 { + pkt.SetMux(vector.Mux) + } + result := pkt.getPacket() + expected := []byte{ + byte(vector.SequenceNumber >> 24), byte(vector.SequenceNumber >> 16), + byte(vector.SequenceNumber >> 8), byte(vector.SequenceNumber), + byte(vector.SenderID >> 8), byte(vector.SenderID), + byte(vector.Mux >> 8), byte(vector.Mux)} + + if bytes.Compare(result, expected) != 0 { + t.Fatalf("resulting packet is invalid, is: '%v', should be '%v'", result, expected) + } + + sequenceNumber := pkt.GetSequenceNumber() + if vector.SequenceNumber != sequenceNumber { + t.Fatalf("resulting sequence number is invalid, is: 0x%04X, should be 0x%04X", sequenceNumber, vector.SequenceNumber) + } + senderID := pkt.GetSenderID() + if vector.SenderID != senderID { + t.Fatalf("resulting sequence number is invalid, is: 0x%04X, should be 0x%04X", senderID, vector.SenderID) + } + Mux := pkt.GetMux() + if vector.Mux != Mux { + t.Fatalf("resulting sequence number is invalid, is: 0x%04X, should be 0x%04X", Mux, vector.Mux) + } + } +} + // func TestEncryptedPacketMarshal(t *testing.T) { // testvectors := []struct { // packet EncryptedPacket |