def test_encode_decode_field_table_long_keys(self): """ Encoding and decoding a field_table with too long keys. """ # second key is 126 A's + \N{PILE OF POO} data = {'A' * 256: 1, ((b'A' * 126) + b'\xf0\x9f\x92\xa9').decode('utf-8'): 2} encoded = encode.field_table(data) decoded = decode.field_table(encoded)[1] self.assertIn(b'A' * 128, decoded)
def test_encode_field_table(self): expectation = (b'\x00\x00\x04\x13\x08arrayvalA\x00\x00\x00\ts\x00\x01s' b'\x00\x02s\x00\x03\x07boolvalt\x01\x06decvalD\x02\x00' b'\x00\x01:\x07dictvalF\x00\x00\x00\x0c\x03fooS\x00\x00' b'\x00\x03bar\x08floatvlaf@H\xf5\xc3\x06intvals\x00\x01' b'\x07longstrS\x00\x00\x03t0000000000000000000000000000' b'00000000000000000000000011111111111111111111111111111' b'11111111111111111111111222222222222222222222222222222' b'22222222222222222222221111111111111111111111111111111' b'11111111111111111111122222222222222222222222222222222' b'22222222222222222222111111111111111111111111111111111' b'11111111111111111112222222222222222222222222222222222' b'22222222222222222211111111111111111111111111111111111' b'11111111111111111222222222222222222222222222222222222' b'22222222222222221111111111111111111111111111111111111' b'11111111111111122222222222222222222222222222222222222' b'22222222222222111111111111111111111111111111111111111' b'11111111111112222222222222222222222222222222222222222' b'22222222222211111111111111111111111111111111111111111' b'11111111111222222222222222222222222222222222222222222' b'22222222221111111111111111111111111111111111111111111' b'11111111100000000000000000000000000000000000000000000' b'00000000\x07longvalI6e&U\x06strvalS\x00\x00\x00\x04' b'Test\x0ctimestampvalT\x00\x00\x00\x00Ec)\x92') data = {'intval': 1, 'strval': b'Test', 'boolval': True, 'timestampval': datetime(2006, 11, 21, 16, 30, 10), 'decval': Decimal('3.14'), 'floatvla': 3.14, 'longval': long(912598613), 'dictval': {b'foo': b'bar'}, 'arrayval': [1, 2, 3], 'longstr': ('0000000000000000000000000000000000000000000000000' '0001111111111111111111111111111111111111111111111' '1111112222222222222222222222222222222222222222222' '2222222221111111111111111111111111111111111111111' '1111111111112222222222222222222222222222222222222' '2222222222222221111111111111111111111111111111111' '1111111111111111112222222222222222222222222222222' '2222222222222222222221111111111111111111111111111' '1111111111111111111111112222222222222222222222222' '2222222222222222222222222221111111111111111111111' '1111111111111111111111111111112222222222222222222' '2222222222222222222222222222222221111111111111111' '1111111111111111111111111111111111112222222222222' '2222222222222222222222222222222222222221111111111' '1111111111111111111111111111111111111111112222222' '2222222222222222222222222222222222222222222221111' '1111111111111111111111111111111111111111111111110' '0000000000000000000000000000000000000000000000000' '00')} self.assertEqual(encode.field_table(data), expectation)
def test_encode_field_table(self): expectation = (b"\x00\x00\x04'\x08arrayvalA\x00\x00\x00\x06b\x01b" b'\x02b\x03\x07boolvalt\x01\tbytearrayx\x00\x00\x00' b'\x03AAA\x06decvalD\x02\x00\x00\x01:\x07dictvalF\x00' b'\x00\x00\x0c\x03fooS\x00\x00\x00\x03bar\x08floatval' b'f@H\xf5\xc3\x06intvalb\x01\x07longstrS\x00\x00\x03t' b'000000000000000000000000000000000000000000000000000' b'011111111111111111111111111111111111111111111111111' b'112222222222222222222222222222222222222222222222222' b'222111111111111111111111111111111111111111111111111' b'111122222222222222222222222222222222222222222222222' b'222221111111111111111111111111111111111111111111111' b'111111222222222222222222222222222222222222222222222' b'222222211111111111111111111111111111111111111111111' b'111111112222222222222222222222222222222222222222222' b'222222222111111111111111111111111111111111111111111' b'111111111122222222222222222222222222222222222222222' b'222222222221111111111111111111111111111111111111111' b'111111111111222222222222222222222222222222222222222' b'222222222222211111111111111111111111111111111111111' b'111111111111112222222222222222222222222222222222222' b'222222222222222111111111111111111111111111111111111' b'111111111111111100000000000000000000000000000000000' b'00000000000000000\x07longvalI6e&U\x04noneV\x06strva' b'lS\x00\x00\x00\x04Test\x0ctimestampvalT\x00\x00\x00' b'\x00Ec)\x92') data = { 'intval': 1, 'strval': 'Test', 'boolval': True, 'timestampval': datetime.datetime(2006, 11, 21, 16, 30, 10), 'decval': decimal.Decimal('3.14'), 'floatval': 3.14, 'longval': 912598613, 'dictval': { 'foo': 'bar' }, 'arrayval': [1, 2, 3], 'none': None, 'bytearray': bytearray((65, 65, 65)), 'longstr': ('0000000000000000000000000000000000000000000000000' '0001111111111111111111111111111111111111111111111' '1111112222222222222222222222222222222222222222222' '2222222221111111111111111111111111111111111111111' '1111111111112222222222222222222222222222222222222' '2222222222222221111111111111111111111111111111111' '1111111111111111112222222222222222222222222222222' '2222222222222222222221111111111111111111111111111' '1111111111111111111111112222222222222222222222222' '2222222222222222222222222221111111111111111111111' '1111111111111111111111111111112222222222222222222' '2222222222222222222222222222222221111111111111111' '1111111111111111111111111111111111112222222222222' '2222222222222222222222222222222222222221111111111' '1111111111111111111111111111111111111111112222222' '2222222222222222222222222222222222222222222221111' '1111111111111111111111111111111111111111111111110' '0000000000000000000000000000000000000000000000000' '00') } self.assertEqual(encode.field_table(data), expectation)
def test_encode_field_table_empty(self): self.assertEqual(encode.field_table(None), b'\x00\x00\x00\x00')
def test_encode_field_table(self): expectation = (b"\x00\x00\x04'\x08arrayvalA\x00\x00\x00\x06b\x01b" b'\x02b\x03\x07boolvalt\x01\tbytearrayx\x00\x00\x00' b'\x03AAA\x06decvalD\x02\x00\x00\x01:\x07dictvalF\x00' b'\x00\x00\x0c\x03fooS\x00\x00\x00\x03bar\x08floatval' b'f@H\xf5\xc3\x06intvalb\x01\x07longstrS\x00\x00\x03t' b'000000000000000000000000000000000000000000000000000' b'011111111111111111111111111111111111111111111111111' b'112222222222222222222222222222222222222222222222222' b'222111111111111111111111111111111111111111111111111' b'111122222222222222222222222222222222222222222222222' b'222221111111111111111111111111111111111111111111111' b'111111222222222222222222222222222222222222222222222' b'222222211111111111111111111111111111111111111111111' b'111111112222222222222222222222222222222222222222222' b'222222222111111111111111111111111111111111111111111' b'111111111122222222222222222222222222222222222222222' b'222222222221111111111111111111111111111111111111111' b'111111111111222222222222222222222222222222222222222' b'222222222222211111111111111111111111111111111111111' b'111111111111112222222222222222222222222222222222222' b'222222222222222111111111111111111111111111111111111' b'111111111111111100000000000000000000000000000000000' b'00000000000000000\x07longvalI6e&U\x04noneV\x06strva' b'lS\x00\x00\x00\x04Test\x0ctimestampvalT\x00\x00\x00' b'\x00Ec)\x92') data = { 'intval': 1, 'strval': b'Test', 'boolval': True, 'timestampval': datetime(2006, 11, 21, 16, 30, 10), 'decval': Decimal('3.14'), 'floatval': 3.14, 'longval': long(912598613), 'dictval': { b'foo': b'bar' }, 'arrayval': [1, 2, 3], 'none': None, 'bytearray': bytearray((65, 65, 65)), 'longstr': ('0000000000000000000000000000000000000000000000000' '0001111111111111111111111111111111111111111111111' '1111112222222222222222222222222222222222222222222' '2222222221111111111111111111111111111111111111111' '1111111111112222222222222222222222222222222222222' '2222222222222221111111111111111111111111111111111' '1111111111111111112222222222222222222222222222222' '2222222222222222222221111111111111111111111111111' '1111111111111111111111112222222222222222222222222' '2222222222222222222222222221111111111111111111111' '1111111111111111111111111111112222222222222222222' '2222222222222222222222222222222221111111111111111' '1111111111111111111111111111111111112222222222222' '2222222222222222222222222222222222222221111111111' '1111111111111111111111111111111111111111112222222' '2222222222222222222222222222222222222222222221111' '1111111111111111111111111111111111111111111111110' '0000000000000000000000000000000000000000000000000' '00') } self.assertEqual(encode.field_table(data), expectation)
def test_encode_field_table(self): expectation = (b'\x00\x00\x04\x13\x08arrayvalA\x00\x00\x00\ts\x00\x01s' b'\x00\x02s\x00\x03\x07boolvalt\x01\x06decvalD\x02\x00' b'\x00\x01:\x07dictvalF\x00\x00\x00\x0c\x03fooS\x00\x00' b'\x00\x03bar\x08floatvlaf@H\xf5\xc3\x06intvals\x00\x01' b'\x07longstrS\x00\x00\x03t0000000000000000000000000000' b'00000000000000000000000011111111111111111111111111111' b'11111111111111111111111222222222222222222222222222222' b'22222222222222222222221111111111111111111111111111111' b'11111111111111111111122222222222222222222222222222222' b'22222222222222222222111111111111111111111111111111111' b'11111111111111111112222222222222222222222222222222222' b'22222222222222222211111111111111111111111111111111111' b'11111111111111111222222222222222222222222222222222222' b'22222222222222221111111111111111111111111111111111111' b'11111111111111122222222222222222222222222222222222222' b'22222222222222111111111111111111111111111111111111111' b'11111111111112222222222222222222222222222222222222222' b'22222222222211111111111111111111111111111111111111111' b'11111111111222222222222222222222222222222222222222222' b'22222222221111111111111111111111111111111111111111111' b'11111111100000000000000000000000000000000000000000000' b'00000000\x07longvalI6e&U\x06strvalS\x00\x00\x00\x04' b'Test\x0ctimestampvalT\x00\x00\x00\x00Ec)\x92') data = { 'intval': 1, 'strval': b'Test', 'boolval': True, 'timestampval': datetime(2006, 11, 21, 16, 30, 10), 'decval': Decimal('3.14'), 'floatvla': 3.14, 'longval': long(912598613), 'dictval': { b'foo': b'bar' }, 'arrayval': [1, 2, 3], 'longstr': ('0000000000000000000000000000000000000000000000000' '0001111111111111111111111111111111111111111111111' '1111112222222222222222222222222222222222222222222' '2222222221111111111111111111111111111111111111111' '1111111111112222222222222222222222222222222222222' '2222222222222221111111111111111111111111111111111' '1111111111111111112222222222222222222222222222222' '2222222222222222222221111111111111111111111111111' '1111111111111111111111112222222222222222222222222' '2222222222222222222222222221111111111111111111111' '1111111111111111111111111111112222222222222222222' '2222222222222222222222222222222221111111111111111' '1111111111111111111111111111111111112222222222222' '2222222222222222222222222222222222222221111111111' '1111111111111111111111111111111111111111112222222' '2222222222222222222222222222222222222222222221111' '1111111111111111111111111111111111111111111111110' '0000000000000000000000000000000000000000000000000' '00') } self.assertEqual(encode.field_table(data), expectation)