示例#1
0
def test_should_format_two_different_tokens(token1, token2, some_address):
    # given
    transfer1 = Transfer(token1, some_address, some_address,
                         Wad.from_number(105))
    transfer2 = Transfer(token2, some_address, some_address,
                         Wad.from_number(17))

    # expect
    assert TransferFormatter().format([transfer1, transfer2]) \
        == "105.000000000000000000 TK1 and 17.000000000000000000 TK2"
示例#2
0
def test_should_format_net_balances(token1, our_address, some_address):
    # given
    transfer1 = Transfer(token1, our_address, some_address,
                         Wad.from_number(15))
    transfer2 = Transfer(token1, some_address, our_address,
                         Wad.from_number(17))

    # expect
    assert TransferFormatter().format_net([transfer1, transfer2], our_address) \
        == "2.000000000000000000 TK1"
示例#3
0
def test_should_format_net_balances_excluding_transfers_between_us(
        token1, our_address, some_address):
    # given
    transfer1 = Transfer(token1, some_address, our_address, Wad.from_number(4))
    transfer2 = Transfer(token1, our_address, some_address,
                         Wad.from_number(1.5))
    transfer3 = Transfer(token1, our_address, our_address, Wad.from_number(50))

    # expect
    assert TransferFormatter().format_net([transfer1, transfer2, transfer3], our_address) \
        == "2.500000000000000000 TK1"
示例#4
0
def test_should_format_net_balances_if_multiple_transfers(
        token1, our_address, some_address):
    # given
    transfer1 = Transfer(token1, our_address, some_address,
                         Wad.from_number(15))
    transfer2 = Transfer(token1, some_address, our_address,
                         Wad.from_number(17))
    transfer3 = Transfer(token1, some_address, our_address,
                         Wad.from_number(3.5))

    # expect
    assert TransferFormatter().format_net([transfer1, transfer2, transfer3], our_address) \
        == "5.500000000000000000 TK1"
示例#5
0
def test_should_not_include_zeros_in_net_balances(token1, token2, our_address,
                                                  some_address):
    # given
    transfer1 = Transfer(token1, our_address, some_address,
                         Wad.from_number(15))
    transfer2 = Transfer(token1, some_address, our_address,
                         Wad.from_number(17))
    transfer3 = Transfer(token2, our_address, some_address,
                         Wad.from_number(22.5))
    transfer4 = Transfer(token2, some_address, our_address,
                         Wad.from_number(22.5))

    # expect
    assert TransferFormatter().format_net([transfer1, transfer2, transfer3, transfer4], our_address) \
        == "2.000000000000000000 TK1"
示例#6
0
def test_should_format_net_balances_for_more_than_one_token(
        token1, token2, our_address, some_address):
    # given
    transfer1 = Transfer(token1, our_address, some_address,
                         Wad.from_number(15))
    transfer2 = Transfer(token1, some_address, our_address,
                         Wad.from_number(17))
    transfer3 = Transfer(token2, our_address, some_address,
                         Wad.from_number(2.5))
    transfer4 = Transfer(token2, some_address, our_address,
                         Wad.from_number(100))

    # expect
    assert TransferFormatter().format_net([transfer1, transfer2, transfer3, transfer4], our_address) \
        == "2.000000000000000000 TK1 and 97.500000000000000000 TK2"
示例#7
0
def test_should_format_single_transfer(token1, some_address):
    # given
    transfer = Transfer(token1, some_address, some_address,
                        Wad.from_number(105))

    # expect
    assert TransferFormatter().format([transfer
                                       ]) == "105.000000000000000000 TK1"
示例#8
0
def test_support_iterators(token1, some_address):
    # given
    transfer = Transfer(token1, some_address, some_address,
                        Wad.from_number(11.5))

    # expect
    assert TransferFormatter().format(iter([transfer
                                            ])) == "11.500000000000000000 TK1"
示例#9
0
 def execute_opportunity_step_by_step(self, opportunity: Sequence):
     """Execute the opportunity step-by-step."""
     all_transfers = []
     for conversion in opportunity.steps:
         receipt = conversion.execute()
         if receipt:
             all_transfers += receipt.transfers
             outgoing = TransferFormatter().format(
                 filter(Transfer.outgoing(self.our_address),
                        receipt.transfers))
             incoming = TransferFormatter().format(
                 filter(Transfer.incoming(self.our_address),
                        receipt.transfers))
             logging.info(f"Exchanged {outgoing} to {incoming}")
         else:
             self.errors += 1
             return
     logging.info(
         f"The profit we made is {TransferFormatter().format_net(all_transfers, self.our_address)}."
     )