package com.activequant.utils.worker;
import java.util.concurrent.LinkedBlockingQueue;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class WorkerThreadTest extends TestCase {
/**
* @return the suite of tests being tested
*/
public static Test suite() {
return new TestSuite(WorkerThreadTest.class);
}
public void testThreading() throws InterruptedException {
LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<String>();
for (int i = 0; i < 100; i++) queue.add("SOMETEXT");
for (int i = 0; i < 1; i++) queue.add("TERMINATE");
AnonymousWorker worker = new AnonymousWorker();
new Thread(new WorkerThread<String>(queue, worker)).start();
// give it some time ...
Thread.sleep(100);
assertEquals(100, worker.counter);
}
class AnonymousWorker extends Worker<String> {
int counter = 0;
public void process(String event) {
if (event.equals("TERMINATE")) {
setRunFlag(false);
return;
}
counter++;
}
}
}