2017-12-27 11:48:05 +00:00
|
|
|
from common import *
|
|
|
|
|
2019-08-26 16:47:49 +00:00
|
|
|
if not utils.BITCOIN_ONLY:
|
|
|
|
from apps.ethereum.layout import format_ethereum_amount
|
|
|
|
from apps.ethereum.tokens import token_by_chain_address
|
2017-12-27 11:48:05 +00:00
|
|
|
|
2019-08-26 16:47:49 +00:00
|
|
|
|
|
|
|
@unittest.skipUnless(not utils.BITCOIN_ONLY, "altcoin")
|
2021-08-31 09:47:56 +00:00
|
|
|
class TestFormatEthereumAmount(unittest.TestCase):
|
2017-12-27 11:48:05 +00:00
|
|
|
|
|
|
|
def test_format(self):
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(1, None, 1)
|
2018-03-03 22:37:21 +00:00
|
|
|
self.assertEqual(text, '1 Wei ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(1000, None, 1)
|
2022-07-28 14:10:19 +00:00
|
|
|
self.assertEqual(text, '1,000 Wei ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(1000000, None, 1)
|
2022-07-28 14:10:19 +00:00
|
|
|
self.assertEqual(text, '1,000,000 Wei ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(10000000, None, 1)
|
2022-07-28 14:10:19 +00:00
|
|
|
self.assertEqual(text, '10,000,000 Wei ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(100000000, None, 1)
|
2022-07-28 14:10:19 +00:00
|
|
|
self.assertEqual(text, '100,000,000 Wei ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(1000000000, None, 1)
|
2019-05-16 10:50:23 +00:00
|
|
|
self.assertEqual(text, '0.000000001 ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(10000000000, None, 1)
|
2018-03-03 22:37:21 +00:00
|
|
|
self.assertEqual(text, '0.00000001 ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(100000000000, None, 1)
|
2018-03-03 22:37:21 +00:00
|
|
|
self.assertEqual(text, '0.0000001 ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(1000000000000, None, 1)
|
2018-03-03 22:37:21 +00:00
|
|
|
self.assertEqual(text, '0.000001 ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(10000000000000, None, 1)
|
2018-03-03 22:37:21 +00:00
|
|
|
self.assertEqual(text, '0.00001 ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(100000000000000, None, 1)
|
2018-03-03 22:37:21 +00:00
|
|
|
self.assertEqual(text, '0.0001 ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(1000000000000000, None, 1)
|
2018-03-03 22:37:21 +00:00
|
|
|
self.assertEqual(text, '0.001 ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(10000000000000000, None, 1)
|
2018-03-03 22:37:21 +00:00
|
|
|
self.assertEqual(text, '0.01 ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(100000000000000000, None, 1)
|
2018-03-03 22:37:21 +00:00
|
|
|
self.assertEqual(text, '0.1 ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(1000000000000000000, None, 1)
|
2017-12-27 11:48:05 +00:00
|
|
|
self.assertEqual(text, '1 ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(10000000000000000000, None, 1)
|
2017-12-27 11:48:05 +00:00
|
|
|
self.assertEqual(text, '10 ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(100000000000000000000, None, 1)
|
2018-03-03 22:37:21 +00:00
|
|
|
self.assertEqual(text, '100 ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(1000000000000000000000, None, 1)
|
2022-07-28 14:10:19 +00:00
|
|
|
self.assertEqual(text, '1,000 ETH')
|
2018-03-03 22:37:21 +00:00
|
|
|
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(1000000000000000000, None, 61)
|
2018-03-03 22:37:21 +00:00
|
|
|
self.assertEqual(text, '1 ETC')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(1000000000000000000, None, 31)
|
2018-12-05 14:38:49 +00:00
|
|
|
self.assertEqual(text, '1 tRBTC')
|
2017-12-27 11:48:05 +00:00
|
|
|
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(1000000000000000001, None, 1)
|
2018-02-09 12:36:08 +00:00
|
|
|
self.assertEqual(text, '1.000000000000000001 ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(10000000000000000001, None, 1)
|
2018-02-09 12:36:08 +00:00
|
|
|
self.assertEqual(text, '10.000000000000000001 ETH')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(10000000000000000001, None, 61)
|
2018-02-09 12:36:08 +00:00
|
|
|
self.assertEqual(text, '10.000000000000000001 ETC')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(1000000000000000001, None, 31)
|
2018-12-05 14:38:49 +00:00
|
|
|
self.assertEqual(text, '1.000000000000000001 tRBTC')
|
2018-02-09 12:36:08 +00:00
|
|
|
|
2021-08-31 09:47:56 +00:00
|
|
|
def test_unknown_chain(self):
|
2017-12-27 11:48:05 +00:00
|
|
|
# unknown chain
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(1, None, 9999)
|
2018-03-03 22:37:21 +00:00
|
|
|
self.assertEqual(text, '1 Wei UNKN')
|
2018-03-09 15:12:17 +00:00
|
|
|
text = format_ethereum_amount(10000000000000000001, None, 9999)
|
2018-02-09 12:36:08 +00:00
|
|
|
self.assertEqual(text, '10.000000000000000001 UNKN')
|
2017-12-27 11:48:05 +00:00
|
|
|
|
2021-08-31 09:47:56 +00:00
|
|
|
def test_tokens(self):
|
2019-05-16 10:50:23 +00:00
|
|
|
# tokens with low decimal values
|
|
|
|
# USDC has 6 decimals
|
2019-05-16 11:29:47 +00:00
|
|
|
usdc_token = token_by_chain_address(1, unhexlify("a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"))
|
2019-05-16 10:50:23 +00:00
|
|
|
# ICO has 10 decimals
|
2019-05-16 11:29:47 +00:00
|
|
|
ico_token = token_by_chain_address(1, unhexlify("a33e729bf4fdeb868b534e1f20523463d9c46bee"))
|
2019-05-16 10:50:23 +00:00
|
|
|
|
|
|
|
# when decimals < 10, should never display 'Wei' format
|
|
|
|
text = format_ethereum_amount(1, usdc_token, 1)
|
|
|
|
self.assertEqual(text, '0.000001 USDC')
|
|
|
|
text = format_ethereum_amount(0, usdc_token, 1)
|
|
|
|
self.assertEqual(text, '0 USDC')
|
|
|
|
|
|
|
|
text = format_ethereum_amount(1, ico_token, 1)
|
|
|
|
self.assertEqual(text, '1 Wei ICO')
|
|
|
|
text = format_ethereum_amount(9, ico_token, 1)
|
|
|
|
self.assertEqual(text, '9 Wei ICO')
|
|
|
|
text = format_ethereum_amount(10, ico_token, 1)
|
|
|
|
self.assertEqual(text, '0.000000001 ICO')
|
|
|
|
text = format_ethereum_amount(11, ico_token, 1)
|
|
|
|
self.assertEqual(text, '0.0000000011 ICO')
|
|
|
|
|
2021-08-31 09:47:56 +00:00
|
|
|
def test_unknown_token(self):
|
|
|
|
unknown_token = token_by_chain_address(1, b"hello")
|
|
|
|
text = format_ethereum_amount(1, unknown_token, 1)
|
|
|
|
self.assertEqual(text, '1 Wei UNKN')
|
|
|
|
text = format_ethereum_amount(0, unknown_token, 1)
|
|
|
|
self.assertEqual(text, '0 Wei UNKN')
|
|
|
|
# unknown token has 0 decimals so is always wei
|
|
|
|
text = format_ethereum_amount(1000000000000000000, unknown_token, 1)
|
2022-07-28 14:10:19 +00:00
|
|
|
self.assertEqual(text, '1,000,000,000,000,000,000 Wei UNKN')
|
2021-08-31 09:47:56 +00:00
|
|
|
|
2017-12-27 11:48:05 +00:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
unittest.main()
|