I've written 4 more unit tests for the org.argouml.cognitive namespace
(patch below). These tests verify the basic functionality of the
following classes:
Goal, GoalModel, Decision, EnabledCM, NotSnoozedCM, DesignGoalsCM, CurDecisionCM
If these tests look good, please commit them to the repository when
you get a chance.
Thanks,
Scott
Patch:
Index: tests/org/argouml/cognitive/TestStandardCM.java
===================================================================
--- tests/org/argouml/cognitive/TestStandardCM.java (revision 0)
+++ tests/org/argouml/cognitive/TestStandardCM.java (revision 0)
@@ -0,0 +1,156 @@
+// $Id
+// 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;
+
+import junit.framework.TestCase;
+
+/**
+ * Testing the initialization of a Decision.
+ */
+public class TestStandardCM extends TestCase {
+
+ /**
+ * The constructor.
+ *
+ * @param name the name of the test.
+ */
+ public TestStandardCM(String name) {
+ super(name);
+ }
+
+ /**
+ * @see junit.framework.TestCase#setUp()
+ */
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ /**
+ * Test isRelevant method of EnabledCM.
+ */
+ public void testEnabledCM() {
+
+ Critic critic = new Critic();
+ EnabledCM cm = new EnabledCM();
+
+ // EnabledCM isRelevant checks if the critic is enabled
+ // initialize this to true to verify isRelevant returns true
+ critic.setEnabled(true);
+
+ // verify isRelevant returns true
+ assertTrue("EnabledCM.isRelevant(Critic, Designer) is incorrect",
+ cm.isRelevant(critic, Designer.theDesigner()));
+
+ // set enabled to false and check the opposite condition
+ critic.setEnabled(false);
+
+ // verify isRelevant not is false
+ assertTrue("EnabledCM.isRelevant(Critic, Designer) is incorrect",
+ !cm.isRelevant(critic, Designer.theDesigner()));
+ }
+
+ /**
+ * Test isRelevant method of NotSnoozedCM.
+ */
+ public void testNotSnoozedCM() {
+
+ Critic critic = new Critic();
+ NotSnoozedCM cm = new NotSnoozedCM();
+
+ // NotSnoozedCM isRelevant checks if the critic is snoozed
+ // snooze the critic to verify isRelevant returns false
+ critic.snooze();
+
+ // verify isRelevant returns true
+ assertTrue("NotSnoozedCM.isRelevant(Critic, Designer) is incorrect " +
+ "when critic snoozed",
+ !cm.isRelevant(critic, Designer.theDesigner()));
+
+ // unsnooze the critic to verify the critic is not relevant
+ critic.unsnooze();
+
+ // verify isRelevant is true
+ assertTrue("NotSnoozedCM.isRelevant(Critic, Designer) is incorrect " +
+ "when critic not snoozed",
+ cm.isRelevant(critic, Designer.theDesigner()));
+ }
+
+ /**
+ * Test isRelevant method of DesignGoalsCM.
+ */
+ public void testDesignGoalsCM() {
+
+ Critic critic = new Critic();
+ DesignGoalsCM cm = new DesignGoalsCM();
+
+ // DesignGoalsCM checks if the critic isRelevantToGoals of the Designer
+ // this value is always true for the Critic base class so
DesignerGoalsCM
+ // should always return true in this condition
+ assertTrue("DesignGoalsCM.isRelevant(Critic, Designer) is incorrect",
+ cm.isRelevant(critic, Designer.theDesigner()));
+ }
+
+ /**
+ * Test isRelevant method of CurDecisionCM.
+ */
+ public void testCurDecisionCM() {
+
+ Critic critic = new Critic();
+ CurDecisionCM cm = new CurDecisionCM();
+
+ // CurDecisionCM isRelevant checks to see if the critic has
+ // any decisions that have a priority > 0 and less than the
+ // priority of the critic. By default the critic has no
+ // decisions so isRelevant should return false.
+ assertTrue("CurDecisionCM.isRelevant(Critic, Designer) is incorrect " +
+ "when critic has 0 decisions",
+ !cm.isRelevant(critic, Designer.theDesigner()));
+
+ // add a decision but set the critic priority to 0 so isRelevant
+ // should still be false
+ critic.setPriority(0);
+ critic.addSupportedDecision(Decision.UNSPEC);
+
+ // verify isRelevant is still false
+ assertTrue("CurDecisionCM.isRelevant(Critic, Designer) is " +
+ "incorrect with one decision and critic has priority 0",
+ !cm.isRelevant(critic, Designer.theDesigner()));
+
+ // update the priority of the critic to be the same priority as the
decision
+ critic.setPriority(Decision.UNSPEC.getPriority());
+
+ // isRelevant should now be true
+ assertTrue("CurDecisionCM.isRelevant(Critic, Designer) is incorrect
with " +
+ "one decision and priority has equal priority",
+ cm.isRelevant(critic, Designer.theDesigner()));
+
+ critic.setPriority(Decision.UNSPEC.getPriority()+1);
+ // isRelevant should still be true
+ assertTrue("CurDecisionCM.isRelevant(Critic, Designer) is incorrect
with one " +
+ "decision and priority has greater priority",
+ cm.isRelevant(critic, Designer.theDesigner()));
+ }
+ }
Index: tests/org/argouml/cognitive/TestGoal.java
===================================================================
--- tests/org/argouml/cognitive/TestGoal.java (revision 0)
+++ tests/org/argouml/cognitive/TestGoal.java (revision 0)
@@ -0,0 +1,101 @@
+// $Id
+// 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;
+
+import junit.framework.TestCase;
+
+/**
+ * Testing the initialization of a Decision.
+ */
+public class TestGoal extends TestCase {
+
+ /**
+ * The constructor.
+ *
+ * @param name the name of the test.
+ */
+ public TestGoal(String name) {
+ super(name);
+ }
+
+ /**
+ * @see junit.framework.TestCase#setUp()
+ */
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ /**
+ * Test constructor and some basic methods.
+ */
+ public void testBasics() {
+
+ // initialize the GoalModel
+ GoalModel goalModel = new GoalModel();
+ Goal unspecifiedGoal = Goal.getUnspecifiedGoal();
+
+ // check that the model was initialized with one goal
+ assertTrue("GoalModel not initialized with one goal",
+ goalModel.getGoalList().size() == 1);
+
+ // check that the model was initialized with the unspecified goal
+ assertTrue("GoalModel not initilized with UnspecifiedGoal",
+ goalModel.hasGoal(unspecifiedGoal.getName()));
+
+ // update the priority of the unspecified goal so we can verify it was
updated
+ goalModel.setGoalPriority(unspecifiedGoal.getName(),
+ unspecifiedGoal.getPriority()+1);
+
+ // first verify that the set goal priority did not add an extra goal
+ assertTrue("GoalModel.setGoalPriority added an extra Goal",
+ goalModel.getGoalList().size() == 1);
+
+ // check that the model correctly updates a goals priority
+ assertTrue("GoalModel not correctly updating goal priority",
+ goalModel.getGoalList().get(0).getPriority() ==
unspecifiedGoal.getPriority()+1);
+
+ // test the removal of a goal
+ goalModel.removeGoal(unspecifiedGoal);
+
+ // number of goals should now be 0
+ assertTrue("GoalModel.removeGoal(goalName) failed",
+ goalModel.getGoalList().size() == 0);
+
+ // start desiring a goal which should add a goal and bump the size to
one
+ goalModel.startDesiring(unspecifiedGoal.getName());
+
+ // number of goals should now be 1
+ assertTrue("GoalModel.startDesiring did not add a Goal",
+ goalModel.getGoalList().size() == 1);
+
+ // stop desiring the goal which should remove it from the model
+ goalModel.stopDesiring(unspecifiedGoal.getName());
+
+ // number of goals should now be 0
+ assertTrue("GoalModel.stopDesiring(goalName) failed",
+ goalModel.getGoalList().size() == 0);
+ }
+}
Index: tests/org/argouml/cognitive/TestGoalModel.java
===================================================================
--- tests/org/argouml/cognitive/TestGoalModel.java (revision 0)
+++ tests/org/argouml/cognitive/TestGoalModel.java (revision 0)
@@ -0,0 +1,97 @@
+// $Id
+// 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;
+
+import junit.framework.TestCase;
+
+/**
+ * Testing the initialization of a Decision.
+ */
+public class TestGoalModel extends TestCase {
+
+ /**
+ * The constructor.
+ *
+ * @param name the name of the test.
+ */
+ public TestGoalModel(String name) {
+ super(name);
+ }
+
+ /**
+ * @see junit.framework.TestCase#setUp()
+ */
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ /**
+ * Test constructor and some basic methods.
+ */
+ public void testBasics() {
+
+ // initialize basic parameters that are
+ // different from Decision.UNSPEC
+ int priority = 2;
+ String name = "misc.decision.inheritance";
+ String translatedName = Translator.localize(name);
+
+ // initialize a decision object with parameters
+ Decision decision = new Decision(name, priority);
+
+ // verify parameters were initialized correctly by the constructor
+ assertTrue("Decision.getName() is incorrect",
+ decision.getName() == translatedName);
+ assertTrue("Decision.toString() is incorrect",
+ decision.toString() == translatedName);
+ assertTrue("Decision.getPriority() is incorrect",
+ decision.getPriority() == priority);
+
+ // set the priority to a different value
+ priority = 1;
+ decision.setPriority(priority);
+
+ // verify the priority was correctly updated
+ assertTrue("Decision.setPriority() failed",
+ decision.getPriority() == priority);
+
+ // set the name to a different value
+ name = "misc.decision.uncategorized";
+ translatedName = Translator.localize(name);
+ decision.setName(translatedName);
+
+ // verify the name property was correctly updated
+ assertTrue("Decision.setName() failed",
+ decision.getName() == translatedName);
+ assertTrue("Decision.toString() is incorrect",
+ decision.toString() == translatedName);
+
+ // following the update the priority should be
+ // equivalent to Decision.UNSPEC
+ assertTrue("Decision.equals(Decision) failed",
+ decision.equals(Decision.UNSPEC));
+ }
+}
Index: tests/org/argouml/cognitive/TestDecision.java
===================================================================
--- tests/org/argouml/cognitive/TestDecision.java (revision 0)
+++ tests/org/argouml/cognitive/TestDecision.java (revision 0)
@@ -0,0 +1,97 @@
+// $Id
+// 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;
+
+import junit.framework.TestCase;
+
+/**
+ * Testing the initialization of a Decision.
+ */
+public class TestDecision extends TestCase {
+
+ /**
+ * The constructor.
+ *
+ * @param name the name of the test.
+ */
+ public TestDecision(String name) {
+ super(name);
+ }
+
+ /**
+ * @see junit.framework.TestCase#setUp()
+ */
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ /**
+ * Test constructor and some basic methods.
+ */
+ public void testBasics() {
+
+ // initialize basic parameters that are
+ // different from Decision.UNSPEC
+ int priority = 2;
+ String name = "misc.decision.inheritance";
+ String translatedName = Translator.localize(name);
+
+ // initialize a decision object with parameters
+ Decision decision = new Decision(name, priority);
+
+ // verify parameters were initialized correctly by the constructor
+ assertTrue("Decision.getName() is incorrect",
+ decision.getName() == translatedName);
+ assertTrue("Decision.toString() is incorrect",
+ decision.toString() == translatedName);
+ assertTrue("Decision.getPriority() is incorrect",
+ decision.getPriority() == priority);
+
+ // set the priority to a different value
+ priority = 1;
+ decision.setPriority(priority);
+
+ // verify the priority was correctly updated
+ assertTrue("Decision.setPriority() failed",
+ decision.getPriority() == priority);
+
+ // set the name to a different value
+ name = "misc.decision.uncategorized";
+ translatedName = Translator.localize(name);
+ decision.setName(translatedName);
+
+ // verify the name property was correctly updated
+ assertTrue("Decision.setName() failed",
+ decision.getName() == translatedName);
+ assertTrue("Decision.toString() is incorrect",
+ decision.toString() == translatedName);
+
+ // following the update the priority should be
+ // equivalent to Decision.UNSPEC
+ assertTrue("Decision.equals(Decision) failed",
+ decision.equals(Decision.UNSPEC));
+ }
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]