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