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