1 // Copyright 2014 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.testing.local; 6 7 import org.junit.Assert; 8 import org.junit.Test; 9 import org.junit.runner.Description; 10 import org.junit.runner.RunWith; 11 import org.junit.runner.manipulation.Filter; 12 import org.junit.runners.BlockJUnit4ClassRunner; 13 14 /** Unit tests for GtestFilter. */ 15 @RunWith(BlockJUnit4ClassRunner.class) 16 public class GtestFilterTest { 17 18 private class TestClass {} 19 20 private class OtherTestClass {} 21 22 @Test testDescription()23 public void testDescription() { 24 Filter filterUnderTest = new GtestFilter(String.format("%s.*", TestClass.class.getName())); 25 Assert.assertEquals( 26 "gtest-filter: " + TestClass.class.getName() + ".*", filterUnderTest.describe()); 27 } 28 29 @Test testNoFilter()30 public void testNoFilter() { 31 Filter filterUnderTest = new GtestFilter(""); 32 Assert.assertTrue( 33 filterUnderTest.shouldRun( 34 Description.createTestDescription(TestClass.class, "testMethod"))); 35 Assert.assertTrue( 36 filterUnderTest.shouldRun( 37 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 38 Assert.assertTrue( 39 filterUnderTest.shouldRun( 40 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 41 } 42 43 @Test testPositiveFilterExplicit()44 public void testPositiveFilterExplicit() { 45 Filter filterUnderTest = 46 new GtestFilter(String.format("%s.testMethod", TestClass.class.getName())); 47 Assert.assertTrue( 48 filterUnderTest.shouldRun( 49 Description.createTestDescription(TestClass.class, "testMethod"))); 50 Assert.assertFalse( 51 filterUnderTest.shouldRun( 52 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 53 Assert.assertFalse( 54 filterUnderTest.shouldRun( 55 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 56 } 57 58 @Test testPositiveFilterClassRegex()59 public void testPositiveFilterClassRegex() { 60 Filter filterUnderTest = new GtestFilter(String.format("%s.*", TestClass.class.getName())); 61 Assert.assertTrue( 62 filterUnderTest.shouldRun( 63 Description.createTestDescription(TestClass.class, "testMethod"))); 64 Assert.assertTrue( 65 filterUnderTest.shouldRun( 66 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 67 Assert.assertFalse( 68 filterUnderTest.shouldRun( 69 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 70 } 71 72 @Test testNegativeFilterExplicit()73 public void testNegativeFilterExplicit() { 74 Filter filterUnderTest = 75 new GtestFilter(String.format("-%s.testMethod", TestClass.class.getName())); 76 Assert.assertFalse( 77 filterUnderTest.shouldRun( 78 Description.createTestDescription(TestClass.class, "testMethod"))); 79 Assert.assertTrue( 80 filterUnderTest.shouldRun( 81 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 82 Assert.assertTrue( 83 filterUnderTest.shouldRun( 84 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 85 } 86 87 @Test testNegativeFilterClassRegex()88 public void testNegativeFilterClassRegex() { 89 Filter filterUnderTest = new GtestFilter(String.format("-%s.*", TestClass.class.getName())); 90 Assert.assertFalse( 91 filterUnderTest.shouldRun( 92 Description.createTestDescription(TestClass.class, "testMethod"))); 93 Assert.assertFalse( 94 filterUnderTest.shouldRun( 95 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 96 Assert.assertTrue( 97 filterUnderTest.shouldRun( 98 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 99 } 100 101 @Test testPositiveAndNegativeFilter()102 public void testPositiveAndNegativeFilter() { 103 Filter filterUnderTest = 104 new GtestFilter( 105 String.format( 106 "%s.*-%s.testMethod", 107 TestClass.class.getName(), TestClass.class.getName())); 108 Assert.assertFalse( 109 filterUnderTest.shouldRun( 110 Description.createTestDescription(TestClass.class, "testMethod"))); 111 Assert.assertTrue( 112 filterUnderTest.shouldRun( 113 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 114 Assert.assertFalse( 115 filterUnderTest.shouldRun( 116 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 117 } 118 119 @Test testMultiplePositiveFilters()120 public void testMultiplePositiveFilters() { 121 Filter filterUnderTest = 122 new GtestFilter( 123 String.format( 124 "%s.otherTestMethod:%s.otherTestMethod[1]", 125 TestClass.class.getName(), OtherTestClass.class.getName())); 126 Assert.assertFalse( 127 filterUnderTest.shouldRun( 128 Description.createTestDescription(TestClass.class, "testMethod"))); 129 Assert.assertTrue( 130 filterUnderTest.shouldRun( 131 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 132 Assert.assertFalse( 133 filterUnderTest.shouldRun( 134 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 135 Assert.assertTrue( 136 filterUnderTest.shouldRun( 137 Description.createTestDescription( 138 OtherTestClass.class, "otherTestMethod[1]"))); 139 } 140 141 @Test testMultipleFiltersPositiveAndNegative()142 public void testMultipleFiltersPositiveAndNegative() { 143 Filter filterUnderTest = 144 new GtestFilter( 145 String.format( 146 "%s.*-%s.testMethod", 147 TestClass.class.getName(), TestClass.class.getName())); 148 Assert.assertFalse( 149 filterUnderTest.shouldRun( 150 Description.createTestDescription(TestClass.class, "testMethod"))); 151 Assert.assertTrue( 152 filterUnderTest.shouldRun( 153 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 154 Assert.assertFalse( 155 filterUnderTest.shouldRun( 156 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 157 } 158 159 @Test testMultipleNegativeFilters()160 public void testMultipleNegativeFilters() { 161 Filter filterUnderTest = 162 new GtestFilter( 163 String.format( 164 "*-%s.otherTestMethod:%s.otherTestMethod", 165 TestClass.class.getName(), OtherTestClass.class.getName())); 166 Assert.assertTrue( 167 filterUnderTest.shouldRun( 168 Description.createTestDescription(TestClass.class, "testMethod"))); 169 Assert.assertFalse( 170 filterUnderTest.shouldRun( 171 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 172 Assert.assertTrue( 173 filterUnderTest.shouldRun( 174 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 175 Assert.assertFalse( 176 filterUnderTest.shouldRun( 177 Description.createTestDescription( 178 OtherTestClass.class, "otherTestMethod"))); 179 } 180 } 181