| /* |
| * Copyright (C) 2007 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package android.test; |
| |
| import android.content.Intent; |
| |
| import junit.framework.TestCase; |
| import junit.framework.TestSuite; |
| |
| import java.util.Arrays; |
| import java.util.List; |
| |
| public class TestBrowserControllerImplTest extends TestCase { |
| private TestBrowserControllerImpl mTestBrowserController; |
| private TestBrowserViewStub mTestBrowserView; |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| mTestBrowserController = new TestBrowserControllerImpl(); |
| mTestBrowserView = new TestBrowserViewStub(); |
| mTestBrowserController.registerView(mTestBrowserView); |
| } |
| |
| public void testSetTestSuite() throws Exception { |
| TestSuite testSuite = new TestSuite(); |
| testSuite.addTestSuite(DummyTestCase.class); |
| |
| mTestBrowserController.setTestSuite(testSuite); |
| |
| verifyTestNames(Arrays.asList("Run All", DummyTestCase.class.getSimpleName()), |
| mTestBrowserView.getTestNames()); |
| } |
| |
| private static void verifyTestNames(List<String> expectedTestNames, |
| List<String> actualTestNames) { |
| assertEquals(expectedTestNames.size(), actualTestNames.size()); |
| |
| // We use endsWith instead of equals because the return value of |
| // class.getSimpleName(), when called on an inner class, varies |
| // from one vm to another. |
| // This allows the test to pass in multiple environments. |
| for (int i = 0; i < expectedTestNames.size(); i++) { |
| assertTrue(actualTestNames.get(i).endsWith(expectedTestNames.get(i))); |
| } |
| } |
| |
| public void testGetIntentForTestSuite() throws Exception { |
| TestSuite testSuite = new TestSuite(); |
| testSuite.addTestSuite(DummyTestCase.class); |
| |
| String targetBrowserActvityClassName = "com.android.bogus.DummyActivity"; |
| String expectedTargetPackageName = "com.android.bogus"; |
| mTestBrowserController.setTargetBrowserActivityClassName(targetBrowserActvityClassName); |
| mTestBrowserController.setTestSuite(testSuite); |
| mTestBrowserController.setTargetPackageName(expectedTargetPackageName); |
| Intent intent = mTestBrowserController.getIntentForTestAt(1); |
| verifyIntent(intent, DummyTestCase.class, expectedTargetPackageName); |
| assertEquals(targetBrowserActvityClassName, intent.getComponent().getClassName()); |
| } |
| |
| public void testGetIntentForTestCase() throws Exception { |
| TestSuite testSuite = new TestSuite(); |
| testSuite.addTest(new DummyTestCase()); |
| |
| mTestBrowserController.setTestSuite(testSuite); |
| Intent intent = mTestBrowserController.getIntentForTestAt(1); |
| verifyIntent(intent, DummyTestCase.class, "com.android.testharness"); |
| assertEquals(TestBrowserControllerImpl.TEST_RUNNER_ACTIVITY_CLASS_NAME, |
| intent.getComponent().getClassName()); |
| assertEquals("testDummyTest", |
| intent.getStringExtra(TestBrowserController.BUNDLE_EXTRA_TEST_METHOD_NAME)); |
| } |
| |
| public void testGetIntentForRunAll() throws Exception { |
| TestSuite testSuite = new DummyTestSuite(); |
| testSuite.addTestSuite(DummyTestCase.class); |
| |
| mTestBrowserController.setTestSuite(testSuite); |
| Intent intent = mTestBrowserController.getIntentForTestAt(0); |
| verifyIntent(intent, DummyTestSuite.class, "com.android.testharness"); |
| } |
| |
| private static void verifyIntent(Intent intent, Class testClass, String expectedPackageName) { |
| assertEquals(Intent.ACTION_RUN, intent.getAction()); |
| assertEquals(Intent.FLAG_ACTIVITY_NEW_TASK, |
| intent.getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK); |
| assertEquals(Intent.FLAG_ACTIVITY_MULTIPLE_TASK, |
| intent.getFlags() & Intent.FLAG_ACTIVITY_MULTIPLE_TASK); |
| assertEquals(testClass.getName(), intent.getData().toString()); |
| assertEquals(expectedPackageName, intent.getComponent().getPackageName()); |
| } |
| |
| private static class DummyTestSuite extends TestSuite { |
| private DummyTestSuite() { |
| super(DummyTestSuite.class.getName()); |
| } |
| } |
| |
| private static class DummyTestCase extends TestCase { |
| private DummyTestCase() { |
| super("testDummyTest"); |
| } |
| |
| public void testDummyTest() throws Exception { |
| } |
| } |
| |
| private class TestBrowserViewStub implements TestBrowserView { |
| private List<String> mTestNames; |
| |
| public void setTestNames(List<String> testNames) { |
| mTestNames = testNames; |
| } |
| |
| public List<String> getTestNames() { |
| return mTestNames; |
| } |
| } |
| } |