def test_decode_embedded_value_field_table_value(self): value = decode._embedded_value(b'F' + self.FIELD_TBL)[1] for key in value.keys(): if isinstance(value[key], float): self.assertAlmostEqual(round(value[key], 3), round(self.FIELD_TBL_VALUE[key], 3)) else: self.assertEqual(value[key], self.FIELD_TBL_VALUE[key])
def test_decode_embedded_value_field_array_value(self): value = decode._embedded_value(b'A' + self.FIELD_ARR)[1] for position in range(0, len(value)): if isinstance(value[position], float): self.assertAlmostEqual(round(value[position], 3), round(self.FIELD_ARR_VALUE[position], 3)) else: self.assertEqual(value[position], self.FIELD_ARR_VALUE[position])
def test_decode_embedded_value_field_table_data_type(self): self.assertIsInstance(decode._embedded_value(b'F' + self.FIELD_TBL)[1], dict)
def test_decode_embedded_value_field_array_bytes_consumed(self): self.assertEqual(decode._embedded_value(b'A' + self.FIELD_ARR)[0], len(b'A' + self.FIELD_ARR))
def test_decode_embedded_value_timestamp_data_type(self): value = b'T\x00\x00\x00\x00Ec)\x92' self.assertIsInstance(decode._embedded_value(value)[1], time.struct_time)
def test_decode_embedded_value_short_value(self): self.assertEqual(decode._embedded_value(b's\x7f\xff')[1], 32767)
def test_decode_embedded_value_short_bytes_consumed(self): value = b's\x7f\xff' self.assertEqual(decode._embedded_value(value)[0], 3)
def test_decode_embedded_value_longstr_data_type_unicode(self): value = (b'S\x00\x00\x00\x0c\xd8\xa7\xd8\xae\xd8\xaa\xd8\xa8\xd8' b'\xa7\xd8\xb1') self.assertIsInstance(decode._embedded_value(value)[1], bytes)
def test_decode_embedded_value_decimal_data_type(self): value = b'D\x05\x00\x04\xcb/' self.assertIsInstance(decode._embedded_value(value)[1], decimal.Decimal)
def test_decode_embedded_value_decimal_bytes_consumed(self): value = b'D\x05\x00\x04\xcb/' self.assertEqual(decode._embedded_value(value)[0], len(value))
def test_decode_embedded_value_empty_value(self): self.assertEqual(decode._embedded_value(b'')[1], None)
def test_decode_embedded_value_empty_bytes_consumed(self): self.assertEqual(decode._embedded_value(b'')[0], 0)
def test_decode_embedded_value_null(self): self.assertEqual(decode._embedded_value(b'\00')[1], None)
def test_field_embedded_value_field_table_keys(self): value = decode._embedded_value(b'F' + self.FIELD_TBL)[1] self.assertListEqual(sorted(value.keys()), sorted(self.FIELD_TBL_VALUE.keys()))
def test_decode_embedded_value_void_value(self): self.assertIsNone(decode._embedded_value(b'V')[1])
def test_decode_embedded_value_byte_array_data_type(self): value = b'x\x00\x00\x00\x03ABC' self.assertIsInstance(decode._embedded_value(value)[1], bytearray)
def test_decode_embedded_value_decimal_value(self): value = b'D\x05\x00\x04\xcb/' self.assertEqual(round(float(decode._embedded_value(value)[1]), 5), round(float(decimal.Decimal('3.14159')), 5))
def test_decode_embedded_value_longstr_value(self): value = b'S\x00\x00\x00\n0123456789' self.assertEqual(decode._embedded_value(value)[1], b'0123456789')
def test_decode_embedded_value_long_value(self): value = b'I\x7f\xff\xff\xff' self.assertEqual(decode._embedded_value(value)[1], 2147483647)
def test_decode_embedded_value_short_data_type(self): value = b's\x7f\xff' self.assertIsInstance(decode._embedded_value(value)[1], int)
def test_decode_embedded_value_long_long_bytes_consumed(self): value = b'l\x7f\xff\xff\xff\xff\xff\xff\xf8' self.assertEqual(decode._embedded_value(value)[0], 9)
def test_decode_embedded_value_timestamp_bytes_consumed(self): value = b'T\x00\x00\x00\x00Ec)\x92' self.assertEqual(decode._embedded_value(value)[0], 9)
def test_decode_embedded_value_long_long_data_type(self): value = b'l\x7f\xff\xff\xff\xff\xff\xff\xf8' self.assertIsInstance(decode._embedded_value(value)[1], int)
def test_decode_embedded_value_timestamp_value(self): value = b'T\x00\x00\x00\x00Ec)\x92' self.assertEqual(decode._embedded_value(value)[1], time.struct_time((2006, 11, 21, 16, 30, 10, 1, 325, 0)))
def test_decode_embedded_value_long_long_value(self): value = b'l\x7f\xff\xff\xff\xff\xff\xff\xf8' self.assertEqual(decode._embedded_value(value)[1], 9223372036854775800)
def test_decode_embedded_value_field_array_data_type(self): self.assertIsInstance(decode._embedded_value(b'A' + self.FIELD_ARR)[1], list)
def test_decode_embedded_value_longstr_bytes_consumed(self): value = b'S\x00\x00\x00\n0123456789' self.assertEqual(decode._embedded_value(value)[0], 15)
def test_decode_embedded_value_field_table_bytes_consumed(self): self.assertEqual(decode._embedded_value(b'F' + self.FIELD_TBL)[0], len(b'F' + self.FIELD_TBL))
def test_decode_embedded_value_longstr_data_type(self): value = b'S\x00\x00\x00\n0123456789' expectation = bytes if PYTHON3 else str self.assertIsInstance(decode._embedded_value(value)[1], expectation)
def test_decode_embedded_value_byte_array_data(self): value = b'x\x00\x00\x00\x03ABC' self.assertEqual(decode._embedded_value(value)[1], bytearray([65, 66, 67]))