EvenMoreAsserts.java revision 59f6477e10203617f504857f7e9aee2fda393f4f
159f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee/* 259f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee * Copyright (C) 2011 The Android Open Source Project 359f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee * 459f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee * Licensed under the Apache License, Version 2.0 (the "License"); 559f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee * you may not use this file except in compliance with the License. 659f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee * You may obtain a copy of the License at 759f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee * 859f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee * http://www.apache.org/licenses/LICENSE-2.0 959f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee * 1059f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee * Unless required by applicable law or agreed to in writing, software 1159f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee * distributed under the License is distributed on an "AS IS" BASIS, 1259f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1359f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee * See the License for the specific language governing permissions and 1459f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee * limitations under the License. 1559f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee */ 1659f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee 1759f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjeepackage com.android.providers.contacts; 1859f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee 1959f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjeeimport junit.framework.Assert; 2059f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee 2159f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee/** 2259f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee * Contains additional assertion methods not found in Junit or MoreAsserts. 2359f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee */ 2459f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjeepublic final class EvenMoreAsserts { 2559f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee // Non instantiable. 2659f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee private EvenMoreAsserts() { } 2759f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee 2859f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee public static <T extends Exception> void assertThrows(Class<T> exception, Runnable r) { 2959f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee assertThrows(null, exception, r); 3059f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee } 3159f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee 3259f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee public static <T extends Exception> void assertThrows(String message, Class<T> exception, 3359f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee Runnable r) { 3459f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee try { 3559f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee r.run(); 3659f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee // Cannot invoke Assert.fail() here because it will be caught by the try/catch below 3759f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee // and, if we are expecting an AssertionError or AssertionFailedError (depending on 3859f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee // the platform), we might incorrectly identify that as a success. 3959f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee } catch (Exception e) { 4059f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee if (!exception.isInstance(e)) { 4159f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee Assert.fail(appendUserMessage("Exception " + exception + " expected but " + 4259f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee e.getClass() +" thrown: " + e, message)); 4359f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee } 4459f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee return; 4559f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee } 4659f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee Assert.fail(appendUserMessage( 4759f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee "Exception " + exception + " expected but no exception was thrown.", 4859f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee message)); 4959f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee } 5059f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee 5159f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee private static String appendUserMessage(String errorMsg, String userMsg) { 5259f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee return userMsg == null ? errorMsg : errorMsg + userMsg; 5359f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee } 5459f6477e10203617f504857f7e9aee2fda393f4fDebashish Chatterjee} 55