I've created some more tests (patch below) for following classes:

org.argouml.cognitive.critics.SnoozeOrder
org.argouml.cognitive.checklist.Checklist
org.argouml.cognitive.checklist.CheckItem
org.argouml.cognitive.checklist.CheclistStatus
org.argouml.application.events.ArgoEventPump

The test for ArgoEventPump currently fails for an issue which I've
documented in the bugtracker.
http://argouml.tigris.org/issues/show_bug.cgi?id=4995
The issue is that the pump will call listeners for event types for
which they did not register.  Some aroguml code may have come to rely
on this behavior but to me it seems incorrect.  Take a look at the
issue which includes a patch and let me know what you think.

Thanks,
Scott

New Tests Patch
-------------------------

Index: tests/org/argouml/cognitive/critics/TestSnoozeOrder.java
===================================================================
--- tests/org/argouml/cognitive/critics/TestSnoozeOrder.java    (revision 0)
+++ tests/org/argouml/cognitive/critics/TestSnoozeOrder.java    (revision 0)
@@ -0,0 +1,79 @@
+// $Id: eclipse-argo-codetemplates.xml 11347 2006-10-26 22:37:44Z linus $
+// Copyright (c) 2008 The Regents of the University of California. All
+// Rights Reserved. Permission to use, copy, modify, and distribute this
+// software and its documentation without fee, and without a written
+// agreement is hereby granted, provided that the above copyright notice
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.cognitive.critics;
+
+import junit.framework.TestCase;
+
+/**
+ *
+ * Tests initialization of SnoozeOrder.
+ */
+public class TestSnoozeOrder extends TestCase {
+
+    /**
+     * The constructor.
+     *
+     * @param name the name of the test.
+     */
+    public TestSnoozeOrder(String name) {
+        super(name);
+    }
+
+    /**
+     * @throws java.lang.Exception
+     * @see junit.framework.TestCase#setUp()
+     */
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    /**
+     * Test constructor and some basic methods.
+     */
+    public void testBasics() {
+        // initialize SnoozeOrder
+        SnoozeOrder snooze = new SnoozeOrder();
+
+        // verify SnoozeOrder starts off not snoozed
+        assertTrue("SnoozeOrder started as snoozed", !snooze.getSnoozed());
+
+        // snooze and verify its been enabled
+        snooze.snooze();
+        assertTrue("SnoozeOrder.snoozed() failed", snooze.getSnoozed());
+
+        // unsnooze and verify its been disabled
+        snooze.unsnooze();
+        assertTrue("SnoozeOrder.unsnoozed() failed", !snooze.getSnoozed());
+
+        // snooze and verify its been enabled
+        snooze.setSnoozed(true);
+        assertTrue("Snooze.Order.setSnoozed(true) failed",
snooze.getSnoozed());
+
+        // snooze and verify its been enabled
+        snooze.setSnoozed(false);
+        assertTrue("Snooze.Order.setSnoozed(false) failed",
!snooze.getSnoozed());
+    }
+}
Index: tests/org/argouml/cognitive/checklist/TestChecklist.java
===================================================================
--- tests/org/argouml/cognitive/checklist/TestChecklist.java    (revision 0)
+++ tests/org/argouml/cognitive/checklist/TestChecklist.java    (revision 0)
@@ -0,0 +1,117 @@
+// $Id: eclipse-argo-codetemplates.xml 11347 2006-10-26 22:37:44Z linus $
+// Copyright (c) 2008 The Regents of the University of California. All
+// Rights Reserved. Permission to use, copy, modify, and distribute this
+// software and its documentation without fee, and without a written
+// agreement is hereby granted, provided that the above copyright notice
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.cognitive.checklist;
+
+import junit.framework.TestCase;
+
+/**
+*
+* Tests initialization of Checklist.
+*/
+public class TestChecklist extends TestCase {
+
+    /**
+     * The constructor.
+     *
+     * @param name the name of the test.
+     */
+    public TestChecklist(String name) {
+        super(name);
+    }
+
+    /**
+     * @throws java.lang.Exception
+     * @see junit.framework.TestCase#setUp()
+     */
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    /**
+     * Test constructor and some basic methods.
+     */
+    public void testBasics() {
+
+        // initialize the Checklist
+        Checklist list = new Checklist();
+
+        // add some test data
+        list.addItem("Test1");
+        list.addItem("Test2");
+        list.setNextCategory("Test Category");
+        list.addItem("Test3");
+        list.addItem("Test4");
+
+        // verify the size of the list
+        assertTrue("Checklist.size() is incorrect", list.size() == 4);
+
+        // verify the items were correctly added
+        int iter = 0;
+        for (CheckItem item : list.getCheckItemList()) {
+
+            String category = "";
+            String description = "";
+
+            switch (++iter)
+            {
+            case 1:
+                category = "General";
+                description = "Test1";
+                break;
+
+            case 2:
+                category = "General";
+                description = "Test2";
+                break;
+
+            case 3:
+                category = "Test Category";
+                description = "Test3";
+                break;
+
+            case 4:
+                category = "Test Category";
+                description = "Test4";
+                break;
+            }
+
+            // test that the category and description are correct
+            assertTrue("Checklist items incorrectly added (category: "
+                    + category + ", description: )" + description,
+                    category == item.getCategory()
+                    && description == item.getDescription());
+        }
+
+        // create a new list to test the addAll
+        Checklist list2 = new Checklist();
+
+        // add all of the test items from the first list
+        list2.addAll(list);
+
+        // verify the size of the new list
+        assertTrue("Checklist.addAll(Checklist) failed", list2.size() == 4);
+    }
+}
Index: tests/org/argouml/cognitive/checklist/TestCheckItem.java
===================================================================
--- tests/org/argouml/cognitive/checklist/TestCheckItem.java    (revision 0)
+++ tests/org/argouml/cognitive/checklist/TestCheckItem.java    (revision 0)
@@ -0,0 +1,120 @@
+// $Id: eclipse-argo-codetemplates.xml 11347 2006-10-26 22:37:44Z linus $
+// Copyright (c) 2008 The Regents of the University of California. All
+// Rights Reserved. Permission to use, copy, modify, and distribute this
+// software and its documentation without fee, and without a written
+// agreement is hereby granted, provided that the above copyright notice
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.cognitive.checklist;
+
+import junit.framework.TestCase;
+import org.tigris.gef.util.PredicateTrue;
+
+/**
+*
+* Tests initialization of CheckItem.
+*/
+public class TestCheckItem extends TestCase {
+
+    /**
+     * The constructor.
+     *
+     * @param name the name of the test.
+     */
+    public TestCheckItem(String name) {
+        super(name);
+    }
+
+    /**
+     * @throws java.lang.Exception
+     * @see junit.framework.TestCase#setUp()
+     */
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    /**
+     * Test constructor and some basic methods.
+     */
+    public void testBasics() {
+
+        // initialize test data
+        String category = "TestCheckItem Category";
+        String description = "TestCheckItem Description";
+        String moreInfo = "http://argouml.tigris.org/test";;
+
+        // Construct a CheckItem
+        CheckItem item = new CheckItem(category, description,
+                moreInfo, PredicateTrue.theInstance());
+
+        // (1) test that the properties were correctly initialized
+        assertTrue("CheckItem.getDescription() incorrect "
+                       + "after initialization (1)",
+                item.getDescription() == description);
+        assertTrue("CheckItem.getMoreInfoURL() incorrect "
+                       + "after initialization (1)",
+                item.getMoreInfoURL() == moreInfo);
+        assertTrue("CheckItem.getCategory() incorrect after "
+                       + "initialization (1)",
+                item.getCategory() == category);
+        assertTrue("CheckItem.getPredicate() incorrect after "
+                + "initialization (1)",
+                item.getPredicate() == PredicateTrue.theInstance());
+
+        // reset the values to something different
+        category += "- Set Test";
+        description += "- Set Test";
+        moreInfo += "- Set Test";
+
+        // update the values
+        item.setCategory(category);
+        item.setDescription(description);
+        item.setMoreInfoURL(moreInfo);
+        item.setPredicate(null);
+
+        assertTrue("CheckItem.getDescription() incorrect after set",
+                item.getDescription() == description);
+        assertTrue("CheckItem.getMoreInfoURL() incorrect after set",
+                item.getMoreInfoURL() == moreInfo);
+        assertTrue("CheckItem.getCategory() incorrect after set",
+                item.getCategory() == category);
+        assertTrue("CheckItem.getPredicate() incorrect after set",
+                item.getPredicate() == null);
+
+        // (2) Construct another CheckItem
+        CheckItem item2 = new CheckItem(category, description);
+
+        // test that the properties were correctly initialized
+        assertTrue("CheckItem.getDescription() incorrect "
+                       + "after initialization (2)",
+                item.getDescription() == description);
+        assertTrue("CheckItem.getMoreInfoURL() incorrect "
+                       + "after initialization (2)",
+                item.getMoreInfoURL() == moreInfo);
+        assertTrue("CheckItem.getCategory() incorrect "
+                       + "after initialization (2)",
+                item.getCategory() == category);
+
+        // verify that the equivalence test works
+        assertTrue("CheckItem.equals(o) incorrect", item2.equals(item));
+
+    }
+}
Index: tests/org/argouml/cognitive/checklist/TestChecklistStatus.java
===================================================================
--- tests/org/argouml/cognitive/checklist/TestChecklistStatus.java      
(revision 0)
+++ tests/org/argouml/cognitive/checklist/TestChecklistStatus.java      
(revision 0)
@@ -0,0 +1,135 @@
+// $Id: eclipse-argo-codetemplates.xml 11347 2006-10-26 22:37:44Z linus $
+// Copyright (c) 2008 The Regents of the University of California. All
+// Rights Reserved. Permission to use, copy, modify, and distribute this
+// software and its documentation without fee, and without a written
+// agreement is hereby granted, provided that the above copyright notice
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.cognitive.checklist;
+
+import junit.framework.TestCase;
+
+/**
+*
+* Tests initialization of ChecklistStatus.
+*/
+public class TestChecklistStatus extends TestCase {
+
+    /**
+     * The constructor.
+     *
+     * @param name the name of the test.
+     */
+    public TestChecklistStatus(String name) {
+        super(name);
+    }
+
+    /**
+     * @throws java.lang.Exception
+     * @see junit.framework.TestCase#setUp()
+     */
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    /**
+     * Test constructor and some basic methods.
+     */
+    public void testBasics() {
+
+        String category = "";
+        String description = "";
+
+        // initialize the ChecklistStatus
+        ChecklistStatus list = new ChecklistStatus();
+
+        // add some test data
+        list.addItem("Test1");
+        list.addItem("Test2");
+        list.setNextCategory("Test Category");
+        list.addItem("Test3");
+        list.addItem("Test4");
+
+        // verify the size of the list
+        assertTrue("ChecklistStatus.size() is incorrect", list.size() == 4);
+
+        // verify the items were correctly added
+        int iter = 0;
+        for (CheckItem item : list.getCheckItemList()) {
+
+            switch (++iter)
+            {
+            case 1:
+                category = "General";
+                description = "Test1";
+                break;
+
+            case 2:
+                category = "General";
+                description = "Test2";
+                break;
+
+            case 3:
+                category = "Test Category";
+                description = "Test3";
+                break;
+
+            case 4:
+                category = "Test Category";
+                description = "Test4";
+                break;
+            }
+
+            // test that the category and description are correct
+            assertTrue("ChecklistStatus items incorrectly added (category: "
+                    + category + ", description: )" + description,
+                    category == item.getCategory()
+                    && description == item.getDescription());
+        }
+
+        // create a new list to test the addAll
+        ChecklistStatus list2 = new ChecklistStatus();
+
+        // add all of the test items from the first list
+        list2.addAll(list);
+
+        // verify the size of the new list
+        assertTrue("ChecklistStatus.addAll(Checklist) failed",
list2.size() == 4);
+
+        category = "Test add";
+        description = "CheclistCategory.add";
+        CheckItem item = new CheckItem(category, description);
+
+        // add the new item
+        list2.add(item);
+
+        // verify item was added
+        assertTrue("ChecklistStatus.add(CheckItem) failed",
+                list2.getCheckItemList().size() == 5);
+
+        // verify new item is equivalent
+        if (list2.getCheckItemList().size() == 5)
+            assertTrue("ChecklistStatus.getCheckItemList().get(4) "
+                       + "failed",
+                       list2.getCheckItemList().get(4).equals(item));
+
+    }
+}
Index: tests/org/argouml/application/events/TestArgoEventPump.java
===================================================================
--- tests/org/argouml/application/events/TestArgoEventPump.java (revision 0)
+++ tests/org/argouml/application/events/TestArgoEventPump.java (revision 0)
@@ -0,0 +1,671 @@
+// $Id: eclipse-argo-codetemplates.xml 11347 2006-10-26 22:37:44Z linus $
+// Copyright (c) 2008 The Regents of the University of California. All
+// Rights Reserved. Permission to use, copy, modify, and distribute this
+// software and its documentation without fee, and without a written
+// agreement is hereby granted, provided that the above copyright notice
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.application.events;
+
+import junit.framework.TestCase;
+
+/**
+*
+* Tests initialization of ArgoEventPump.
+*/
+public class TestArgoEventPump extends TestCase {
+
+    // initialize the event listener trackers which
+    // verify that all of the proper events were fired
+    private TArgoHelpEventListener helpTracker =
+        new TArgoHelpEventListener();
+    private TArgoStatusEventListener statusTracker =
+        new TArgoStatusEventListener();
+    private TArgoProfileEventListener profileTracker =
+        new TArgoProfileEventListener();
+    private TArgoNotationEventListener notationTracker =
+        new TArgoNotationEventListener();
+    private TArgoGeneratorEventListener generatorTracker =
+        new TArgoGeneratorEventListener();
+    private TArgoDiagramAppearanceEventListener diagramTracker =
+        new TArgoDiagramAppearanceEventListener();
+
+    /**
+     * The constructor.
+     *
+     * @param name the name of the test.
+     */
+    public TestArgoEventPump(String name) {
+        super(name);
+    }
+
+    /**
+     * @throws java.lang.Exception
+     * @see junit.framework.TestCase#setUp()
+     */
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // register all of the event listener trackers
+        ArgoEventPump.addListener(
+                ArgoEventTypes.HELP_CHANGED,
+                helpTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.HELP_REMOVED,
+                helpTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.STATUS_TEXT,
+                statusTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.STATUS_CLEARED,
+                statusTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.STATUS_PROJECT_SAVED,
+                statusTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.STATUS_PROJECT_LOADED,
+                statusTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.STATUS_PROJECT_MODIFIED,
+                statusTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.PROFILE_ADDED,
+                profileTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.PROFILE_REMOVED,
+                profileTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.NOTATION_CHANGED,
+                notationTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.NOTATION_ADDED,
+                notationTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.NOTATION_REMOVED,
+                notationTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.NOTATION_PROVIDER_ADDED,
+                notationTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.NOTATION_PROVIDER_REMOVED,
+                notationTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.GENERATOR_CHANGED,
+                generatorTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.GENERATOR_ADDED,
+                generatorTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.GENERATOR_REMOVED,
+                generatorTracker);
+        ArgoEventPump.addListener(
+                ArgoEventTypes.DIAGRAM_FONT_CHANGED,
+                diagramTracker);
+    }
+
+    /**
+     * @throws java.lang.Exception
+     * @see junit.framework.TestCase#tearDown()
+     */
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+
+        // remove all of the listeners
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.HELP_CHANGED,
+                helpTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.HELP_REMOVED,
+                helpTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.STATUS_TEXT,
+                statusTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.STATUS_CLEARED,
+                statusTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.STATUS_PROJECT_SAVED,
+                statusTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.STATUS_PROJECT_LOADED,
+                statusTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.STATUS_PROJECT_MODIFIED,
+                statusTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.PROFILE_ADDED,
+                profileTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.PROFILE_REMOVED,
+                profileTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.NOTATION_CHANGED,
+                notationTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.NOTATION_ADDED,
+                notationTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.NOTATION_REMOVED,
+                notationTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.NOTATION_PROVIDER_ADDED,
+                notationTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.NOTATION_PROVIDER_REMOVED,
+                notationTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.GENERATOR_CHANGED,
+                generatorTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.GENERATOR_ADDED,
+                generatorTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.GENERATOR_REMOVED,
+                generatorTracker);
+        ArgoEventPump.removeListener(
+                ArgoEventTypes.DIAGRAM_FONT_CHANGED,
+                diagramTracker);
+    }
+
+    private void resetTrackers()
+    {
+        helpTracker.resetEventStatus();
+        statusTracker.resetEventStatus();
+        profileTracker.resetEventStatus();
+        notationTracker.resetEventStatus();
+        generatorTracker.resetEventStatus();
+        diagramTracker.resetEventStatus();
+    }
+
+    /**
+     * Test firing of all events.
+     */
+    public void testAllEvents() {
+
+        resetTrackers();
+
+        // fire all of the status events
+        ArgoEvent evt = new ArgoStatusEvent(
+                ArgoEventTypes.STATUS_TEXT,
+                this, "Test Event");
+        ArgoEventPump.fireEvent(evt);
+        evt = new ArgoStatusEvent(
+                ArgoEventTypes.STATUS_CLEARED,
+                this, "Test Event");
+        ArgoEventPump.fireEvent(evt);
+        evt = new ArgoStatusEvent(
+                ArgoEventTypes.STATUS_PROJECT_SAVED,
+                this, "Test Event");
+        ArgoEventPump.fireEvent(evt);
+        evt = new ArgoStatusEvent(
+                ArgoEventTypes.STATUS_PROJECT_LOADED,
+                this, "Test Event");
+        ArgoEventPump.fireEvent(evt);
+        evt = new ArgoStatusEvent(
+                ArgoEventTypes.STATUS_PROJECT_MODIFIED,
+                this, "Test Event");
+        ArgoEventPump.fireEvent(evt);
+
+        // fire all of the diagram events
+        evt = new ArgoDiagramAppearanceEvent(
+                ArgoEventTypes.DIAGRAM_FONT_CHANGED,
+                this);
+        ArgoEventPump.fireEvent(evt);
+
+        // fire all of the generator events
+        evt = new ArgoGeneratorEvent(
+                ArgoEventTypes.GENERATOR_CHANGED,
+                this);
+        ArgoEventPump.fireEvent(evt);
+        evt = new ArgoGeneratorEvent(
+                ArgoEventTypes.GENERATOR_ADDED,
+                this);
+        ArgoEventPump.fireEvent(evt);
+        evt = new ArgoGeneratorEvent(
+                ArgoEventTypes.GENERATOR_REMOVED,
+                this);
+        ArgoEventPump.fireEvent(evt);
+
+        // fire all of the help events
+        evt = new ArgoHelpEvent(
+                ArgoEventTypes.HELP_CHANGED,
+                this, "Test Event");
+        ArgoEventPump.fireEvent(evt);
+        evt = new ArgoHelpEvent(
+                ArgoEventTypes.HELP_REMOVED,
+                this, "Test Event");
+        ArgoEventPump.fireEvent(evt);
+
+        // fire all of the notation events
+        evt = new ArgoNotationEvent(
+                ArgoEventTypes.NOTATION_CHANGED,
+                this);
+        ArgoEventPump.fireEvent(evt);
+        evt = new ArgoNotationEvent(
+                ArgoEventTypes.NOTATION_ADDED,
+                this);
+        ArgoEventPump.fireEvent(evt);
+        evt = new ArgoNotationEvent(
+                ArgoEventTypes.NOTATION_REMOVED,
+                this);
+        ArgoEventPump.fireEvent(evt);
+        evt = new ArgoNotationEvent(
+                ArgoEventTypes.NOTATION_PROVIDER_ADDED,
+                this);
+        ArgoEventPump.fireEvent(evt);
+        evt = new ArgoNotationEvent(
+                ArgoEventTypes.NOTATION_PROVIDER_REMOVED,
+                this);
+        ArgoEventPump.fireEvent(evt);
+
+        // fire all of the profile events
+        evt = new ArgoProfileEvent(
+                ArgoEventTypes.PROFILE_ADDED,
+                this);
+        ArgoEventPump.fireEvent(evt);
+        evt = new ArgoProfileEvent(
+                ArgoEventTypes.PROFILE_REMOVED,
+                this);
+        ArgoEventPump.fireEvent(evt);
+
+        // verify all events were fired correctly
+        assertTrue("ArgoEventPump did not fire all "
+                + "ArgoStatusEvents",
+                statusTracker.allEventsFired());
+
+        assertTrue("ArgoEventPump incorrectly fired "
+                + "ArgoStatusEvents",
+                statusTracker.allEventsFiredCorrectly());
+
+        assertTrue("ArgoEventPump did not fire all "
+               + "ArgoDiagramAppearanceEvents",
+                diagramTracker.allEventsFired());
+
+        assertTrue("ArgoEventPump incorrectly fired "
+                + "ArgoDiagramAppearanceEvents",
+                diagramTracker.allEventsFiredCorrectly());
+
+        assertTrue("ArgoEventPump did not fire all "
+               + "ArgoGeneratorEvents",
+                generatorTracker.allEventsFired());
+
+        assertTrue("ArgoEventPump incorrectly fired "
+                + "ArgoGeneratorEvents",
+                generatorTracker.allEventsFiredCorrectly());
+
+        assertTrue("ArgoEventPump did not fire all "
+               + "ArgoHelpEvents",
+                helpTracker.allEventsFired());
+
+        assertTrue("ArgoEventPump incorrectly fired "
+                + "ArgoHelpEvents",
+                helpTracker.allEventsFiredCorrectly());
+
+        assertTrue("ArgoEventPump did not fire all "
+               + "ArgoNotationEvents",
+                notationTracker.allEventsFired());
+
+        assertTrue("ArgoEventPump incorrectly fired "
+                + "ArgoNotationEvents",
+                notationTracker.allEventsFiredCorrectly());
+
+        assertTrue("ArgoEventPump did not fire all "
+                + "ArgoProfileEvents",
+                profileTracker.allEventsFired());
+
+        assertTrue("ArgoEventPump incorrectly fired " +
+                "ArgoProfileEvents",
+                profileTracker.allEventsFiredCorrectly());
+    }
+
+    /**
+     * Used to track the status of events that have fired.
+     */
+    public abstract class EventTracker
+    {
+        private int numEvents = 0;
+        private int totalEventsFired = 0;
+        protected int eventStatus = 0;
+
+        /**
+         * Initialize a new EventTest
+         * @param numberOfEvents the number of events to be represented
+         */
+        public EventTracker(int numberOfEvents)
+        {
+            numEvents = numberOfEvents;
+        }
+
+        /**
+         * Reset the event status.
+         */
+        public void resetEventStatus()
+        {
+            eventStatus = 0;
+        }
+
+        /**
+         * Update the status of the event of an event as fired.
+         * @param event the an id that represents the event
+         */
+        protected void setEvent(int event)
+        {
+            // keep track of total events fired
+            totalEventsFired++;
+
+            // keep track of which events fired
+            eventStatus |= (0x01 << event);
+        }
+
+        /**
+         * Gets the total number of events that have been fired
+         * @return returns true if all events have been fired
+         */
+        public int getTotalNumberOfEventsFired()
+        {
+            return totalEventsFired;
+        }
+
+
+        /**
+         * Gets the individual number of events that have been fired
+         * @return returns true if all events have been fired
+         */
+        public int getNumberOfEventsFired()
+        {
+            int eventsFired = 0;
+
+            // counts each bit that has been fired
+            for (int events = eventStatus; events > 0; ++eventsFired)
+                events &= events - 1;
+
+            return eventsFired;
+        }
+
+        /**
+         * Determines if all events have been fired
+         * @return returns true if all events have been fired
+         */
+        public boolean allEventsFired()
+        {
+            return (getNumberOfEventsFired() == numEvents);
+        }
+
+        /**
+         * Determines if the events were called the right number of times
+         * @return returns true if the total number of events fired is the
+         * same as all event types
+         */
+        public boolean allEventsFiredCorrectly()
+        {
+            return (getTotalNumberOfEventsFired() == numEvents);
+        }
+    }
+
+    /**
+     * Represents a ArgoDiagramAppearanceEventListener and tracks
+     * the firing of its events
+     */
+    public class TArgoDiagramAppearanceEventListener extends EventTracker
+        implements ArgoDiagramAppearanceEventListener
+    {
+        /**
+         * Initialize the listener
+         */
+        public TArgoDiagramAppearanceEventListener() {
+            super(1);
+        }
+
+        /**
+         * Invoked when any aspect of the notation has been changed.
+         * @param e <code>ArgoNotationEvent</code> describing the change.
+         */
+        public void diagramFontChanged(ArgoDiagramAppearanceEvent e) {
+            setEvent(0);
+        }
+    }
+
+    /**
+     * Represents a ArgoDiagramAppearanceEventListener and tracks the
firing of its events
+     */
+    public class TArgoGeneratorEventListener extends EventTracker
+        implements ArgoGeneratorEventListener
+    {
+        /**
+         * Initialize the listener
+         */
+        public TArgoGeneratorEventListener() {
+            super(3);
+        }
+
+        /**
+         * Invoked when any aspect of the generator has been changed.
+         * @param e <code>ArgoGeneratorEvent</code> describing the change.
+         */
+        public void generatorChanged(ArgoGeneratorEvent e) {
+            setEvent(0);
+        }
+
+        /**
+         * Invoked when a CodeGenerator has been added.
+         * @param e <code>ArgoGeneratorEvent</code> describing
+         * the added notation.
+         */
+        public void generatorAdded(ArgoGeneratorEvent e) {
+            setEvent(1);
+        }
+
+        /**
+         * Invoked when a CodeGenerator has been removed.
+         * @param e <code>ArgoGeneratorEvent</code> describing
+         * the removed notation.
+         */
+        public void generatorRemoved(ArgoGeneratorEvent e) {
+            setEvent(2);
+        }
+    }
+
+    /**
+     * Represents a ArgoDiagramAppearanceEventListener and tracks
+     * the firing of its events
+     */
+    public class TArgoHelpEventListener extends EventTracker
+        implements ArgoHelpEventListener
+    {
+        /**
+         * Initialize the listener
+         */
+        public TArgoHelpEventListener() {
+            super(2);
+        }
+
+        /**
+         * Invoked when there is a new help text to be shown,
+         * that should replace any previous one.
+         *
+         * @param e <code>ArgoHelpEvent</code> describing the changed text
+         */
+        public void helpChanged(ArgoHelpEvent e) {
+            setEvent(0);
+        }
+
+        /**
+         * Invoked when a previously shown help text has to be removed.
+         *
+         * @param e <code>ArgoHelpEvent</code> describing the removed event
+         */
+        public void helpRemoved(ArgoHelpEvent e){
+            setEvent(1);
+        }
+    }
+
+    /**
+     * Represents a ArgoNotationEventListener and tracks
+     * the firing of its events
+     */
+    public class TArgoNotationEventListener extends EventTracker
+        implements ArgoNotationEventListener
+    {
+        /**
+         * Initialize the listener
+         */
+        public TArgoNotationEventListener() {
+            super(5);
+        }
+
+        /**
+         * Invoked when any aspect of the notation has been changed.
+         * @param e <code>ArgoNotationEvent</code> describing the change.
+         */
+        public void notationChanged(ArgoNotationEvent e) {
+            setEvent(0);
+        }
+
+        /**
+         * Invoked when a notation has been added.
+         * @param e <code>ArgoNotationEvent</code> describing
+         * the added notation.
+         */
+        public void notationAdded(ArgoNotationEvent e) {
+            setEvent(1);
+        }
+
+        /**
+         * Invoked when a notation has been removed.
+         * @param e <code>ArgoNotationEvent</code> describing
+         * the removed notation.
+         */
+        public void notationRemoved(ArgoNotationEvent e) {
+            setEvent(2);
+        }
+
+        /**
+         * Invoked when a notation provider has been added.
+         * @param e <code>ArgoNotationEvent</code> describing
+         * the added notation provider.
+         */
+        public void notationProviderAdded(ArgoNotationEvent e) {
+            setEvent(3);
+        }
+
+        /**
+         * Invoked when a notation provider has been removed.
+         * @param e <code>ArgoNotationEvent</code> describing
+         * the removed notation provider.
+         */
+        public void notationProviderRemoved(ArgoNotationEvent e) {
+            setEvent(4);
+        }
+    }
+
+    /**
+     * Represents a ArgoProfileEventListener and tracks
+     * the firing of its events
+     */
+    public class TArgoProfileEventListener extends EventTracker
+        implements ArgoProfileEventListener
+    {
+        /**
+         * Initialize the listener
+         */
+        public TArgoProfileEventListener() {
+            super(2);
+        }
+
+        /**
+         * Invoked when a profile has been added.
+         * @param e <code>ArgoProfileEvent</code> describing the
added notation.
+         */
+        public void profileAdded(ArgoProfileEvent e) {
+            setEvent(0);
+        }
+
+        /**
+         * Invoked when a profile has been removed.
+         * @param e <code>ArgoProfileEvent</code> describing the
removed notation.
+         */
+        public void profileRemoved(ArgoProfileEvent e) {
+            setEvent(1);
+        }
+    }
+
+    public class TArgoStatusEventListener extends EventTracker
+        implements ArgoStatusEventListener
+    {
+        /**
+         * Initialize the listener
+         */
+        public TArgoStatusEventListener() {
+            super(5);
+        }
+
+        /**
+         * Invoked when there is a new status text to be shown,
+         * that should replace any previous one.
+         *
+         * @param e <code>ArgoStatusEvent</code> describing the changed text
+         */
+        public void statusText(ArgoStatusEvent e) {
+            setEvent(0);
+        }
+
+        /**
+         * Invoked when a previously shown status text has to be removed.
+         *
+         * @param e <code>ArgoStatusEvent</code> describing the removed event
+         */
+        public void statusCleared(ArgoStatusEvent e) {
+            setEvent(1);
+        }
+
+        /**
+         * A project has been saved.
+         *
+         * @param e <code>ArgoStatusEvent</code> with the name of
+         * the project that was saved.
+         */
+        public void projectSaved(ArgoStatusEvent e) {
+            setEvent(2);
+        }
+
+        /**
+         * A project has been loaded.
+         *
+         * @param e <code>ArgoStatusEvent</code> with
+         * the name of the project that was loaded.
+         */
+        public void projectLoaded(ArgoStatusEvent e) {
+            setEvent(3);
+        }
+
+        /**
+         * A project has been modified.
+         *
+         * @param e <code>ArgoStatusEvent</code> with the name of
+         * the project that was modified (ignored for current ArgoUML
+         * implementation where there is only a single project open at a time).
+         */
+        public void projectModified(ArgoStatusEvent e) {
+            setEvent(4);
+        }
+    }
+}
\ No newline at end of file

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to