/* * class: ChainableRecordListenerDecoratorTest * * Version $Id: ChainableRecordListenerDecoratorTest.java 8584 2006-08-10 23:06:37Z duns $ * * Date: February 19 2003 * * (c) 2003 LBNL */ package org.freehep.record.loop.event.test; import org.freehep.record.loop.event.ChainableRecordListenerDecorator; import org.freehep.record.loop.event.ConfigurationEvent; import org.freehep.record.loop.event.RecordEvent; import org.freehep.record.loop.event.RecordListener; import org.freehep.record.loop.event.RecordSuppliedEvent; import junit.framework.*; import java.util.TooManyListenersException; /** * This class defines the tests that any ChainableRecordListener object should * pass. * * @version $Id: ChainableRecordListenerDecoratorTest.java 8584 2006-08-10 23:06:37Z duns $ * @author patton */ public class ChainableRecordListenerDecoratorTest extends RecordListenerNoRunTest { // public static final member data // protected static final member data // static final member data // private static final member data // private static member data /** The configuration object to use. */ private static final Object TEST_CONFIGURATION = new Object(); /** The record object to use. */ private static final Object TEST_RECORD = new Object(); /** The reconfiguration object to use. */ private static final Object TEST_RECONFIGURATION = new Object(); /** Used to record last MockListener that was executed. */ private int lastId; // private instance member data /** The object being tested. */ private ChainableRecordListenerDecorator testObject; /** The object which succeeds the listener in the test object. */ private RecordListener successor; // constructors /** * Create an instance of this class. * Default constructor is declared, but private, to stop accidental * creation of an instance of the class. */ private ChainableRecordListenerDecoratorTest() { this(null); } /** * Constructs and instance of this test. * @param name */ public ChainableRecordListenerDecoratorTest(String name) { super(name); } // instance member function (alphabetic) protected void prepareConfiguration() { setConfiguration(TEST_CONFIGURATION); } protected void prepareRecordSupplied() { setRecord(TEST_RECORD); } protected void prepareReconfiguration() { setConfiguration(TEST_RECONFIGURATION); } /** * Sets up the fixture, for example, open a network connection. * This method is called before a test is executed. */ protected void setUp() { testObject = new ChainableRecordListenerDecorator(new MockListener(1, 0)); setRecordListener(testObject); successor = new ChainableRecordListenerDecorator(new MockListener(2, 1)); try { testObject.addRecordListener(successor); } catch (TooManyListenersException e) { // Ignored as can not happen. } } /** * Tears down the fixture, for example, close a network connection. * This method is called after a test is executed. */ protected void tearDown() { setRecordListener(null); testObject = null; } public void testConfigureFromReady() { super.testConfigureFromReady(); lastId = 0; } public void testFinishFromSuspended() { super.testFinishFromSuspended(); lastId = 0; } public void testProcessingFromConfigured() { super.testProcessingFromConfigured(); lastId = 0; } public void testProcessingFromProcessing() { super.testProcessingFromProcessing(); lastId = 0; } public void testReconfigureFromSuspended() { super.testReconfigureFromSuspended(); lastId = 0; } public void testResumeFromSuspended() { super.testResumeFromSuspended(); lastId = 0; } public void testSuspendFromConfigured() { super.testSuspendFromConfigured(); lastId = 0; } public void testSuspendFromProcessing() { super.testSuspendFromProcessing(); lastId = 0; } // static member functions (alphabetic) private class MockListener implements RecordListener { private int id; private int precedingId; public MockListener(int id, int precedingId) { this.id = id; this.precedingId = precedingId; } public void configure(ConfigurationEvent event) { Assert.assertEquals(lastId, precedingId); Assert.assertEquals(TEST_CONFIGURATION, event.getConfiguration()); lastId = id; } public void finish(RecordEvent event) { Assert.assertEquals(lastId, precedingId); lastId = id; } public void recordSupplied(RecordSuppliedEvent event) { Assert.assertEquals(lastId, precedingId); Assert.assertEquals(TEST_RECORD, event.getRecord()); lastId = id; } public void reconfigure(ConfigurationEvent event) { Assert.assertEquals(lastId, precedingId); Assert.assertEquals(TEST_RECONFIGURATION, event.getConfiguration()); lastId = id; } public void resume(RecordEvent event) { Assert.assertEquals(lastId, precedingId); lastId = id; } public void suspend(RecordEvent event) { Assert.assertEquals(lastId, precedingId); lastId = id; } } /** * Create test suite for this class. */ public static Test suite() { return new TestSuite(ChainableRecordListenerDecoratorTest.class); } // Description of this object. // public String toString() {} /** * Main routine which runs text test in standalone mode. */ public static void main(String args[]) { junit.textui.TestRunner.run(suite()); } }