You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sk...@apache.org on 2005/02/15 04:01:39 UTC

svn commit: r153881 - in jakarta/commons/proper/digester/branches/digester2/src/test/org/apache/commons/digester2: AbstractRuleManagerTestCase.java DefaultRuleManagerTestCase.java

Author: skitching
Date: Mon Feb 14 19:01:36 2005
New Revision: 153881

URL: http://svn.apache.org/viewcvs?view=rev&rev=153881
Log:
Handle new fallback and mandatory action features of RuleManagers.

Modified:
    jakarta/commons/proper/digester/branches/digester2/src/test/org/apache/commons/digester2/AbstractRuleManagerTestCase.java
    jakarta/commons/proper/digester/branches/digester2/src/test/org/apache/commons/digester2/DefaultRuleManagerTestCase.java

Modified: jakarta/commons/proper/digester/branches/digester2/src/test/org/apache/commons/digester2/AbstractRuleManagerTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/digester/branches/digester2/src/test/org/apache/commons/digester2/AbstractRuleManagerTestCase.java?view=diff&r1=153880&r2=153881
==============================================================================
--- jakarta/commons/proper/digester/branches/digester2/src/test/org/apache/commons/digester2/AbstractRuleManagerTestCase.java (original)
+++ jakarta/commons/proper/digester/branches/digester2/src/test/org/apache/commons/digester2/AbstractRuleManagerTestCase.java Mon Feb 14 19:01:36 2005
@@ -66,6 +66,22 @@
         public void finishParse(Context context) throws DigestionException {
             operations.add("finishParse");
         }
+
+        public void addFallbackAction(Action action) {
+            operations.add("addFallbackAction");
+        }
+
+        public void addFallbackActions(List actions) {
+            operations.add("addFallbackActions");
+        }
+
+        public void addMandatoryAction(Action action) {
+            operations.add("addMandatoryAction");
+        }
+
+        public void addMandatoryActions(List actions) {
+            operations.add("addMandatoryActions");
+        }
         
         public void addNamespace(String prefix, String uri) {
             operations.add("addNamespace");

Modified: jakarta/commons/proper/digester/branches/digester2/src/test/org/apache/commons/digester2/DefaultRuleManagerTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/digester/branches/digester2/src/test/org/apache/commons/digester2/DefaultRuleManagerTestCase.java?view=diff&r1=153880&r2=153881
==============================================================================
--- jakarta/commons/proper/digester/branches/digester2/src/test/org/apache/commons/digester2/DefaultRuleManagerTestCase.java (original)
+++ jakarta/commons/proper/digester/branches/digester2/src/test/org/apache/commons/digester2/DefaultRuleManagerTestCase.java Mon Feb 14 19:01:36 2005
@@ -164,12 +164,114 @@
         // match one action
         list = rm.getMatchingActions("/a");
         assertEquals("One rule matched", 1, list.size());
-        assertEquals("A rule matched", "a", list.get(0).toString());
+        assertSame("A rule matched", actionA, list.get(0));
 
         // match multiple actions
         list = rm.getMatchingActions("/a/b");
         assertEquals("Multiple rules matched", 2, list.size());
-        assertEquals("B1 rule matched", "b1", list.get(0).toString());
-        assertEquals("B2 rule matched", "b2", list.get(1).toString());
+        assertSame("B1 rule matched", actionB1, list.get(0));
+        assertSame("B2 rule matched", actionB2, list.get(1));
+    }
+    
+    public void testDefaultActions() throws Exception {
+        DefaultRuleManager rm = new DefaultRuleManager();
+        
+        Action actionA = new DummyAction("a");
+        Action actionB = new DummyAction("b");
+        Action actionC = new DummyAction("c");
+        
+        List list = null;
+
+        rm.addRule("/a", actionA);
+        rm.addFallbackAction(actionB);
+        rm.addFallbackAction(actionC);
+        
+        // verify that all actions are reported in getActions
+        List allActions = rm.getActions();
+        assertTrue("ActionA present", allActions.contains(actionA));
+        assertTrue("ActionB present", allActions.contains(actionB));
+        assertTrue("ActionC present", allActions.contains(actionC));
+
+        // match one action
+        list = rm.getMatchingActions("/a");
+        assertEquals("One rule matched", 1, list.size());
+        assertSame("A rule matched", actionA, list.get(0));
+
+        // match nothing
+        list = rm.getMatchingActions("/c");
+        assertEquals("Action list contains fallbacks no match", 2, list.size());
+        assertSame("B rule matched", actionB, list.get(0));
+        assertSame("C rule matched", actionC, list.get(1));
+    }
+    
+    /**
+     * Test mandatory actions in absence of fallback actions
+     */
+    public void testMandatoryActions1() throws Exception {
+        DefaultRuleManager rm = new DefaultRuleManager();
+        
+        Action actionA = new DummyAction("a");
+        Action actionB = new DummyAction("b");
+        Action actionC = new DummyAction("c");
+        
+        List list = null;
+
+        rm.addRule("/a", actionA);
+        rm.addMandatoryAction(actionB);
+        rm.addMandatoryAction(actionC);
+        
+        // verify that all actions are reported in getActions
+        List allActions = rm.getActions();
+        assertTrue("ActionA present", allActions.contains(actionA));
+        assertTrue("ActionB present", allActions.contains(actionB));
+        assertTrue("ActionC present", allActions.contains(actionC));
+
+        // match one action
+        list = rm.getMatchingActions("/a");
+        assertEquals("Three rules matched", 3, list.size());
+        assertSame("A rule matched", actionA, list.get(0));
+        assertSame("B rule matched", actionB, list.get(1));
+        assertSame("C rule matched", actionC, list.get(2));
+
+        // match nothing
+        list = rm.getMatchingActions("/c");
+        assertEquals("Action list contains mandatory when no match", 2, list.size());
+        assertSame("B rule matched", actionB, list.get(0));
+        assertSame("C rule matched", actionC, list.get(1));
+    }
+    
+    /**
+     * Test mandatory actions in presence of fallback actions
+     */
+    public void testMandatoryActions2() throws Exception {
+        DefaultRuleManager rm = new DefaultRuleManager();
+        
+        Action actionA = new DummyAction("a");
+        Action actionB = new DummyAction("b");
+        Action actionC = new DummyAction("c");
+        
+        List list = null;
+
+        rm.addRule("/a", actionA);
+        rm.addFallbackAction(actionB);
+        rm.addMandatoryAction(actionC);
+        
+        // verify that all actions are reported in getActions
+        List allActions = rm.getActions();
+        assertTrue("ActionA present", allActions.contains(actionA));
+        assertTrue("ActionB present", allActions.contains(actionB));
+        assertTrue("ActionC present", allActions.contains(actionC));
+
+        // match one action
+        list = rm.getMatchingActions("/a");
+        assertEquals("Two rules matched", 2, list.size());
+        assertSame("A rule matched", actionA, list.get(0));
+        assertSame("C rule matched", actionC, list.get(1));
+
+        // match nothing
+        list = rm.getMatchingActions("/c");
+        assertEquals("Two rules matched", 2, list.size());
+        assertSame("B rule matched", actionB, list.get(0));
+        assertSame("C rule matched", actionC, list.get(1));
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org