def test_bitvec_encode_list4(self):
     obj = ScaleDecoder.get_decoder_class('BitVec')
     data = obj.encode(
         [True, False, False, True, True, True, True, True, False, True])
     self.assertEqual(data.to_hex(), '0x287d02')
 def test_bitvec_decode_size2(self):
     obj = ScaleDecoder.get_decoder_class('BitVec', ScaleBytes('0x0803'))
     obj.decode()
     self.assertEqual(obj.value, [True, True])
 def test_bitvec_decode_size_2bytes(self):
     obj = ScaleDecoder.get_decoder_class('BitVec', ScaleBytes('0x28fd02'))
     obj.decode()
     self.assertEqual(
         obj.value,
         [True, False, True, True, True, True, True, True, False, True])
 def test_moment(self):
     obj = ScaleDecoder.get_decoder_class('Compact<Moment>',
                                          ScaleBytes("0x03d68b655c"))
     obj.decode()
     self.assertEqual(obj.value, datetime.datetime(2019, 2, 14, 15, 40, 6))
 def test_compact_u32_invalid(self):
     obj = ScaleDecoder.get_decoder_class('Compact<u32>', ScaleBytes("0x"))
     self.assertRaises(InvalidScaleTypeValueException, obj.decode)
 def test_i16(self):
     obj = ScaleDecoder.get_decoder_class('i16', ScaleBytes("0x2efb"))
     obj.decode()
     self.assertEqual(obj.value, -1234)
 def test_compact_bool_false(self):
     obj = ScaleDecoder.get_decoder_class('bool', ScaleBytes("0x00"))
     obj.decode()
     self.assertEqual(obj.value, False)
 def test_era_immortal(self):
     obj = ScaleDecoder.get_decoder_class('Era', ScaleBytes('0x00'))
     obj.decode()
     self.assertEqual(obj.value, '00')
     self.assertIsNone(obj.period)
     self.assertIsNone(obj.phase)
 def test_compact_u32(self):
     obj = ScaleDecoder.get_decoder_class('Compact<u32>',
                                          ScaleBytes("0x02093d00"))
     obj.decode()
     self.assertEqual(obj.value, 1000000)
    def test_invalid_fixed_array_type_encode(self):
        obj = ScaleDecoder.get_decoder_class('[u8; 3]')
        self.assertRaises(ValueError, obj.encode, '0x0102')

        obj = ScaleDecoder.get_decoder_class('[u32; 3]')
        self.assertRaises(ValueError, obj.encode, '0x0102')
 def test_custom_tuple(self):
     obj = ScaleDecoder.get_decoder_class('(u8,u8)', ScaleBytes("0x0102"))
     self.assertEqual({'col1': 1, 'col2': 2}, obj.decode())
    def test_dynamic_fixed_array_type_encode(self):
        obj = ScaleDecoder.get_decoder_class('[u32; 1]')
        self.assertEqual('0x0100000002000000', str(obj.encode([1, 2])))

        obj = ScaleDecoder.get_decoder_class('[u8; 3]')
        self.assertEqual('0x010203', str(obj.encode('0x010203')))
 def test_dynamic_fixed_array_type_encode_u8(self):
     obj = ScaleDecoder.get_decoder_class('[u8; 1]')
     self.assertEqual('0x01', str(obj.encode('0x01')))
 def test_balance(self):
     obj = ScaleDecoder.get_decoder_class(
         'Compact<Balance>', ScaleBytes("0x130080cd103d71bc22"))
     obj.decode()
     self.assertEqual(obj.value, 2503000000000000000)
 def test_bitvec_encode_int4(self):
     obj = ScaleDecoder.get_decoder_class('BitVec')
     data = obj.encode(0b00000010_01111101)
     self.assertEqual(data.to_hex(), '0x287d02')
 def test_era_invalid_decode(self):
     obj = ScaleDecoder.get_decoder_class('Era', ScaleBytes('0x0101'))
     self.assertRaises(ValueError, obj.decode)
 def test_bitvec_encode_empty_list(self):
     obj = ScaleDecoder.get_decoder_class('BitVec')
     data = obj.encode([])
     self.assertEqual(data.to_hex(), '0x00')
 def test_compact_u32_1byte(self):
     obj = ScaleDecoder.get_decoder_class('Compact<u32>',
                                          ScaleBytes("0x18"))
     obj.decode()
     self.assertEqual(obj.value, 6)
 def test_hashmap_encode(self):
     obj = ScaleDecoder.get_decoder_class('HashMap<Vec<u8>, u32>')
     data = obj.encode([('1', 2), ('23', 24), ('28', 30), ('45', 80)])
     self.assertEqual(
         data.to_hex(),
         '0x10043102000000083233180000000832381e00000008343550000000')
 def test_compact_u32_remaining_bytes(self):
     obj = ScaleDecoder.get_decoder_class('Compact<u32>',
                                          ScaleBytes("0x02093d0001"))
     self.assertRaises(RemainingScaleBytesNotEmptyException, obj.decode)
 def test_compact_bool_invalid(self):
     obj = ScaleDecoder.get_decoder_class('bool', ScaleBytes("0x02"))
     self.assertRaises(InvalidScaleTypeValueException, obj.decode)
 def test_implied_struct(self):
     obj = ScaleDecoder.get_decoder_class('(Compact<u32>,Compact<u32>)',
                                          ScaleBytes("0x0c00"))
     obj.decode()
     self.assertEqual(obj.value, {"col1": 3, "col2": 0})