001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.chain.impl;
018
019
020 import junit.framework.Test;
021 import junit.framework.TestCase;
022 import junit.framework.TestSuite;
023 import org.apache.commons.chain.Catalog;
024 import org.apache.commons.chain.Command;
025
026 import java.util.Iterator;
027
028
029 /**
030 * <p>Test case for the <code>CatalogBase</code> class.</p>
031 *
032 * @author Craig R. McClanahan
033 * @version $Revision: 480477 $ $Date: 2006-11-29 08:34:52 +0000 (Wed, 29 Nov 2006) $
034 */
035
036 public class CatalogBaseTestCase extends TestCase {
037
038
039 // ---------------------------------------------------- Instance Variables
040
041
042 /**
043 * The {@link Catalog} instance under test.
044 */
045 protected CatalogBase catalog = null;
046
047
048 // ---------------------------------------------------------- Constructors
049
050 /**
051 * Construct a new instance of this test case.
052 *
053 * @param name Name of the test case
054 */
055 public CatalogBaseTestCase(String name) {
056 super(name);
057 }
058
059
060 // -------------------------------------------------- Overall Test Methods
061
062
063 /**
064 * Set up instance variables required by this test case.
065 */
066 public void setUp() {
067 catalog = new CatalogBase();
068 }
069
070
071 /**
072 * Return the tests included in this test suite.
073 */
074 public static Test suite() {
075 return (new TestSuite(CatalogBaseTestCase.class));
076 }
077
078 /**
079 * Tear down instance variables required by this test case.
080 */
081 public void tearDown() {
082 catalog = null;
083 }
084
085
086 // ------------------------------------------------ Individual Test Methods
087
088
089 // Test adding commands
090 public void testAddCommand() {
091 addCommands();
092 checkCommandCount(8);
093 }
094
095
096 // Test getting commands
097 public void testGetCommand() {
098
099 addCommands();
100 Command command = null;
101
102 command = catalog.getCommand("AddingCommand");
103 assertNotNull(command);
104 assertTrue(command instanceof AddingCommand);
105
106 command = catalog.getCommand("DelegatingCommand");
107 assertNotNull(command);
108 assertTrue(command instanceof DelegatingCommand);
109
110 command = catalog.getCommand("DelegatingFilter");
111 assertNotNull(command);
112 assertTrue(command instanceof DelegatingFilter);
113
114 command = catalog.getCommand("ExceptionCommand");
115 assertNotNull(command);
116 assertTrue(command instanceof ExceptionCommand);
117
118 command = catalog.getCommand("ExceptionFilter");
119 assertNotNull(command);
120 assertTrue(command instanceof ExceptionFilter);
121
122 command = catalog.getCommand("NonDelegatingCommand");
123 assertNotNull(command);
124 assertTrue(command instanceof NonDelegatingCommand);
125
126 command = catalog.getCommand("NonDelegatingFilter");
127 assertNotNull(command);
128 assertTrue(command instanceof NonDelegatingFilter);
129
130 command = catalog.getCommand("ChainBase");
131 assertNotNull(command);
132 assertTrue(command instanceof ChainBase);
133
134 }
135
136
137 // The getNames() method is implicitly tested by checkCommandCount()
138
139
140 // Test pristine instance
141 public void testPristine() {
142 checkCommandCount(0);
143 assertNull(catalog.getCommand("AddingCommand"));
144 assertNull(catalog.getCommand("DelegatingCommand"));
145 assertNull(catalog.getCommand("DelegatingFilter"));
146 assertNull(catalog.getCommand("ExceptionCommand"));
147 assertNull(catalog.getCommand("ExceptionFilter"));
148 assertNull(catalog.getCommand("NonDelegatingCommand"));
149 assertNull(catalog.getCommand("NonDelegatingFilter"));
150 assertNull(catalog.getCommand("ChainBase"));
151 }
152
153
154
155
156 // -------------------------------------------------------- Support Methods
157
158
159 // Add an interesting set of commands to the catalog
160 protected void addCommands() {
161 catalog.addCommand("AddingCommand", new AddingCommand("", null));
162 catalog.addCommand("DelegatingCommand", new DelegatingCommand(""));
163 catalog.addCommand("DelegatingFilter", new DelegatingFilter("", ""));
164 catalog.addCommand("ExceptionCommand", new ExceptionCommand(""));
165 catalog.addCommand("ExceptionFilter", new ExceptionFilter("", ""));
166 catalog.addCommand("NonDelegatingCommand", new NonDelegatingCommand(""));
167 catalog.addCommand("NonDelegatingFilter", new NonDelegatingFilter("", ""));
168 catalog.addCommand("ChainBase", new ChainBase());
169 }
170
171
172 // Verify the number of configured commands
173 protected void checkCommandCount(int expected) {
174 int n = 0;
175 Iterator names = catalog.getNames();
176 while (names.hasNext()) {
177 String name = (String) names.next();
178 n++;
179 assertNotNull(name + " exists", catalog.getCommand(name));
180 }
181 assertEquals("Correct command count", expected, n);
182 }
183
184
185 }