// $Header: /home/cvs/projects/voop-itu/src/dk/itu/voop/thread/AgentTest.java,v 1.2 2001/04/03 20:44:25 lth Exp $ package dk.itu.voop.thread; import junit.framework.*; public class AgentTest extends TestCase { public AgentTest(String name) { super(name); } public static void main(String args[]) { junit.textui.TestRunner.run(suite()); } public static Test suite() { return new TestSuite(AgentTest.class); } public void test() throws InterruptedException { class TestListener implements Agent.Listener { public void onSomeTaskPerformed(int result) { assertEquals(42, result); // simulate that this takes some time try { Thread.sleep(200); } catch(InterruptedException e) { /* ignore */ } _onSomeTaskPerformed = true; } public void onAnotherTaskPerformed(String argument) { _onAnotherTaskPerformed = true; _argument = argument; } public void onTerminated() { _onTerminated = true; } public boolean _onSomeTaskPerformed = false; public boolean _onAnotherTaskPerformed = false; public boolean _onTerminated = false; public String _argument; } TestListener testListener = new TestListener(); // start agent Agent agent = new Agent(); agent.addListener(testListener); assert(!testListener._onTerminated); // request SomeTask (takes a long time) assert(!testListener._onSomeTaskPerformed); agent.requestSomeTask(); assert(!testListener._onSomeTaskPerformed); // request AnotherTask String testArgument = "davs"; assert(!testListener._onAnotherTaskPerformed); agent.requestAnotherTask(testArgument); assert(!testListener._onAnotherTaskPerformed); // wait until tasks must have finished Thread.sleep(300); assert(testListener._onSomeTaskPerformed); assert(testListener._onAnotherTaskPerformed); assertEquals(testArgument, testListener._argument); // terminate agent agent.requestTermination(); agent.join(); assert(testListener._onTerminated); } }