16f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki/* 26f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * Copyright (C) 2016 The Android Open Source Project 36f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * 46f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * Licensed under the Apache License, Version 2.0 (the "License"); 56f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * you may not use this file except in compliance with the License. 66f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * You may obtain a copy of the License at 76f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * 86f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * http://www.apache.org/licenses/LICENSE-2.0 96f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * 106f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * Unless required by applicable law or agreed to in writing, software 116f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * distributed under the License is distributed on an "AS IS" BASIS, 126f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * See the License for the specific language governing permissions and 146f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * limitations under the License. 156f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki */ 166f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onukipackage com.android.server.testutis; 176f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki 186f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onukiimport android.test.MoreAsserts; 196f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki 206f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onukiimport junit.framework.Assert; 216f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki 226f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onukipublic class TestUtils { 236f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki private TestUtils() { 246f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki } 256f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki 266f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki public static void assertExpectException(Class<? extends Throwable> expectedExceptionType, 276f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki String expectedExceptionMessageRegex, Runnable r) { 286f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki try { 296f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki r.run(); 30e3ae7ec14a3204ee502219b6bb46dc9ab8e24a36Makoto Onuki Assert.fail("Expected exception type " + expectedExceptionType.getName() 316f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki + " was not thrown"); 326f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki } catch (Throwable e) { 336f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki Assert.assertTrue( 34e3ae7ec14a3204ee502219b6bb46dc9ab8e24a36Makoto Onuki "Expected exception type was " + expectedExceptionType.getName() 356f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki + " but caught " + e.getClass().getName(), 366f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki expectedExceptionType.isAssignableFrom(e.getClass())); 376f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki if (expectedExceptionMessageRegex != null) { 386f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki MoreAsserts.assertContainsRegex(expectedExceptionMessageRegex, e.getMessage()); 396f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki } 406f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki } 416f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki } 426f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki} 43