コード例 #1
0
def test_doBuyAndConsumeDT_have_rugged_pools(alice_info):
    alice_pool = alice_info.pool
    state = MockState()
    agent = DataconsumerAgent("agent1", USD=0.0, OCEAN=1000.0)

    agent._s_since_buy += agent._s_between_buys

    state.agents["pool1"] = PoolAgent("pool1", alice_pool)
    assert agent._candPoolAgents(state)  # have useful pools

    state.rugged_pools = ["pool1"]  # pylint: disable=attribute-defined-outside-init
    assert not agent._candPoolAgents(state)  # do _not_ have useful pools
コード例 #2
0
def test_buyAndConsumeDT(alice_info):
    state = MockState()

    publisher_agent = SimpleAgent("agent1", USD=0.0, OCEAN=0.0)
    publisher_agent._wallet = alice_info.agent._wallet
    state.addAgent(publisher_agent)

    OCEAN_before = 1000.0
    consumer_agent = DataconsumerAgent("consumer1", USD=0.0, OCEAN=OCEAN_before)
    consumer_agent._s_since_buy += consumer_agent._s_between_buys
    state.addAgent(consumer_agent)

    pool_agent = PoolAgent("pool1", alice_info.pool)
    state.addAgent(pool_agent)

    assert state.agents.filterToPool().values()  # have pools
    assert consumer_agent._candPoolAgents(state)  # have useful pools
    assert consumer_agent._doBuyAndConsumeDT(state)

    # buyAndConsumeDT
    dt = state.agents["pool1"].datatoken

    assert consumer_agent.OCEAN() == OCEAN_before
    assert consumer_agent.DT(dt) == 0.0

    OCEAN_spend = consumer_agent._buyAndConsumeDT(state)

    OCEAN_after = consumer_agent.OCEAN()
    OCEAN_gained = OCEAN_spend * (1.0 + consumer_agent._profit_margin_on_consume)
    assert OCEAN_after == approx(OCEAN_before - OCEAN_spend + OCEAN_gained)

    assert consumer_agent.DT(dt) == 0.0  # bought 1.0, then consumed it

    # consumeDT
    assert state.agents.agentByAddress(pool_agent.controller_address)
コード例 #3
0
def test_doBuy(alice_pool):
    state = MockState()

    agent = DataconsumerAgent("agent1", USD=0.0, OCEAN=1000.0)

    assert agent._s_since_buy == 0
    assert agent._s_between_buys > 0

    assert not agent._doBuy(state)

    agent._s_since_buy += agent._s_between_buys
    assert not state.agents.filterToPool().values()
    assert not agent._doBuy(state)  #still no, since no pools

    state.agents["pool1"] = PoolAgent("pool1", alice_pool)
    assert state.agents.filterToPool().values()  #have pools
    assert agent._candPoolAgents(state)  #have useful pools
    assert agent._doBuy(state)