1a51a9564fd53b661446cd63eea23208656acc678Craig Mautner/*
2a51a9564fd53b661446cd63eea23208656acc678Craig Mautner * Copyright (C) 2012 The Android Open Source Project
3a51a9564fd53b661446cd63eea23208656acc678Craig Mautner *
4a51a9564fd53b661446cd63eea23208656acc678Craig Mautner * Licensed under the Apache License, Version 2.0 (the "License");
5a51a9564fd53b661446cd63eea23208656acc678Craig Mautner * you may not use this file except in compliance with the License.
6a51a9564fd53b661446cd63eea23208656acc678Craig Mautner * You may obtain a copy of the License at
7a51a9564fd53b661446cd63eea23208656acc678Craig Mautner *
8a51a9564fd53b661446cd63eea23208656acc678Craig Mautner *      http://www.apache.org/licenses/LICENSE-2.0
9a51a9564fd53b661446cd63eea23208656acc678Craig Mautner *
10a51a9564fd53b661446cd63eea23208656acc678Craig Mautner * Unless required by applicable law or agreed to in writing, software
11a51a9564fd53b661446cd63eea23208656acc678Craig Mautner * distributed under the License is distributed on an "AS IS" BASIS,
12a51a9564fd53b661446cd63eea23208656acc678Craig Mautner * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a51a9564fd53b661446cd63eea23208656acc678Craig Mautner * See the License for the specific language governing permissions and
14a51a9564fd53b661446cd63eea23208656acc678Craig Mautner * limitations under the License.
15a51a9564fd53b661446cd63eea23208656acc678Craig Mautner */
16a51a9564fd53b661446cd63eea23208656acc678Craig Mautner
17a51a9564fd53b661446cd63eea23208656acc678Craig Mautnerpackage com.android.internal.os;
18a51a9564fd53b661446cd63eea23208656acc678Craig Mautner
19a51a9564fd53b661446cd63eea23208656acc678Craig Mautnerimport android.os.Debug;
20a51a9564fd53b661446cd63eea23208656acc678Craig Mautner
21a51a9564fd53b661446cd63eea23208656acc678Craig Mautnerimport android.test.suitebuilder.annotation.SmallTest;
22a51a9564fd53b661446cd63eea23208656acc678Craig Mautnerimport junit.framework.TestCase;
23a51a9564fd53b661446cd63eea23208656acc678Craig Mautner
24a51a9564fd53b661446cd63eea23208656acc678Craig Mautner@SmallTest
25a51a9564fd53b661446cd63eea23208656acc678Craig Mautnerpublic class DebugTest extends TestCase {
26a51a9564fd53b661446cd63eea23208656acc678Craig Mautner
27a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    private final static String EXPECTED_GET_CALLER =
28a51a9564fd53b661446cd63eea23208656acc678Craig Mautner            "com\\.android\\.internal\\.os\\.DebugTest\\.testGetCaller:\\d\\d";
29a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    private final static String EXPECTED_GET_CALLERS =
30a51a9564fd53b661446cd63eea23208656acc678Craig Mautner            "com\\.android\\.internal\\.os\\.DebugTest.callDepth3:\\d\\d " +
31a51a9564fd53b661446cd63eea23208656acc678Craig Mautner            "com\\.android\\.internal\\.os\\.DebugTest.callDepth2:\\d\\d " +
32a51a9564fd53b661446cd63eea23208656acc678Craig Mautner            "com\\.android\\.internal\\.os\\.DebugTest.callDepth1:\\d\\d ";
33a51a9564fd53b661446cd63eea23208656acc678Craig Mautner
34a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    /**
35a51a9564fd53b661446cd63eea23208656acc678Craig Mautner     * @return String consisting of the caller to this method.
36a51a9564fd53b661446cd63eea23208656acc678Craig Mautner     */
37a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    private String callDepth0() {
38a51a9564fd53b661446cd63eea23208656acc678Craig Mautner        return Debug.getCaller();
39a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    }
40a51a9564fd53b661446cd63eea23208656acc678Craig Mautner
41a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    public void testGetCaller() {
42a51a9564fd53b661446cd63eea23208656acc678Craig Mautner        assertTrue(callDepth0().matches(EXPECTED_GET_CALLER));
43a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    }
44a51a9564fd53b661446cd63eea23208656acc678Craig Mautner
45a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    /**
46a51a9564fd53b661446cd63eea23208656acc678Craig Mautner     * @return String consisting of the callers to this method.
47a51a9564fd53b661446cd63eea23208656acc678Craig Mautner     */
48a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    private String callDepth4() {
49a51a9564fd53b661446cd63eea23208656acc678Craig Mautner        return Debug.getCallers(3);
50a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    }
51a51a9564fd53b661446cd63eea23208656acc678Craig Mautner
52a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    private String callDepth3() {
53a51a9564fd53b661446cd63eea23208656acc678Craig Mautner        return callDepth4();
54a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    }
55a51a9564fd53b661446cd63eea23208656acc678Craig Mautner
56a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    private String callDepth2() {
57a51a9564fd53b661446cd63eea23208656acc678Craig Mautner        return callDepth3();
58a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    }
59a51a9564fd53b661446cd63eea23208656acc678Craig Mautner
60a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    private String callDepth1() {
61a51a9564fd53b661446cd63eea23208656acc678Craig Mautner        return callDepth2();
62a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    }
63a51a9564fd53b661446cd63eea23208656acc678Craig Mautner
64a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    public void testGetCallers() {
65a51a9564fd53b661446cd63eea23208656acc678Craig Mautner        assertTrue(callDepth1().matches(EXPECTED_GET_CALLERS));
66a51a9564fd53b661446cd63eea23208656acc678Craig Mautner    }
67a51a9564fd53b661446cd63eea23208656acc678Craig Mautner}
68