def test_custom_hash(self): txn = Transaction( Binance.chain, "USER", "tbnb1yxfyeda8pnlxlmx0z3cwx74w9xevspwdpzdxpj", Coin("BNB.BNB", 194765912), "REFUND:TODO", id="9999A5A08D8FCF942E1AAAA01AB1E521B699BA3A009FA0591C011DC1FFDC5E68", ) self.assertEqual( txn.custom_hash(""), "FE64709713A9F9D691CF2C5B144CA6DAA53E902800C1367C692FE7935BD029CE", ) txn.coins = None self.assertEqual( txn.custom_hash(""), "229BD31DB372A43FB71896BDE7512BFCA06731A4D825B4721A1D8DD800159DCD", ) txn.to_address = "tbnb189az9plcke2c00vns0zfmllfpfdw67dtv25kgx" txn.coins = [Coin(RUNE, 49900000000)] txn.memo = ( "REFUND:CA3A36052DC2FC30B91AD3996012E9EF2E69EEA70D5FBBBD9364F6F97A056D7C" ) pubkey = ( "thorpub1addwnpepqv7kdf473gc4jyls7hlx4rg" "t2lqxm9qkfh5m3ua7wnzzzfhlpz49u4slu4g" ) if DEFAULT_RUNE_ASSET == RUNE: self.assertEqual( txn.custom_hash(pubkey), "158D75777A5C23A5C8A39B55C0812252C0ABA9A87816D5E74BB7166EB95EDB73", )
def test_eq(self): tx1 = Transaction( Binance.chain, "USER", "VAULT", Coin("BNB.BNB", 100), "STAKE:BNB", ) tx2 = Transaction( Binance.chain, "USER", "VAULT", Coin("BNB.BNB", 100), "STAKE:BNB", ) self.assertEqual(tx1, tx2) tx2.chain = "BTC" self.assertNotEqual(tx1, tx2) tx1 = Transaction( Binance.chain, "USER", "VAULT", [Coin("BNB.BNB", 100)], "STAKE:BNB", ) tx2 = Transaction( Binance.chain, "USER", "VAULT", [Coin("BNB.BNB", 100)], "STAKE:BNB", ) self.assertEqual(tx1, tx2) tx1.memo = "STAKE:BNB" tx2.memo = "ADD:BNB" self.assertNotEqual(tx1, tx2) tx1.memo = "STAKE" tx2.memo = "ADD" self.assertNotEqual(tx1, tx2) tx1.memo = "" tx2.memo = "" self.assertEqual(tx1, tx2) tx1.memo = "Hello" tx2.memo = "" self.assertNotEqual(tx1, tx2) # we ignore addresses in memo tx1.memo = "REFUND:ADDRESS" tx2.memo = "REFUND:TODO" self.assertNotEqual(tx1, tx2) # we dont ignore different assets though tx1.memo = "STAKE:BNB" tx2.memo = "STAKE:RUNE" self.assertNotEqual(tx1, tx2) tx2.memo = "STAKE:BNB" self.assertEqual(tx1, tx2) tx2.coins = [Coin("BNB.BNB", 100)] self.assertEqual(tx1, tx2) tx2.coins = [Coin("BNB.BNB", 100), Coin("RUNE", 100)] self.assertNotEqual(tx1, tx2) # different list of coins not equal tx1.coins = [Coin("RUNE", 200), Coin("RUNE", 100)] tx2.coins = [Coin("BNB.BNB", 100), Coin("RUNE", 200)] self.assertNotEqual(tx1, tx2) # coins different order tx are still equal tx1.coins = [Coin("RUNE", 200), Coin("BNB.BNB", 100)] tx2.coins = [Coin("BNB.BNB", 100), Coin("RUNE", 200)] self.assertEqual(tx1, tx2) # we ignore from / to address for equality tx1.to_address = "VAULT1" tx2.to_address = "VAULT2" tx1.from_address = "USER1" tx2.from_address = "USER2" self.assertNotEqual(tx1, tx2) # check list of transactions equality tx1 = Transaction( Binance.chain, "USER", "VAULT", [Coin("BNB.BNB", 100)], "STAKE:BNB", ) tx2 = deepcopy(tx1) tx3 = deepcopy(tx1) tx4 = deepcopy(tx1) list1 = [tx1, tx2] list2 = [tx3, tx4] self.assertEqual(list1, list2) # check sort list of transactions get sorted by smallest coin # check list of 1 coin # descending order in list1 tx1.coins = [Coin("RUNE", 200)] tx2.coins = [Coin("BNB.BNB", 100)] # ascrending order in list2 tx3.coins = [Coin("BNB.BNB", 100)] tx4.coins = [Coin("RUNE", 200)] self.assertNotEqual(list1, list2) self.assertEqual(sorted(list1), list2) self.assertEqual(sorted(list1), sorted(list2)) # check list of > 1 coin # descending order in list1 tx1.coins = [Coin("RUNE", 200), Coin("BNB.BNB", 300)] tx2.coins = [Coin("BNB.BNB", 100), Coin("LOK-3C0", 500)] # ascrending order in list2 tx3.coins = [Coin("BNB.BNB", 100), Coin("LOK-3C0", 500)] tx4.coins = [Coin("RUNE", 200), Coin("BNB.BNB", 300)] self.assertNotEqual(list1, list2) self.assertEqual(sorted(list1), list2) self.assertEqual(sorted(list1), sorted(list2)) # check 1 tx with no coins list1 = sorted(list1) self.assertEqual(list1, list2) list1[0].coins = None self.assertNotEqual(list1, list2) list2[0].coins = None self.assertEqual(list1, list2)