def it_extracts_those_bytes_in_little_endian_order():
                data = b'\x18\x01\x02\x03\x04\x05\x06\x07\x08Q025\x34\x12...'
                parser = Parser(data)

                header = parser.parse_public_header()

                assert_that(header.packet_number, is_(0x1234))
        def it_advances_data_offset_to_point_to_byte_after_public_header():
            data = b'\x08\x01\x02\x03\x04\x05\x06\x07\x08Q025\x12...'
            parser = Parser(data)

            parser.parse_public_header()

            assert_that(parser.data_offset, is_(14))
            def it_extracts_this_one_byte_as_packet_number():
                data = b'\x08\x01\x02\x03\x04\x05\x06\x07\x08Q025\x12...'
                parser = Parser(data)

                header = parser.parse_public_header()

                assert_that(header.packet_number, is_(0x12))
        def it_extracts_protocol_version():
            data = b'\x08\x01\x02\x03\x04\x05\x06\x07\x08Q025...'
            parser = Parser(data)

            header = parser.parse_public_header()

            assert_that(header.protocol_version, is_(b'Q025'))
        def it_extracts_connection_id():
            data = b'\x08\x01\x02\x03\x04\x05\x06\x07\x08......'
            parser = Parser(data)

            header = parser.parse_public_header()

            assert_that(header.connection_id, is_(b'\x01\x02\x03\x04\x05\x06\x07\x08'))
        def it_extracts_public_flags():
            data = b'\x08\x01\x02\x03\x04\x05\x06\x07\x08......'
            parser = Parser(data)

            header = parser.parse_public_header()

            assert_that(header.public_flags, is_(0x08))
            def it_raises_an_exception():
                parser = Parser(b'')

                assert_that(
                    calling(parser.calc_packet_hash),
                    raises(IndexError)
                )
 def parser():
     data = b'\x08\x01\x02\x03\x04\x05\x06\x07\x08Q025' \
         b'\x01\x12\x11\x10\x09\x08\x07\x06\x05\x04\x03\x02\x01' \
         b'\xa5\x02\x01..\x14\x05...'
     parser = Parser(data)
     parser.parse_public_header()
     parser.parse_packet_hash()
     return parser
        def describe_when_packet_hash_was_parsed():
            parser = Parser(fixture_packet('chlo_q034'))
            parser.parse_public_header()
            parser.parse_packet_hash()

            def it_calculates_12_byte_hash_value():
                packet_hash = parser.calc_packet_hash()

                assert_that(packet_hash, is_(0xda4e6a9c4b3af51927e22fdc))