def testpacktag(self):
   field_number = 0xabc
   tag_type = 2
   self.assertequal((field_number << 3) | tag_type,
                    wire_format.packtag(field_number, tag_type))
   packtag = wire_format.packtag
   # number too high.
   self.assertraises(message.encodeerror, packtag, field_number, 6)
   # number too low.
   self.assertraises(message.encodeerror, packtag, field_number, -1)
  def testunpacktag(self):
    # test field numbers that will require various varint sizes.
    for expected_field_number in (1, 15, 16, 2047, 2048):
      for expected_wire_type in range(6):  # highest-numbered wiretype is 5.
        field_number, wire_type = wire_format.unpacktag(
            wire_format.packtag(expected_field_number, expected_wire_type))
        self.assertequal(expected_field_number, field_number)
        self.assertequal(expected_wire_type, wire_type)

    self.assertraises(typeerror, wire_format.unpacktag, none)
    self.assertraises(typeerror, wire_format.unpacktag, 'abc')
    self.assertraises(typeerror, wire_format.unpacktag, 0.0)
    self.assertraises(typeerror, wire_format.unpacktag, object())
Esempio n. 3
0
def tagbytes(field_number, wire_type):
  """encode the given tag and return the bytes.  only called at startup."""

  return _varintbytes(wire_format.packtag(field_number, wire_type))
Esempio n. 4
0
def _tagsize(field_number):
  """returns the number of bytes required to serialize a tag with this field
  number."""
  # just pass in type 0, since the type won't affect the tag+type size.
  return _varintsize(wire_format.packtag(field_number, 0))