% Regression tests for the PDUTransport / PDU layer # More information at http://www.secdev.org/projects/UTscapy/ ############ ############ + PDUTransport contrib tests = Load Contrib Layer load_contrib("automotive.autosar.pdu", globals_dict=globals()) = Defaults test p = PDUTransport() assert p.pdus == [PDU()] p = PDU() assert p.pdu_id == 0 assert p.pdu_payload_len == None = Build test pdu_id p = PDU(bytes(PDU(pdu_id=0x11))) assert len(bytes(p)) == 8 assert p.pdu_id == 0x11 assert p.pdu_payload_len == 0 = Build test pdu_payload_len p = PDU(bytes(PDU(pdu_payload_len=12))) assert len(p) == 8 assert p.pdu_id == 0 assert p.pdu_payload_len == 12 = Build test id and payload len with data p = PDU(bytes(PDU(pdu_id=0x12, pdu_payload_len=2) / Raw(b'\x22\x33'))) assert len(p) == 10 assert p.pdu_id == 0x12 assert p.pdu_payload_len == 2 assert len(p['Raw']) == 2 assert bytes(p['Raw']) == b'\x22\x33' = Build PDUTransport with multiple PDU packets p1 = PDUTransport(b'\x00\x00\x00\x01\x00\x00\x00\x01\x11' b'\x00\x00\x00\x02\x00\x00\x00\x02\x11\x44' b'\x00\x00\x00\x03\x00\x00\x00\x03\x11\x33\x91') p2 = PDUTransport(bytes(PDUTransport(pdus=[PDU(pdu_id=0x1,pdu_payload_len=1)/Raw(b'\x11'), # noqa: E501 PDU(pdu_id=0x2, pdu_payload_len=2) / Raw(b'\x11\x44'), PDU(pdu_id=0x3, pdu_payload_len=3) / Raw(b'\x11\x33\x91')]))) # Check if packets are the same assert p1 == p2 # Check if fields are set correctly within PDU list assert p1.pdus[0].pdu_id == 0x1 assert p1.pdus[0].pdu_payload_len == 1 assert p1.pdus[1].pdu_id == 0x2 assert p1.pdus[1].pdu_payload_len == 2 assert p1.pdus[2].pdu_id == 0x3 assert p1.pdus[2].pdu_payload_len == 3 = Build PDUTransport with one PDU packet p1 = PDUTransport(b'\x00\x00\x00\x01\x00\x00\x00\x03\x11\x22\x33') p2 = PDUTransport(bytes(PDUTransport(pdus=[ PDU(pdu_id=0x1, pdu_payload_len=0x3) / Raw(b'\x11\x22\x33')]))) # Check if packets are the same assert p1 == p2 # Check if fields are set correctly within PDU list assert p1.pdus[0].pdu_id == 0x1 assert p1.pdus[0].pdu_payload_len == 3