@pytest.mark.asyncio
async def test_transfer_happy_flow(token_contract: StarknetContract, uint256: Callable):
    transfer_amount = uint256(TRANSFER_AMOUNT)
    (await token_contract.transfer(recipient=uninitialized_account, amount=transfer_amount).invoke(caller_address=initialized_account))
    expected_balance = uint256((initial_balances[initialized_account] - TRANSFER_AMOUNT))
    execution_info = (await token_contract.balanceOf(account=initialized_account).call())
    assert (execution_info.result == (expected_balance,))
    execution_info = (await token_contract.balanceOf(account=uninitialized_account).call())
    assert (execution_info.result == (transfer_amount,))
    execution_info = (await token_contract.totalSupply().call())
    assert (execution_info.result == (uint256(initial_total_supply),))
    (await token_contract.transfer(recipient=initialized_account, amount=transfer_amount).invoke(caller_address=uninitialized_account))
    execution_info = (await token_contract.balanceOf(account=initialized_account).call())
    assert (execution_info.result == (uint256(initial_balances[initialized_account]),))
    execution_info = (await token_contract.balanceOf(account=uninitialized_account).call())
    assert (execution_info.result == (uint256(0),))
    (await token_contract.transfer(recipient=initialized_account, amount=transfer_amount).invoke(caller_address=initialized_account))
    execution_info = (await token_contract.balanceOf(account=initialized_account).call())
    assert (execution_info.result == (uint256(initial_balances[initialized_account]),))
@pytest.mark.asyncio
async def test_transfer_happy_flow(token_contract: StarknetContract, uint256: Callable):
    transfer_amount = uint256(TRANSFER_AMOUNT)
    (await token_contract.transfer(recipient=uninitialized_account, amount=transfer_amount).invoke(caller_address=initialized_account))
    expected_balance = uint256((initial_balances[initialized_account] - TRANSFER_AMOUNT))
    execution_info = (await token_contract.balanceOf(account=initialized_account).call())
    assert (execution_info.result == (expected_balance,))
    execution_info = (await token_contract.balanceOf(account=uninitialized_account).call())
    assert (execution_info.result == (transfer_amount,))
    execution_info = (await token_contract.totalSupply().call())
    assert (execution_info.result == (uint256(initial_total_supply),))
    (await token_contract.transfer(recipient=initialized_account, amount=transfer_amount).invoke(caller_address=uninitialized_account))
    execution_info = (await token_contract.balanceOf(account=initialized_account).call())
    assert (execution_info.result == (uint256(initial_balances[initialized_account]),))
    execution_info = (await token_contract.balanceOf(account=uninitialized_account).call())
    assert (execution_info.result == (uint256(0),))
    (await token_contract.transfer(recipient=initialized_account, amount=transfer_amount).invoke(caller_address=initialized_account))
    execution_info = (await token_contract.balanceOf(account=initialized_account).call())
    assert (execution_info.result == (uint256(initial_balances[initialized_account]),))