19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.test;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.mock.MockContext;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.suitebuilder.annotation.SmallTest;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.google.android.collect.Lists;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestCase;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.AssertionFailedError;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.Test;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestSuite;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestListener;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.List;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Arrays;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unit tests for {@link AndroidTestRunner}
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project@SmallTest
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class AndroidTestRunnerTest extends TestCase {
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private AndroidTestRunner mAndroidTestRunner;
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private StubContext mStubContext;
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected void setUp() throws Exception {
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super.setUp();
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mStubContext = new StubContext(getClass().getClassLoader());
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner = new AndroidTestRunner();
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.setContext(mStubContext);
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testLoadNoTestCases() throws Exception {
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.setTestClassName(TestSuite.class.getName(), null);
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        List<TestCase> testCases = mAndroidTestRunner.getTestCases();
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertNotNull(testCases);
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals(1, testCases.size());
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals("warning", testCases.get(0).getName());
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals(TestSuite.class.getSimpleName(), mAndroidTestRunner.getTestClassName());
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testSetTestSuiteWithOneTestCase() throws Exception {
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.setTestClassName(OneTestTestCase.class.getName(), null);
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        List<TestCase> testCases = mAndroidTestRunner.getTestCases();
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertNotNull(testCases);
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals(1, testCases.size());
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals("testOne", testCases.get(0).getName());
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals(OneTestTestCase.class.getSimpleName(), mAndroidTestRunner.getTestClassName());
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testRunTest() throws Exception {
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.setTestClassName(OneTestTestCase.class.getName(), null);
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        TestListenerStub testListenerStub = new TestListenerStub();
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.addTestListener(testListenerStub);
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.runTest();
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertTrue(testListenerStub.saw("testOne"));
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testRunTestWithAndroidTestCase() throws Exception {
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.setTestClassName(
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                OneAndroidTestTestCase.class.getName(), "testOneAndroid");
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        TestListenerStub testListenerStub = new TestListenerStub();
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.addTestListener(testListenerStub);
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertNull(((AndroidTestCase) mAndroidTestRunner.getTestCases().get(0)).getContext());
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.runTest();
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertTrue(testListenerStub.saw("testOneAndroid"));
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertSame(mStubContext,
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                ((AndroidTestCase) mAndroidTestRunner.getTestCases().get(0)).getContext());
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testRunTestWithAndroidTestCaseInSuite() throws Exception {
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.setTestClassName(OneAndroidTestTestCase.class.getName(), null);
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        TestListenerStub testListenerStub = new TestListenerStub();
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.addTestListener(testListenerStub);
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.runTest();
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertTrue(testListenerStub.saw("testOneAndroid"));
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        List<TestCase> testCases = mAndroidTestRunner.getTestCases();
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        for (TestCase testCase : testCases) {
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            assertSame(mStubContext, ((AndroidTestCase) testCase).getContext());
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testRunTestWithAndroidTestCaseInNestedSuite() throws Exception {
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.setTestClassName(AndroidTestCaseTestSuite.class.getName(), null);
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        TestListenerStub testListenerStub = new TestListenerStub();
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.addTestListener(testListenerStub);
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.runTest();
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertTrue(testListenerStub.saw("testOneAndroid"));
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        List<TestCase> testCases = mAndroidTestRunner.getTestCases();
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        for (TestCase testCase : testCases) {
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            assertSame(mStubContext, ((AndroidTestCase) testCase).getContext());
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testRunTestWithNullListener() throws Exception {
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.setTestClassName(OneTestTestCase.class.getName(), null);
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.addTestListener(null);
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mAndroidTestRunner.runTest();
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (NullPointerException e) {
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            fail("Should not add a null TestListener");
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testSetTestClassWithTestSuiteProvider() throws Exception {
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.setTestClassName(SampleTestSuiteProvider.class.getName(), null);
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        List<TestCase> testCases = mAndroidTestRunner.getTestCases();
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        List<String> testNames = Lists.newArrayList();
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        for (TestCase testCase : testCases) {
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            testNames.add(testCase.getName());
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Use the test suite provided by the interface method rather than the static suite method.
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals(Arrays.asList("testOne"), testNames);
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testSetTestClassWithTestSuite() throws Exception {
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.setTestClassName(SampleTestSuite.class.getName(), null);
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        List<TestCase> testCases = mAndroidTestRunner.getTestCases();
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        List<String> testNames = Lists.newArrayList();
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        for (TestCase testCase : testCases) {
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            testNames.add(testCase.getName());
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals(Arrays.asList("testOne", "testOne", "testTwo"), testNames);
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testRunSingleTestMethod() throws Exception {
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        String testMethodName = "testTwo";
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.setTestClassName(TwoTestTestCase.class.getName(), testMethodName);
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        List<TestCase> testCases = mAndroidTestRunner.getTestCases();
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        List<String> testNames = Lists.newArrayList();
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        for (TestCase testCase : testCases) {
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            testNames.add(testCase.getName());
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals(Arrays.asList(testMethodName), testNames);
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testSetTestClassInvalidClass() throws Exception {
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mAndroidTestRunner.setTestClassName("class.that.does.not.exist", null);
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            fail("expected exception not thrown");
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (RuntimeException e) {
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // expected
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testRunSkipExecution() throws Exception {
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        String testMethodName = "testFail";
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.setTestClassName(
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                OnePassOneErrorOneFailTestCase.class.getName(), testMethodName);
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        TestListenerStub testListenerStub = new TestListenerStub();
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.addTestListener(testListenerStub);
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // running the failing test should pass - ie as if its not run
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAndroidTestRunner.runTest();
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertTrue(testListenerStub.saw("testFail"));
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static class SampleTestSuiteProvider implements TestSuiteProvider {
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public TestSuite getTestSuite() {
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            TestSuite testSuite = new TestSuite();
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            testSuite.addTestSuite(OneTestTestCase.class);
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return testSuite;
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public static Test suite() {
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return SampleTestSuite.suite();
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static class SampleTestSuite {
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public static TestSuite suite() {
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            TestSuite testSuite = new TestSuite();
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            testSuite.addTestSuite(OneTestTestCase.class);
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            testSuite.addTestSuite(TwoTestTestCase.class);
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return testSuite;
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static class AndroidTestCaseTestSuite {
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public static TestSuite suite() {
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            TestSuite testSuite = new TestSuite();
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            testSuite.addTestSuite(OneAndroidTestTestCase.class);
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return testSuite;
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static class OneAndroidTestTestCase extends AndroidTestCase {
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void testOneAndroid() throws Exception {
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static class OneTestTestCase extends TestCase {
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void testOne() throws Exception {
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static class TwoTestTestCase extends TestCase {
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void testOne() throws Exception {
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void testTwo() throws Exception {
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static class OnePassOneErrorOneFailTestCase extends TestCase {
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void testPass() throws Exception {
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void testError() throws Exception {
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throw new Exception();
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void testFail() throws Exception {
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            fail();
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static class TestListenerStub implements TestListener {
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        List<String> testNames = Lists.newArrayList();
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void addError(Test test, Throwable t) {
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void addFailure(Test test, AssertionFailedError t) {
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void endTest(Test test) {
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void startTest(Test test) {
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (test instanceof TestCase) {
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                testNames.add(((TestCase) test).getName());
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } else if (test instanceof TestSuite) {
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                testNames.add(((TestSuite) test).getName());
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public boolean saw(String testName) {
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return testNames.contains(testName);
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static class StubContext extends MockContext {
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        private ClassLoader mClassLoader;
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public StubContext(ClassLoader classLoader) {
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            this.mClassLoader = classLoader;
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        @Override
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public ClassLoader getClassLoader() {
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return mClassLoader;
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
295