SimpleCompositeCommandHandlerTest.java revision dfa40a06dff44f29d8d5e1d3186055ad325fc7b9
1/* 2 * Copyright 2007 the original author or authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16package org.mockftpserver.core.command; 17 18import org.slf4j.Logger; 19import org.slf4j.LoggerFactory; 20import org.mockftpserver.core.session.Session; 21import org.mockftpserver.core.util.AssertFailedException; 22import org.mockftpserver.test.AbstractTestCase; 23 24import java.util.ArrayList; 25import java.util.List; 26import java.util.ListResourceBundle; 27import java.util.ResourceBundle; 28 29/** 30 * Tests for SimpleCompositeCommandHandler 31 * 32 * @version $Revision$ - $Date$ 33 * 34 * @author Chris Mair 35 */ 36public class SimpleCompositeCommandHandlerTest extends AbstractTestCase { 37 38 private static final Logger LOG = LoggerFactory.getLogger(SimpleCompositeCommandHandlerTest.class); 39 40 private SimpleCompositeCommandHandler simpleCompositeCommandHandler; 41 private Session session; 42 private Command command; 43 private CommandHandler commandHandler1; 44 private CommandHandler commandHandler2; 45 private CommandHandler commandHandler3; 46 47 /** 48 * Test the handleCommand() method 49 */ 50 public void testHandleCommand_OneHandler_OneInvocation() throws Exception { 51 simpleCompositeCommandHandler.addCommandHandler(commandHandler1); 52 53 commandHandler1.handleCommand(command, session); 54 replay(commandHandler1); 55 56 simpleCompositeCommandHandler.handleCommand(command, session); 57 verify(commandHandler1); 58 } 59 60 /** 61 * Test the handleCommand() method, with two CommandHandler defined, but with multiple invocation 62 */ 63 public void testHandleCommand_TwoHandlers() throws Exception { 64 simpleCompositeCommandHandler.addCommandHandler(commandHandler1); 65 simpleCompositeCommandHandler.addCommandHandler(commandHandler2); 66 67 commandHandler1.handleCommand(command, session); 68 commandHandler2.handleCommand(command, session); 69 replayAll(); 70 71 simpleCompositeCommandHandler.handleCommand(command, session); 72 simpleCompositeCommandHandler.handleCommand(command, session); 73 verifyAll(); 74 } 75 76 /** 77 * Test the handleCommand() method, with three CommandHandler defined, and multiple invocation 78 */ 79 public void testHandleCommand_ThreeHandlers() throws Exception { 80 81 List list = new ArrayList(); 82 list.add(commandHandler1); 83 list.add(commandHandler2); 84 list.add(commandHandler3); 85 simpleCompositeCommandHandler.setCommandHandlers(list); 86 87 commandHandler1.handleCommand(command, session); 88 commandHandler2.handleCommand(command, session); 89 commandHandler3.handleCommand(command, session); 90 replayAll(); 91 92 simpleCompositeCommandHandler.handleCommand(command, session); 93 simpleCompositeCommandHandler.handleCommand(command, session); 94 simpleCompositeCommandHandler.handleCommand(command, session); 95 verifyAll(); 96 } 97 98 /** 99 * Test the handleCommand() method, with a single CommandHandler defined, but too many invocations 100 */ 101 public void testHandleCommand_OneHandler_TooManyInvocations() throws Exception { 102 simpleCompositeCommandHandler.addCommandHandler(commandHandler1); 103 104 commandHandler1.handleCommand(command, session); 105 replay(commandHandler1); 106 107 simpleCompositeCommandHandler.handleCommand(command, session); 108 109 // Second invocation throws an exception 110 try { 111 simpleCompositeCommandHandler.handleCommand(command, session); 112 fail("Expected AssertFailedException"); 113 } 114 catch (AssertFailedException expected) { 115 LOG.info("Expected: " + expected); 116 } 117 } 118 119 /** 120 * Test the handleCommand_NoHandlersDefined() method 121 */ 122 public void testHandleCommand_NoHandlersDefined() throws Exception { 123 try { 124 simpleCompositeCommandHandler.handleCommand(command, session); 125 fail("Expected AssertFailedException"); 126 } 127 catch(AssertFailedException expected) { 128 LOG.info("Expected: " + expected); 129 } 130 } 131 132 /** 133 * Test the handleCommand(Command,Session) method, passing in a null Command 134 */ 135 public void testHandleCommand_NullCommand() throws Exception { 136 try { 137 simpleCompositeCommandHandler.handleCommand(null, session); 138 fail("Expected AssertFailedException"); 139 } 140 catch (AssertFailedException expected) { 141 LOG.info("Expected: " + expected); 142 } 143 } 144 145 /** 146 * Test the handleCommand(Command,Session) method, passing in a null Session 147 */ 148 public void testHandleCommand_NullSession() throws Exception { 149 try { 150 simpleCompositeCommandHandler.handleCommand(command, null); 151 fail("Expected AssertFailedException"); 152 } 153 catch (AssertFailedException expected) { 154 LOG.info("Expected: " + expected); 155 } 156 } 157 158 /** 159 * Test the addCommandHandler(CommandHandler) method, passing in a null CommandHandler 160 */ 161 public void testAddCommandHandler_NullCommandHandler() throws Exception { 162 try { 163 simpleCompositeCommandHandler.addCommandHandler(null); 164 fail("Expected AssertFailedException"); 165 } 166 catch (AssertFailedException expected) { 167 LOG.info("Expected: " + expected); 168 } 169 } 170 171 /** 172 * Test the setCommandHandlers(List) method, passing in a null 173 */ 174 public void testSetCommandHandlers_Null() throws Exception { 175 try { 176 simpleCompositeCommandHandler.setCommandHandlers(null); 177 fail("Expected AssertFailedException"); 178 } 179 catch (AssertFailedException expected) { 180 LOG.info("Expected: " + expected); 181 } 182 } 183 184 /** 185 * Test the getCommandHandler(int) method, passing in an index for which no CommandHandler is defined 186 */ 187 public void testGetCommandHandler_UndefinedIndex() throws Exception { 188 simpleCompositeCommandHandler.addCommandHandler(commandHandler1); 189 try { 190 simpleCompositeCommandHandler.getCommandHandler(1); 191 fail("Expected AssertFailedException"); 192 } 193 catch (AssertFailedException expected) { 194 LOG.info("Expected: " + expected); 195 } 196 } 197 198 /** 199 * Test the getCommandHandler(int) method 200 */ 201 public void testGetCommandHandler() throws Exception { 202 simpleCompositeCommandHandler.addCommandHandler(commandHandler1); 203 simpleCompositeCommandHandler.addCommandHandler(commandHandler2); 204 assertSame("index 0", commandHandler1, simpleCompositeCommandHandler.getCommandHandler(0)); 205 assertSame("index 1", commandHandler2, simpleCompositeCommandHandler.getCommandHandler(1)); 206 } 207 208 /** 209 * Test the getCommandHandler(int) method, passing in a negative index 210 */ 211 public void testGetCommandHandler_NegativeIndex() throws Exception { 212 simpleCompositeCommandHandler.addCommandHandler(commandHandler1); 213 try { 214 simpleCompositeCommandHandler.getCommandHandler(-1); 215 fail("Expected AssertFailedException"); 216 } 217 catch (AssertFailedException expected) { 218 LOG.info("Expected: " + expected); 219 } 220 } 221 222 /** 223 * Test the getReplyTextBundle() method 224 */ 225 public void testGetReplyTextBundle() { 226 assertNull(simpleCompositeCommandHandler.getReplyTextBundle()); 227 } 228 229 /** 230 * Test the setReplyTextBundle() method 231 */ 232 public void testSetReplyTextBundle() { 233 234 AbstractTrackingCommandHandler replyTextBundleAwareCommandHandler1 = new StaticReplyCommandHandler(); 235 AbstractTrackingCommandHandler replyTextBundleAwareCommandHandler2 = new StaticReplyCommandHandler(); 236 simpleCompositeCommandHandler.addCommandHandler(replyTextBundleAwareCommandHandler1); 237 simpleCompositeCommandHandler.addCommandHandler(commandHandler1); 238 simpleCompositeCommandHandler.addCommandHandler(replyTextBundleAwareCommandHandler2); 239 240 ResourceBundle resourceBundle = new ListResourceBundle() { 241 protected Object[][] getContents() { 242 return null; 243 } 244 }; 245 246 simpleCompositeCommandHandler.setReplyTextBundle(resourceBundle); 247 assertSame("1", resourceBundle, replyTextBundleAwareCommandHandler1.getReplyTextBundle()); 248 assertSame("2", resourceBundle, replyTextBundleAwareCommandHandler1.getReplyTextBundle()); 249 } 250 251 //------------------------------------------------------------------------- 252 // Test setup 253 //------------------------------------------------------------------------- 254 255 /** 256 * Perform initialization before each test 257 * @see org.mockftpserver.test.AbstractTestCase#setUp() 258 */ 259 protected void setUp() throws Exception { 260 super.setUp(); 261 simpleCompositeCommandHandler = new SimpleCompositeCommandHandler(); 262 session = (Session) createMock(Session.class); 263 command = new Command("cmd", EMPTY); 264 commandHandler1 = (CommandHandler) createMock(CommandHandler.class); 265 commandHandler2 = (CommandHandler) createMock(CommandHandler.class); 266 commandHandler3 = (CommandHandler) createMock(CommandHandler.class); 267 } 268 269} 270