View Javadoc

1   /* $Id: WithDefaultsRulesWrapperTestCase.java 1212599 2011-12-09 19:46:42Z simonetripodi $
2    *
3    * Licensed to the Apache Software Foundation (ASF) under one or more
4    * contributor license agreements.  See the NOTICE file distributed with
5    * this work for additional information regarding copyright ownership.
6    * The ASF licenses this file to You under the Apache License, Version 2.0
7    * (the "License"); you may not use this file except in compliance with
8    * the License.  You may obtain a copy of the License at
9    *
10   *      http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  package org.apache.commons.digester3;
20  
21  import static org.junit.Assert.assertEquals;
22  import static org.junit.Assert.assertNotNull;
23  
24  import java.util.List;
25  
26  import org.apache.commons.digester3.Rule;
27  import org.apache.commons.digester3.RulesBase;
28  import org.apache.commons.digester3.WithDefaultsRulesWrapper;
29  import org.junit.Test;
30  
31  /**
32   * Test case for WithDefaultsRulesWrapper
33   *
34   * @author Robert Burrell Donkin
35   */
36  public class WithDefaultsRulesWrapperTestCase
37  {
38  
39      @Test
40      public void testClear()
41      {
42          // test clear wrapped
43          WithDefaultsRulesWrapper rules = new WithDefaultsRulesWrapper( new RulesBase() );
44          rules.add( "alpha", new TestRule( "Tom" ) );
45          rules.add( "alpha", new TestRule( "Dick" ) );
46          rules.add( "alpha", new TestRule( "Harry" ) );
47  
48          assertNotNull( "Rules should not be null", rules.rules() );
49          assertEquals( "Wrong number of rules registered (1)", 3, rules.rules().size() );
50          rules.clear();
51          assertEquals( "Clear Failed (1)", 0, rules.rules().size() );
52  
53          // mixed
54          rules.add( "alpha", new TestRule( "Tom" ) );
55          rules.add( "alpha", new TestRule( "Dick" ) );
56          rules.add( "alpha", new TestRule( "Harry" ) );
57          rules.addDefault( new TestRule( "Roger" ) );
58          assertEquals( "Wrong number of rules registered (2)", 4, rules.rules().size() );
59          rules.clear();
60          assertEquals( "Clear Failed (2)", 0, rules.rules().size() );
61  
62          rules.addDefault( new TestRule( "Roger" ) );
63          assertEquals( "Wrong number of rules registered (3)", 1, rules.rules().size() );
64          rules.clear();
65          assertEquals( "Clear Failed (3)", 0, rules.rules().size() );
66      }
67  
68      @Test
69      public void testRules()
70      {
71          // test rules
72          WithDefaultsRulesWrapper rules = new WithDefaultsRulesWrapper( new RulesBase() );
73          rules.add( "alpha", new TestRule( "Tom" ) );
74          rules.add( "alpha", new TestRule( "Dick" ) );
75          rules.addDefault( new TestRule( "Roger" ) );
76          rules.add( "alpha", new TestRule( "Harry" ) );
77  
78          assertNotNull( "Rules should not be null", rules.rules() );
79          assertEquals( "Wrong order (1)", "Tom", ( (TestRule) rules.rules().get( 0 ) ).getIdentifier() );
80          assertEquals( "Wrong order (2)", "Dick", ( (TestRule) rules.rules().get( 1 ) ).getIdentifier() );
81          assertEquals( "Wrong order (3)", "Roger", ( (TestRule) rules.rules().get( 2 ) ).getIdentifier() );
82          assertEquals( "Wrong order (4)", "Harry", ( (TestRule) rules.rules().get( 3 ) ).getIdentifier() );
83      }
84  
85      @Test
86      public void testMatch()
87      {
88          // test no defaults
89          WithDefaultsRulesWrapper rules = new WithDefaultsRulesWrapper( new RulesBase() );
90          rules.add( "alpha", new TestRule( "Tom" ) );
91          rules.add( "alpha", new TestRule( "Dick" ) );
92          rules.add( "alpha", new TestRule( "Harry" ) );
93          rules.addDefault( new TestRule( "Roger" ) );
94          rules.addDefault( new TestRule( "Rabbit" ) );
95  
96          List<Rule> matches = rules.match( "", "alpha", null, null );
97          assertEquals( "Wrong size (1)", 3, matches.size() );
98          assertEquals( "Wrong order (1)", "Tom", ( (TestRule) matches.get( 0 ) ).getIdentifier() );
99          assertEquals( "Wrong order (2)", "Dick", ( (TestRule) matches.get( 1 ) ).getIdentifier() );
100         assertEquals( "Wrong order (3)", "Harry", ( (TestRule) matches.get( 2 ) ).getIdentifier() );
101 
102         matches = rules.match( "", "not-alpha", null, null );
103         assertEquals( "Wrong size (2)", 2, matches.size() );
104         assertEquals( "Wrong order (4)", "Roger", ( (TestRule) matches.get( 0 ) ).getIdentifier() );
105         assertEquals( "Wrong order (5)", "Rabbit", ( (TestRule) matches.get( 1 ) ).getIdentifier() );
106     }
107 }