Exemple #1
0
    def test_token_registry(self):
        # given
        ERC20Token.register_token(
            Address('0x0100000000000000000000000000000000000000'), 'ABC')
        ERC20Token.register_token(
            Address('0x0200000000000000000000000000000000000000'), 'DEF')
        ERC20Token.register_token(
            Address('0x0300000000000000000000000000000000000000'), 'GHI')

        # expect
        assert ERC20Token.token_name_by_address(
            Address('0x0100000000000000000000000000000000000000')) == 'ABC'
        assert ERC20Token.token_name_by_address(
            Address('0x0200000000000000000000000000000000000000')) == 'DEF'
        assert ERC20Token.token_name_by_address(
            Address('0x0300000000000000000000000000000000000000')) == 'GHI'
        with pytest.raises(Exception):
            assert ERC20Token.token_name_by_address(
                Address('0x0400000000000000000000000000000000000000'))

        # and
        assert ERC20Token.token_address_by_name('ABC') == Address(
            '0x0100000000000000000000000000000000000000')
        assert ERC20Token.token_address_by_name('DEF') == Address(
            '0x0200000000000000000000000000000000000000')
        assert ERC20Token.token_address_by_name('GHI') == Address(
            '0x0300000000000000000000000000000000000000')
        with pytest.raises(Exception):
            ERC20Token.token_address_by_name('XXX')
Exemple #2
0
    def __str__(self):
        def amt(amount: Wad) -> str:
            return f"{amount} " if amount is not None else ""

        source_token_name = ERC20Token.token_name_by_address(self.source_token)
        target_token_name = ERC20Token.token_name_by_address(self.target_token)

        return f"[{amt(self.source_amount)}{source_token_name} -> {amt(self.target_amount)}{target_token_name} " \
               f"@{self.rate} by {self.method} (max={self.max_source_amount} {source_token_name})]"