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