/*
* 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;
}
}
}
|