def test_token_serialization(self): # ignore 0 values in TokenBalanceMap m0 = TokenBalanceMap({3234: 10, 0: 0, 3567: 0}) m1 = TokenBalanceMap({3234: 10}) self.assertEqual(m0.serialize(bytearray()), m1.serialize(bytearray())) self.assertEqual( TokenBalanceMap.deserialize(m0.serialize(bytearray())).balance_map, {3234: 10}, ) mx = FakeTokenBalanceMap({3232: 109, 0: 0, 3567: 999999}) bb = bytearray(b"\x00\x00\x00\x03\x00\x00\x02\x0c\xa0\x01m\x02\r\xef\x03\x0fB?") self.assertEqual(mx.serialize(bytearray()), bb) self.assertEqual( TokenBalanceMap.deserialize(bb).balance_map, {3232: 109, 3567: 999999} ) # if skip_func == None, do not omit key/value pairs md0 = MapData({5: 0, 1: 2, 10: 9}) md1 = MapData({10: 9, 3: 0, 1: 2}) self.assertNotEqual(md0.serialize(), md1.serialize())
def put_minor_block_coinbase(self, m_hash: bytes, coinbase_tokens: dict): tokens = TokenBalanceMap(coinbase_tokens) self.db.put(b"mheader_" + m_hash, tokens.serialize()) self.m_hash_dict[m_hash] = coinbase_tokens
def test_zero_balance(self): m0 = TokenBalanceMap({3234: 10, 0: 0, 3567: 0}) m1 = TokenBalanceMap.deserialize(m0.serialize()) self.assertEqual(m0, m1)