def test_decode_valid_unicast_packet_with_multibyte_source_and_address(
            self):
        expectedAsbPacket = AsbPacket(meta=AsbMeta(type=0x02,
                                                   port=0x42,
                                                   source=0x1234,
                                                   target=0x5678),
                                      length=2,
                                      data=[0xAA, 0xBB])

        decodedPacket = decodeAsbPacket("256781234422AABB")
        self.assertEqual(expectedAsbPacket, decodedPacket)
    def test_encode_valid_multicast_packet(self):
        expectedAsbPacket = b"1BAFF2511"

        encodedPacket = encodeAsbPacket(
            AsbPacket(meta=AsbMeta(type=0x01,
                                   port=0xFF,
                                   source=0x000A,
                                   target=0x000B),
                      length=2,
                      data=[0x51, 0x01]))

        self.assertEqual(expectedAsbPacket, encodedPacket)
    def test_encode_valid_multicast_packet_without_data(self):
        expectedAsbPacket = b"1BBAAFF0"

        encodedPacket = encodeAsbPacket(
            AsbPacket(meta=AsbMeta(type=0x01,
                                   port=0xFF,
                                   source=0x00AA,
                                   target=0x00BB),
                      length=0,
                      data=[]))

        self.assertEqual(expectedAsbPacket, encodedPacket)
    def test_encode_valid_multicast_packet_with_eight_byte_data(self):
        expectedAsbPacket = b"156781234FF8AABBCCDDEEFF12"

        encodedPacket = encodeAsbPacket(
            AsbPacket(meta=AsbMeta(type=0x01,
                                   port=0x00,
                                   source=0x1234,
                                   target=0x5678),
                      length=8,
                      data=[0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x01, 0x02]))

        self.assertEqual(expectedAsbPacket, encodedPacket)
    def test_encode_valid_multicast_packet_with_zero_port_which_becomes_ff(
            self):
        expectedAsbPacket = b"156781234FF2AABB"

        encodedPacket = encodeAsbPacket(
            AsbPacket(meta=AsbMeta(type=0x01,
                                   port=0x00,
                                   source=0x1234,
                                   target=0x5678),
                      length=2,
                      data=[0xAA, 0xBB]))

        self.assertEqual(expectedAsbPacket, encodedPacket)