package hep.aida.ref.test.jaida; import hep.aida.IAnalysisFactory; import hep.aida.ICloud1D; import hep.aida.IHistogram1D; import hep.aida.IHistogramFactory; import hep.aida.ITree; import hep.aida.ref.event.AIDAListener; import hep.aida.ref.event.IsObservable; import hep.aida.ref.tree.Tree; import java.util.EventObject; import java.util.Random; import junit.framework.TestCase; /** * * @author tonyj * @version $Id: TestEvents.java 8584 2006-08-10 23:06:37Z duns $ */ public class TestEvents extends TestCase { public TestEvents(String testName) { super(testName); } protected void tearDown() throws Exception { super.tearDown(); } public void testCloudEvents() { Random r = new Random(); IAnalysisFactory af = IAnalysisFactory.create(); IHistogramFactory histogramFactory = af.createHistogramFactory(af.createTreeFactory().create()); ICloud1D c1 = histogramFactory.createCloud1D("test"); IsObservable obs = (IsObservable) c1; Counter counter1 = new Counter(); Counter counter2 = new Counter(); obs.addListener(counter1); for (int i=0; i<10; i++) c1.fill(r.nextDouble()); counter1.test(1); counter2.test(0); obs.addListener(counter2); for (int i=0; i<10; i++) c1.fill(r.nextDouble()); counter1.test(1); counter2.test(1); obs.setValid(counter1); c1.fill(r.nextDouble()); counter1.test(2); counter2.test(1); for (int i=0; i<10; i++) c1.fill(r.nextDouble()); counter1.test(2); counter2.test(1); obs.removeListener(counter1); obs.setValid(counter2); for (int i=0; i<10; i++) c1.fill(r.nextDouble()); counter1.test(2); counter2.test(2); obs.removeListener(counter2); } public void testHistogramEvents() { Random r = new Random(); IAnalysisFactory af = IAnalysisFactory.create(); IHistogramFactory histogramFactory = af.createHistogramFactory(af.createTreeFactory().create()); IHistogram1D c1 = histogramFactory.createHistogram1D("test",50,0,1); IsObservable obs = (IsObservable) c1; Counter counter1 = new Counter(); Counter counter2 = new Counter(); obs.addListener(counter1); for (int i=0; i<10; i++) c1.fill(r.nextDouble()); counter1.test(1); counter2.test(0); obs.addListener(counter2); for (int i=0; i<10; i++) c1.fill(r.nextDouble()); counter1.test(1); counter2.test(1); obs.setValid(counter1); c1.fill(r.nextDouble()); counter1.test(2); counter2.test(1); for (int i=0; i<10; i++) c1.fill(r.nextDouble()); counter1.test(2); counter2.test(1); obs.removeListener(counter1); obs.setValid(counter2); for (int i=0; i<10; i++) c1.fill(r.nextDouble()); counter1.test(2); counter2.test(2); obs.removeListener(counter2); } public void testTreeEvents() { Random r = new Random(); IAnalysisFactory af = IAnalysisFactory.create(); ITree tree = af.createTreeFactory().create(); IHistogramFactory histogramFactory = af.createHistogramFactory(tree); IsObservable obs = (IsObservable) tree; Counter counter1 = new Counter(); obs.addListener(counter1); IHistogram1D h1 = histogramFactory.createHistogram1D("test1",50,0,1); ICloud1D c1 = histogramFactory.createCloud1D("test2"); counter1.test(0); ((Tree) tree).checkForChildren("/"); counter1.test(2); IHistogram1D h2 = histogramFactory.createHistogram1D("test3",50,0,1); ICloud1D c2 = histogramFactory.createCloud1D("test4"); counter1.test(4); ICloud1D c3 = histogramFactory.createCloud1D("test4"); counter1.test(6); tree.rm("test1"); tree.rm("test2"); counter1.test(8); } protected void setUp() throws Exception { super.setUp(); } private class Counter implements AIDAListener { private int count = 0; public void stateChanged(EventObject e) { count++; } void test(int expectedCount) { assertEquals(expectedCount,count); } } }