15e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot/*
25e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot * Copyright (C) 2012 The Android Open Source Project
35e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot *
45e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot * Licensed under the Apache License, Version 2.0 (the "License");
55e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot * you may not use this file except in compliance with the License.
65e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot * You may obtain a copy of the License at
75e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot *
85e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot *      http://www.apache.org/licenses/LICENSE-2.0
95e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot *
105e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot * Unless required by applicable law or agreed to in writing, software
115e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot * distributed under the License is distributed on an "AS IS" BASIS,
125e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot * See the License for the specific language governing permissions and
145e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot * limitations under the License.
155e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot */
165e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabotpackage com.android.test.runner;
175e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
185e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabotimport android.app.Instrumentation;
195e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabotimport android.test.suitebuilder.annotation.SmallTest;
205e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
215e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabotimport com.android.test.InjectInstrumentation;
225e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
235e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabotimport org.junit.Assert;
245e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabotimport org.junit.Test;
255e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabotimport org.junit.runner.JUnitCore;
265e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabotimport org.junit.runner.Result;
275e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
285e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabotimport java.io.ByteArrayOutputStream;
295e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabotimport java.io.PrintStream;
305e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
315e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot/**
325e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot * Unit tests for {@link TestRequestBuilder}.
335e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot */
345e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabotpublic class TestRequestBuilderTest {
355e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
365e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    public static class SampleTest {
375e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
385e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        @SmallTest
395e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        @Test
405e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        public void testSmall() {
415e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        }
425e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
435e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        @Test
445e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        public void testOther() {
455e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        }
465e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    }
475e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
485e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    @SmallTest
495e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    public static class SampleClassSize {
505e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
515e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        @Test
525e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        public void testSmall() {
535e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        }
545e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
555e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        @Test
565e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        public void testSmallToo() {
575e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        }
585e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    }
595e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
605e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    @InjectInstrumentation
615e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    public Instrumentation mInstr;
625e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
635e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    /**
645e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot     * Test initial condition for size filtering - that all tests run when no filter is attached
655e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot     */
665e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    @Test
675e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    public void testNoSize() {
685e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
695e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        b.addTestClass(SampleTest.class.getName());
705e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        TestRequest request = b.build(mInstr);
715e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        JUnitCore testRunner = new JUnitCore();
725e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        Result result = testRunner.run(request.getRequest());
735e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        Assert.assertEquals(2, result.getRunCount());
745e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    }
755e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
765e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    /**
775e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot     * Test that size annotation filtering works
785e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot     */
795e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    @Test
805e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    public void testSize() {
815e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
825e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        b.addTestClass(SampleTest.class.getName());
835e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        b.addTestSizeFilter("small");
845e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        TestRequest request = b.build(mInstr);
855e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        JUnitCore testRunner = new JUnitCore();
865e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        Result result = testRunner.run(request.getRequest());
875e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        Assert.assertEquals(1, result.getRunCount());
885e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    }
895e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot
905e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    /**
915e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot     * Test that size annotation filtering by class works
925e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot     */
935e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    @Test
945e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    public void testSize_class() {
955e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
965e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        b.addTestClass(SampleTest.class.getName());
975e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        b.addTestClass(SampleClassSize.class.getName());
985e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        b.addTestSizeFilter("small");
995e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        TestRequest request = b.build(mInstr);
1005e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        JUnitCore testRunner = new JUnitCore();
1015e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        Result result = testRunner.run(request.getRequest());
1025e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot        Assert.assertEquals(3, result.getRunCount());
1035e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot    }
10416522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot
10516522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot    /**
10616522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot     * Test that annotation filtering by class works
10716522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot     */
10816522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot    @Test
10916522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot    public void testAddAnnotationInclusionFilter() {
11016522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
11116522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        b.addAnnotationInclusionFilter(SmallTest.class.getName());
11216522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        b.addTestClass(SampleTest.class.getName());
11316522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        b.addTestClass(SampleClassSize.class.getName());
11416522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        TestRequest request = b.build(mInstr);
11516522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        JUnitCore testRunner = new JUnitCore();
11616522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        Result result = testRunner.run(request.getRequest());
11716522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        Assert.assertEquals(3, result.getRunCount());
11816522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot    }
11916522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot
12016522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot    /**
12116522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot     * Test that annotation filtering by class works
12216522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot     */
12316522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot    @Test
12416522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot    public void testAddAnnotationExclusionFilter() {
12516522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        TestRequestBuilder b = new TestRequestBuilder(new PrintStream(new ByteArrayOutputStream()));
12616522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        b.addAnnotationExclusionFilter(SmallTest.class.getName());
12716522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        b.addTestClass(SampleTest.class.getName());
12816522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        b.addTestClass(SampleClassSize.class.getName());
12916522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        TestRequest request = b.build(mInstr);
13016522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        JUnitCore testRunner = new JUnitCore();
13116522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        Result result = testRunner.run(request.getRequest());
13216522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        Assert.assertEquals(1, result.getRunCount());
13316522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot    }
1345e6ca275201fea0fd0316fb15bc7d0248e224b2cBrett Chabot}
135