In order to have a proper place to initialize the agent, a first callback method has been introduced. Right after the agent has been started after_start is called once.
module Demo
class Example < Tournament::Agent
def after_start
# initialize
end
def think
# called periodically
end
end
end
after_start is called just after the thread for the agent has been forked and one step before the think loop. Here's a simplificated code snippet from the game class, to see how it's implemented:
Thread.fork do
agent.after_start
begin
agent.think
end until stopped?
end
In your test cases the agent should now be created again before each test, as create_agent also calls after_start.
before :all do load_field_fixtures 'greenfields' end before :each do @agent = create_agent Demo::TheGood endThere's also a test helper method create_agent_without_start, if you need to set test expectations before calling after_start.
Thanks to Tungmar for his feedback!
Keine Kommentare:
Kommentar veröffentlichen