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