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