175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov/*
275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Copyright (C) 2012 The Android Open Source Project
375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov *
475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Licensed under the Apache License, Version 2.0 (the "License");
575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * you may not use this file except in compliance with the License.
675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * You may obtain a copy of the License at
775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov *
875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov *      http://www.apache.org/licenses/LICENSE-2.0
975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov *
1075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * Unless required by applicable law or agreed to in writing, software
1175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * distributed under the License is distributed on an "AS IS" BASIS,
1275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * See the License for the specific language governing permissions and
1475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov * limitations under the License.
1575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov */
1675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
1775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganovpackage com.android.internal.os;
1875986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
1975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganovimport android.os.Debug;
2079311c4af8b54d3cd47ab37a120c648bfc990511Svetoslav Ganov
2175986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganovimport android.test.suitebuilder.annotation.SmallTest;
2275986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganovimport junit.framework.TestCase;
2379311c4af8b54d3cd47ab37a120c648bfc990511Svetoslav Ganov
2475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov@SmallTest
2575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganovpublic class DebugTest extends TestCase {
2675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
2775986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    private final static String EXPECTED_GET_CALLER =
28d116d7c78a9c53f30a73bf273bd7618312cf3847Svetoslav Ganov            "com\\.android\\.internal\\.os\\.DebugTest\\.testGetCaller:\\d\\d";
298643aa0179e598e78d938c59035389054535a229Svetoslav Ganov    private final static String EXPECTED_GET_CALLERS =
3075986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov            "com\\.android\\.internal\\.os\\.DebugTest.callDepth3:\\d\\d " +
31d116d7c78a9c53f30a73bf273bd7618312cf3847Svetoslav Ganov            "com\\.android\\.internal\\.os\\.DebugTest.callDepth2:\\d\\d " +
32d116d7c78a9c53f30a73bf273bd7618312cf3847Svetoslav Ganov            "com\\.android\\.internal\\.os\\.DebugTest.callDepth1:\\d\\d ";
3375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov
3475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    /**
3575986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     * @return String consisting of the caller to this method.
3675986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov     */
3738e8b4e5bc3c93affdffbc064fd9db5aeccc3e8eSvetoslav Ganov    private String callDepth0() {
38b303d8381d734f48c4e1de4f11bf25950b28adf1Scott Main        return Debug.getCaller();
39b303d8381d734f48c4e1de4f11bf25950b28adf1Scott Main    }
40e1302edd40c5cc264f842e17e3796e0a11d6f045Joe Fernandez
41e1302edd40c5cc264f842e17e3796e0a11d6f045Joe Fernandez    public void testGetCaller() {
42e1302edd40c5cc264f842e17e3796e0a11d6f045Joe Fernandez        assertTrue(callDepth0().matches(EXPECTED_GET_CALLER));
43e1302edd40c5cc264f842e17e3796e0a11d6f045Joe Fernandez    }
44e1302edd40c5cc264f842e17e3796e0a11d6f045Joe Fernandez
45e1302edd40c5cc264f842e17e3796e0a11d6f045Joe Fernandez    /**
46e1302edd40c5cc264f842e17e3796e0a11d6f045Joe Fernandez     * @return String consisting of the callers to this method.
47e1302edd40c5cc264f842e17e3796e0a11d6f045Joe Fernandez     */
48b303d8381d734f48c4e1de4f11bf25950b28adf1Scott Main    private String callDepth4() {
4975986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return Debug.getCallers(3);
5038e8b4e5bc3c93affdffbc064fd9db5aeccc3e8eSvetoslav Ganov    }
5138e8b4e5bc3c93affdffbc064fd9db5aeccc3e8eSvetoslav Ganov
5238e8b4e5bc3c93affdffbc064fd9db5aeccc3e8eSvetoslav Ganov    private String callDepth3() {
5375986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov        return callDepth4();
5475986cf9bc57ef11ad70f36fb77fbbf5d63af6ecsvetoslavganov    }
55cc4053e031371456fe54d51bbad1db721db4ae38Svetoslav Ganov
568643aa0179e598e78d938c59035389054535a229Svetoslav Ganov    private String callDepth2() {
57b303d8381d734f48c4e1de4f11bf25950b28adf1Scott Main        return callDepth3();
5838e8b4e5bc3c93affdffbc064fd9db5aeccc3e8eSvetoslav Ganov    }
5938e8b4e5bc3c93affdffbc064fd9db5aeccc3e8eSvetoslav Ganov
6038e8b4e5bc3c93affdffbc064fd9db5aeccc3e8eSvetoslav Ganov    private String callDepth1() {
6138e8b4e5bc3c93affdffbc064fd9db5aeccc3e8eSvetoslav Ganov        return callDepth2();
62636fd528f7ad51f565a390226d9f469f8c675ccfDianne Hackborn    }
63636fd528f7ad51f565a390226d9f469f8c675ccfDianne Hackborn
64636fd528f7ad51f565a390226d9f469f8c675ccfDianne Hackborn    public void testGetCallers() {
6553e184d34e7c5b1a65c74fac55f9a635d8131ddaSvetoslav Ganov        assertTrue(callDepth1().matches(EXPECTED_GET_CALLERS));
6653e184d34e7c5b1a65c74fac55f9a635d8131ddaSvetoslav Ganov    }
6738e8b4e5bc3c93affdffbc064fd9db5aeccc3e8eSvetoslav Ganov}
6853e184d34e7c5b1a65c74fac55f9a635d8131ddaSvetoslav Ganov