001/* $Id: WithDefaultsRulesWrapperTestCase.java 1212599 2011-12-09 19:46:42Z simonetripodi $ 002 * 003 * Licensed to the Apache Software Foundation (ASF) under one or more 004 * contributor license agreements. See the NOTICE file distributed with 005 * this work for additional information regarding copyright ownership. 006 * The ASF licenses this file to You under the Apache License, Version 2.0 007 * (the "License"); you may not use this file except in compliance with 008 * the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 019package org.apache.commons.digester3; 020 021import static org.junit.Assert.assertEquals; 022import static org.junit.Assert.assertNotNull; 023 024import java.util.List; 025 026import org.apache.commons.digester3.Rule; 027import org.apache.commons.digester3.RulesBase; 028import org.apache.commons.digester3.WithDefaultsRulesWrapper; 029import org.junit.Test; 030 031/** 032 * Test case for WithDefaultsRulesWrapper 033 * 034 * @author Robert Burrell Donkin 035 */ 036public class WithDefaultsRulesWrapperTestCase 037{ 038 039 @Test 040 public void testClear() 041 { 042 // test clear wrapped 043 WithDefaultsRulesWrapper rules = new WithDefaultsRulesWrapper( new RulesBase() ); 044 rules.add( "alpha", new TestRule( "Tom" ) ); 045 rules.add( "alpha", new TestRule( "Dick" ) ); 046 rules.add( "alpha", new TestRule( "Harry" ) ); 047 048 assertNotNull( "Rules should not be null", rules.rules() ); 049 assertEquals( "Wrong number of rules registered (1)", 3, rules.rules().size() ); 050 rules.clear(); 051 assertEquals( "Clear Failed (1)", 0, rules.rules().size() ); 052 053 // mixed 054 rules.add( "alpha", new TestRule( "Tom" ) ); 055 rules.add( "alpha", new TestRule( "Dick" ) ); 056 rules.add( "alpha", new TestRule( "Harry" ) ); 057 rules.addDefault( new TestRule( "Roger" ) ); 058 assertEquals( "Wrong number of rules registered (2)", 4, rules.rules().size() ); 059 rules.clear(); 060 assertEquals( "Clear Failed (2)", 0, rules.rules().size() ); 061 062 rules.addDefault( new TestRule( "Roger" ) ); 063 assertEquals( "Wrong number of rules registered (3)", 1, rules.rules().size() ); 064 rules.clear(); 065 assertEquals( "Clear Failed (3)", 0, rules.rules().size() ); 066 } 067 068 @Test 069 public void testRules() 070 { 071 // test rules 072 WithDefaultsRulesWrapper rules = new WithDefaultsRulesWrapper( new RulesBase() ); 073 rules.add( "alpha", new TestRule( "Tom" ) ); 074 rules.add( "alpha", new TestRule( "Dick" ) ); 075 rules.addDefault( new TestRule( "Roger" ) ); 076 rules.add( "alpha", new TestRule( "Harry" ) ); 077 078 assertNotNull( "Rules should not be null", rules.rules() ); 079 assertEquals( "Wrong order (1)", "Tom", ( (TestRule) rules.rules().get( 0 ) ).getIdentifier() ); 080 assertEquals( "Wrong order (2)", "Dick", ( (TestRule) rules.rules().get( 1 ) ).getIdentifier() ); 081 assertEquals( "Wrong order (3)", "Roger", ( (TestRule) rules.rules().get( 2 ) ).getIdentifier() ); 082 assertEquals( "Wrong order (4)", "Harry", ( (TestRule) rules.rules().get( 3 ) ).getIdentifier() ); 083 } 084 085 @Test 086 public void testMatch() 087 { 088 // test no defaults 089 WithDefaultsRulesWrapper rules = new WithDefaultsRulesWrapper( new RulesBase() ); 090 rules.add( "alpha", new TestRule( "Tom" ) ); 091 rules.add( "alpha", new TestRule( "Dick" ) ); 092 rules.add( "alpha", new TestRule( "Harry" ) ); 093 rules.addDefault( new TestRule( "Roger" ) ); 094 rules.addDefault( new TestRule( "Rabbit" ) ); 095 096 List<Rule> matches = rules.match( "", "alpha", null, null ); 097 assertEquals( "Wrong size (1)", 3, matches.size() ); 098 assertEquals( "Wrong order (1)", "Tom", ( (TestRule) matches.get( 0 ) ).getIdentifier() ); 099 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}