1e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair/* 2e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Copyright 2007 the original author or authors. 3e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * 4e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Licensed under the Apache License, Version 2.0 (the "License"); 5e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * you may not use this file except in compliance with the License. 6e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * You may obtain a copy of the License at 7e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * 8e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * http://www.apache.org/licenses/LICENSE-2.0 9e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * 10e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Unless required by applicable law or agreed to in writing, software 11e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * distributed under the License is distributed on an "AS IS" BASIS, 12e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * See the License for the specific language governing permissions and 14e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * limitations under the License. 15e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 16e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairpackage org.mockftpserver.core.util; 17e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 18e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport java.util.ArrayList; 19e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport java.util.Collection; 20e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport java.util.Collections; 21e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport java.util.HashMap; 22e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport java.util.Map; 23e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 24e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 25e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport org.apache.log4j.Logger; 26e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport org.mockftpserver.core.util.Assert; 27e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport org.mockftpserver.core.util.AssertFailedException; 28e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairimport org.mockftpserver.test.AbstractTest; 29e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 30e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair/** 31e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Tests for the Assert class 32e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * 33e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * @version $Revision$ - $Date$ 34e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * 35e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * @author Chris Mair 36e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 37e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismairpublic class AssertTest extends AbstractTest { 38e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 39e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair private static final Logger LOG = Logger.getLogger(AssertTest.class); 40e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 41e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 42e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * This interface defines a generic closure (a generic wrapper for a block of code). 43e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 44e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair private static interface ExceptionClosure { 45e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 46e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Execute arbitrary logic that can throw any type of Exception 47e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * @throws Exception 48e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 49e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void execute() throws Exception; 50e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 51e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 52e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 53e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair private static final String MESSAGE = "exception message"; 54e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 55e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 56e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Test the assertNull() method 57e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 58e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void testAssertNull() { 59e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 60e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.isNull(null, MESSAGE); 61e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 62e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair try { 63e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.isNull("OK", MESSAGE); 64e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair fail("Expected IllegalArumentException"); 65e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 66e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair catch (AssertFailedException expected) { 67e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair LOG.info("Expected: " + expected); 68e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair assertExceptionMessageContains(expected, MESSAGE); 69e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 70e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 71e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 72e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 73e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 74e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Test the assertNotNull() method 75e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 76e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void testAssertNotNull() { 77e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 78e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.notNull("OK", MESSAGE); 79e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 80e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair try { 81e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.notNull(null, MESSAGE); 82e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair fail("Expected IllegalArumentException"); 83e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 84e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair catch (AssertFailedException expected) { 85e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair LOG.info("Expected: " + expected); 86e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair assertExceptionMessageContains(expected, MESSAGE); 87e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 88e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 89e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 90e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 91e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Test the assertTrue() method 92e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 93e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void testAssertTrue() throws Exception { 94e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 95e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.isTrue(true, MESSAGE); 96e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 97e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair verifyThrowsAssertFailedException(true, new ExceptionClosure() { 98e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void execute() throws Exception { 99e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.isTrue(false, MESSAGE); 100e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 101e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair }); 102e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 103e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 104e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 105e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Test the assertFalse() method 106e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 107e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void testAssertFalse() throws Exception { 108e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 109e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.isFalse(false, MESSAGE); 110e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 111e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair verifyThrowsAssertFailedException(true, new ExceptionClosure() { 112e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void execute() throws Exception { 113e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.isFalse(true, MESSAGE); 114e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 115e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair }); 116e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 117e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 118e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 119e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Test the assertNotEmpty(Collection,String) method 120e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 121e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void testAssertNotNullOrEmpty_Collection() throws Exception { 122e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 123e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair final Collection COLLECTION = Collections.singletonList("item"); 124e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.notNullOrEmpty(COLLECTION, MESSAGE); 125e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 126e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair verifyThrowsAssertFailedException(true, new ExceptionClosure() { 127e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void execute() throws Exception { 128e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.notNullOrEmpty((Collection) null, MESSAGE); 129e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 130e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair }); 131e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 132e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair verifyThrowsAssertFailedException(true, new ExceptionClosure() { 133e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void execute() throws Exception { 134e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.notNullOrEmpty(new ArrayList(), MESSAGE); 135e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 136e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair }); 137e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 138e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 139e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 140e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Test the assertNotEmpty(Map,String) method 141e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 142e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void testAssertNotNullOrEmpty_Map() throws Exception { 143e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 144e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair final Map MAP = Collections.singletonMap("key", "value"); 145e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.notNullOrEmpty(MAP, MESSAGE); 146e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 147e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair verifyThrowsAssertFailedException(true, new ExceptionClosure() { 148e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void execute() throws Exception { 149e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.notNullOrEmpty((Map) null, MESSAGE); 150e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 151e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair }); 152e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 153e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair verifyThrowsAssertFailedException(true, new ExceptionClosure() { 154e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void execute() throws Exception { 155e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.notNullOrEmpty(new HashMap(), MESSAGE); 156e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 157e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair }); 158e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 159e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 160e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 161e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Test the assertNotEmpty(Objecct[],String) method 162e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 163e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void testAssertNotNullOrEmpty_array() throws Exception { 164e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 165e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair final Object[] ARRAY = { "1", "2" }; 166e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.notNullOrEmpty(ARRAY, MESSAGE); 167e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 168e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair verifyThrowsAssertFailedException(true, new ExceptionClosure() { 169e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void execute() throws Exception { 170e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.notNullOrEmpty((Object[]) null, MESSAGE); 171e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 172e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair }); 173e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 174e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair verifyThrowsAssertFailedException(true, new ExceptionClosure() { 175e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void execute() throws Exception { 176e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.notNullOrEmpty(new String[] { }, MESSAGE); 177e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 178e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair }); 179e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 180e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 181e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 182e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Test the assertNotEmpty(String,String) method 183e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 184e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void testAssertNotNullOrEmpty_String() throws Exception { 185e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 186e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.notNullOrEmpty("OK", MESSAGE); 187e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 188e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair verifyThrowsAssertFailedException(true, new ExceptionClosure() { 189e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void execute() throws Exception { 190e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.notNullOrEmpty((String) null, MESSAGE); 191e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 192e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair }); 193e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 194e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair verifyThrowsAssertFailedException(true, new ExceptionClosure() { 195e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair public void execute() throws Exception { 196e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair Assert.notNullOrEmpty("", MESSAGE); 197e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 198e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair }); 199e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 200e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 201e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair //------------------------------------------------------------------------- 202e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair // Helper Methods 203e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair //------------------------------------------------------------------------- 204e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 205e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair private void assertExceptionMessageContains(Throwable exception, String text) { 206e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair String message = exception.getMessage(); 207e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair assertTrue("Exception message [" + message + "] does not contain [" + text + "]", message.indexOf(text) != -1); 208e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 209e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 210e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair /** 211e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * Verify that execution of the ExceptionClosure (code block) results in an 212e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * AssertFailedException being thrown with the constant MESSAGE as its message. 213e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair * @param closure - the ExceptionClosure encapsulating the code to execute 214e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair */ 215e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair private void verifyThrowsAssertFailedException(boolean checkMessage, ExceptionClosure closure) 216e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair throws Exception { 217e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 218e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair try { 219e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair closure.execute(); 220e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair fail("Expected IllegalArumentException"); 221e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 222e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair catch (AssertFailedException expected) { 223e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair LOG.info("Expected: " + expected); 224e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair if (checkMessage) { 225e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair assertExceptionMessageContains(expected, MESSAGE); 226e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 227e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 228e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair } 229e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair 230e47352fb2508e2b25f003b8df12fa79c3215b4b1chrismair} 231