1bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot/*
2bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * Copyright (C) 2012 The Android Open Source Project
3bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot *
4bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * Licensed under the Apache License, Version 2.0 (the "License");
5bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * you may not use this file except in compliance with the License.
6bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * You may obtain a copy of the License at
7bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot *
8bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot *      http://www.apache.org/licenses/LICENSE-2.0
9bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot *
10bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * Unless required by applicable law or agreed to in writing, software
11bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * distributed under the License is distributed on an "AS IS" BASIS,
12bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * See the License for the specific language governing permissions and
14bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * limitations under the License.
15bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot */
16bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotpackage com.android.test.runner;
17bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot
18bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport junit.framework.Assert;
19bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport junit.framework.TestCase;
20bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot
21bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport org.junit.Before;
22bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport org.junit.Test;
23bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport org.junit.runner.RunWith;
24bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport org.junit.runners.Parameterized;
25bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot
26bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport java.io.ByteArrayOutputStream;
27bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport java.io.PrintStream;
28bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot
29bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot/**
30bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * Unit tests for {@link TestLoader}.
31bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot */
32bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotpublic class TestLoaderTest {
33bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot
34bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    public static class JUnit3Test extends TestCase {
35bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    }
36bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot
37bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    public static class JUnit4Test {
38bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot        @Test
39bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot        public void thisIsATest() {
40bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot        }
41bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    }
42bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot
43bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    @RunWith(value = Parameterized.class)
44bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    public static class JUnit4RunTest {
45bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot        public void thisIsMayBeATest() {
46bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot        }
47bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    }
48bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot
49bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    public static class NotATest {
50bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot        public void thisIsNotATest() {
51bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot        }
52bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    }
53bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot
540e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot    private TestLoader mLoader;
550e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot
560e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot    @Before
570e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot    public void setUp() throws Exception {
580e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot        mLoader = new TestLoader(new PrintStream(new ByteArrayOutputStream()));
590e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot    }
600e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot
61bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    @Test
62bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    public void testLoadTests_junit3() {
63bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot        assertLoadTestSuccess(JUnit3Test.class);
64bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    }
65bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot
66bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    @Test
67bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    public void testLoadTests_junit4() {
68bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot        assertLoadTestSuccess(JUnit4Test.class);
69bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    }
70bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot
71bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    @Test
72bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    public void testLoadTests_runWith() {
73bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot        assertLoadTestSuccess(JUnit4RunTest.class);
74bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    }
75bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot
76bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    @Test
77bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    public void testLoadTests_notATest() {
780e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot        Assert.assertNull(mLoader.loadIfTest(NotATest.class.getName()));
790e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot        Assert.assertEquals(0, mLoader.getLoadedClasses().size());
800e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot        Assert.assertEquals(0, mLoader.getLoadFailures().size());
81bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    }
82bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot
83bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    @Test
84bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    public void testLoadTests_notExist() {
850e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot        Assert.assertNull(mLoader.loadIfTest("notexist"));
860e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot        Assert.assertEquals(0, mLoader.getLoadedClasses().size());
870e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot        Assert.assertEquals(1, mLoader.getLoadFailures().size());
88bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    }
89bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot
90bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    private void assertLoadTestSuccess(Class<?> clazz) {
910e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot        Assert.assertNotNull(mLoader.loadIfTest(clazz.getName()));
920e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot        Assert.assertEquals(1, mLoader.getLoadedClasses().size());
930e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot        Assert.assertEquals(0, mLoader.getLoadFailures().size());
940e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot        Assert.assertTrue(mLoader.getLoadedClasses().contains(clazz));
95bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot    }
96bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot}
97