Пример #1
0
    def round_trip(self, nnn):
        """
        Test writing and reading a varint as the first and
        only field in a buffer.
        """
        # -- write varint -------------------------------------------
        field_nbr = 1 + self.rng.next_int16(1024)
        chan = Channel(LEN_BUFFER)
        write_varint_field(chan, nnn, field_nbr)
        chan.flip()

        # -- read varint --------------------------------------------
        # first the header (which is a varint) ------------
        (prim_type, field_nbr2) = read_field_hdr(chan)
        offset2 = chan.position
        self.assertEqual(PrimTypes.VARINT, prim_type)
        self.assertEqual(field_nbr, field_nbr2)
        self.assertEqual(length_as_varint(field_nbr << 3), offset2)

        # then the varint proper --------------------------
        varint_ = read_raw_varint(chan)
        chan.flip()
        offset3 = chan.limit
        self.assertEqual(nnn, varint_)
        self.assertEqual(offset2 + length_as_varint(nnn), offset3)
Пример #2
0
def vbool_put(chan, val, nnn):
    if val is True:
        write_varint_field(chan, 1, nnn)
    else:
        write_varint_field(chan, 0, nnn)
Пример #3
0
def vsint64_put(chan, val, nnn):
    varint_ = encode_sint64(val)
    write_varint_field(chan, varint_, nnn)
Пример #4
0
def vuint64_put(chan, val, nnn):
    varint_ = 0xffffffffffffffff & val
    write_varint_field(chan, varint_, nnn)
Пример #5
0
def venum_put(chan, val, nnn):
    # just handle enums as simple ints for now, but constrain
    # to 16 bits; any sign is uhm mangled
    varint_ = 0xffff & val
    write_varint_field(chan, varint_, nnn)