blob: 1315606896030f55b19d1eb874c9674eaac4bfe3 [file] [log] [blame]
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001/*
2 * Copyright (C) 2007 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.test;
18
19import android.content.Intent;
20
21import junit.framework.TestCase;
22import junit.framework.TestSuite;
23
24import java.util.Arrays;
25import java.util.List;
26
27public class TestBrowserControllerImplTest extends TestCase {
28 private TestBrowserControllerImpl mTestBrowserController;
29 private TestBrowserViewStub mTestBrowserView;
30
31 @Override
32 protected void setUp() throws Exception {
33 super.setUp();
34 mTestBrowserController = new TestBrowserControllerImpl();
35 mTestBrowserView = new TestBrowserViewStub();
36 mTestBrowserController.registerView(mTestBrowserView);
37 }
38
39 public void testSetTestSuite() throws Exception {
40 TestSuite testSuite = new TestSuite();
41 testSuite.addTestSuite(DummyTestCase.class);
42
43 mTestBrowserController.setTestSuite(testSuite);
44
45 verifyTestNames(Arrays.asList("Run All", DummyTestCase.class.getSimpleName()),
46 mTestBrowserView.getTestNames());
47 }
48
49 private static void verifyTestNames(List<String> expectedTestNames,
50 List<String> actualTestNames) {
51 assertEquals(expectedTestNames.size(), actualTestNames.size());
52
53 // We use endsWith instead of equals because the return value of
54 // class.getSimpleName(), when called on an inner class, varies
55 // from one vm to another.
56 // This allows the test to pass in multiple environments.
57 for (int i = 0; i < expectedTestNames.size(); i++) {
58 assertTrue(actualTestNames.get(i).endsWith(expectedTestNames.get(i)));
59 }
60 }
61
62 public void testGetIntentForTestSuite() throws Exception {
63 TestSuite testSuite = new TestSuite();
64 testSuite.addTestSuite(DummyTestCase.class);
65
66 String targetBrowserActvityClassName = "com.android.bogus.DummyActivity";
67 String expectedTargetPackageName = "com.android.bogus";
68 mTestBrowserController.setTargetBrowserActivityClassName(targetBrowserActvityClassName);
69 mTestBrowserController.setTestSuite(testSuite);
70 mTestBrowserController.setTargetPackageName(expectedTargetPackageName);
71 Intent intent = mTestBrowserController.getIntentForTestAt(1);
72 verifyIntent(intent, DummyTestCase.class, expectedTargetPackageName);
73 assertEquals(targetBrowserActvityClassName, intent.getComponent().getClassName());
74 }
75
76 public void testGetIntentForTestCase() throws Exception {
77 TestSuite testSuite = new TestSuite();
78 testSuite.addTest(new DummyTestCase());
79
80 mTestBrowserController.setTestSuite(testSuite);
81 Intent intent = mTestBrowserController.getIntentForTestAt(1);
82 verifyIntent(intent, DummyTestCase.class, "com.android.testharness");
83 assertEquals(TestBrowserControllerImpl.TEST_RUNNER_ACTIVITY_CLASS_NAME,
84 intent.getComponent().getClassName());
85 assertEquals("testDummyTest",
86 intent.getStringExtra(TestBrowserController.BUNDLE_EXTRA_TEST_METHOD_NAME));
87 }
88
89 public void testGetIntentForRunAll() throws Exception {
90 TestSuite testSuite = new DummyTestSuite();
91 testSuite.addTestSuite(DummyTestCase.class);
92
93 mTestBrowserController.setTestSuite(testSuite);
94 Intent intent = mTestBrowserController.getIntentForTestAt(0);
95 verifyIntent(intent, DummyTestSuite.class, "com.android.testharness");
96 }
97
98 private static void verifyIntent(Intent intent, Class testClass, String expectedPackageName) {
99 assertEquals(Intent.ACTION_RUN, intent.getAction());
100 assertEquals(Intent.FLAG_ACTIVITY_NEW_TASK,
101 intent.getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK);
102 assertEquals(Intent.FLAG_ACTIVITY_MULTIPLE_TASK,
103 intent.getFlags() & Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
104 assertEquals(testClass.getName(), intent.getData().toString());
105 assertEquals(expectedPackageName, intent.getComponent().getPackageName());
106 }
107
108 private static class DummyTestSuite extends TestSuite {
109 private DummyTestSuite() {
110 super(DummyTestSuite.class.getName());
111 }
112 }
113
114 private static class DummyTestCase extends TestCase {
115 private DummyTestCase() {
116 super("testDummyTest");
117 }
118
119 public void testDummyTest() throws Exception {
120 }
121 }
122
123 private class TestBrowserViewStub implements TestBrowserView {
124 private List<String> mTestNames;
125
126 public void setTestNames(List<String> testNames) {
127 mTestNames = testNames;
128 }
129
130 public List<String> getTestNames() {
131 return mTestNames;
132 }
133 }
134}