1% Regression tests for the PDUTransport / PDU layer 2 3 4# More information at http://www.secdev.org/projects/UTscapy/ 5 6 7############ 8############ 9 10+ PDUTransport contrib tests 11 12= Load Contrib Layer 13 14load_contrib("automotive.autosar.pdu", globals_dict=globals()) 15 16= Defaults test 17 18p = PDUTransport() 19assert p.pdus == [PDU()] 20 21p = PDU() 22assert p.pdu_id == 0 23assert p.pdu_payload_len == None 24 25= Build test pdu_id 26p = PDU(bytes(PDU(pdu_id=0x11))) 27assert len(bytes(p)) == 8 28assert p.pdu_id == 0x11 29assert p.pdu_payload_len == 0 30 31= Build test pdu_payload_len 32p = PDU(bytes(PDU(pdu_payload_len=12))) 33assert len(p) == 8 34assert p.pdu_id == 0 35assert p.pdu_payload_len == 12 36 37= Build test id and payload len with data 38p = PDU(bytes(PDU(pdu_id=0x12, pdu_payload_len=2) / Raw(b'\x22\x33'))) 39assert len(p) == 10 40assert p.pdu_id == 0x12 41assert p.pdu_payload_len == 2 42assert len(p['Raw']) == 2 43assert bytes(p['Raw']) == b'\x22\x33' 44 45= Build PDUTransport with multiple PDU packets 46p1 = PDUTransport(b'\x00\x00\x00\x01\x00\x00\x00\x01\x11' 47b'\x00\x00\x00\x02\x00\x00\x00\x02\x11\x44' 48b'\x00\x00\x00\x03\x00\x00\x00\x03\x11\x33\x91') 49p2 = PDUTransport(bytes(PDUTransport(pdus=[PDU(pdu_id=0x1,pdu_payload_len=1)/Raw(b'\x11'), # noqa: E501 50PDU(pdu_id=0x2, pdu_payload_len=2) / Raw(b'\x11\x44'), 51PDU(pdu_id=0x3, pdu_payload_len=3) / Raw(b'\x11\x33\x91')]))) 52# Check if packets are the same 53assert p1 == p2 54# Check if fields are set correctly within PDU list 55assert p1.pdus[0].pdu_id == 0x1 56assert p1.pdus[0].pdu_payload_len == 1 57assert p1.pdus[1].pdu_id == 0x2 58assert p1.pdus[1].pdu_payload_len == 2 59assert p1.pdus[2].pdu_id == 0x3 60assert p1.pdus[2].pdu_payload_len == 3 61 62= Build PDUTransport with one PDU packet 63p1 = PDUTransport(b'\x00\x00\x00\x01\x00\x00\x00\x03\x11\x22\x33') 64p2 = PDUTransport(bytes(PDUTransport(pdus=[ 65PDU(pdu_id=0x1, pdu_payload_len=0x3) / Raw(b'\x11\x22\x33')]))) 66 67# Check if packets are the same 68assert p1 == p2 69# Check if fields are set correctly within PDU list 70assert p1.pdus[0].pdu_id == 0x1 71assert p1.pdus[0].pdu_payload_len == 3 72