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 /** 15 * Unit tests for GtestFilter. 16 */ 17 @RunWith(BlockJUnit4ClassRunner.class) 18 public class GtestFilterTest { 19 20 private class TestClass {} 21 private class OtherTestClass {} 22 23 @Test testDescription()24 public void testDescription() { 25 Filter filterUnderTest = new GtestFilter(String.format("%s.*", TestClass.class.getName())); 26 Assert.assertEquals("gtest-filter: " + TestClass.class.getName() + ".*", 27 filterUnderTest.describe()); 28 } 29 30 @Test testNoFilter()31 public void testNoFilter() { 32 Filter filterUnderTest = new GtestFilter(""); 33 Assert.assertTrue(filterUnderTest.shouldRun( 34 Description.createTestDescription(TestClass.class, "testMethod"))); 35 Assert.assertTrue(filterUnderTest.shouldRun( 36 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 37 Assert.assertTrue(filterUnderTest.shouldRun( 38 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 39 } 40 41 @Test testPositiveFilterExplicit()42 public void testPositiveFilterExplicit() { 43 Filter filterUnderTest = new GtestFilter(String.format( 44 "%s.testMethod", TestClass.class.getName())); 45 Assert.assertTrue(filterUnderTest.shouldRun( 46 Description.createTestDescription(TestClass.class, "testMethod"))); 47 Assert.assertFalse(filterUnderTest.shouldRun( 48 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 49 Assert.assertFalse(filterUnderTest.shouldRun( 50 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 51 } 52 53 @Test testPositiveFilterClassRegex()54 public void testPositiveFilterClassRegex() { 55 Filter filterUnderTest = new GtestFilter(String.format("%s.*", TestClass.class.getName())); 56 Assert.assertTrue(filterUnderTest.shouldRun( 57 Description.createTestDescription(TestClass.class, "testMethod"))); 58 Assert.assertTrue(filterUnderTest.shouldRun( 59 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 60 Assert.assertFalse(filterUnderTest.shouldRun( 61 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 62 } 63 64 @Test testNegativeFilterExplicit()65 public void testNegativeFilterExplicit() { 66 Filter filterUnderTest = new GtestFilter(String.format( 67 "-%s.testMethod", TestClass.class.getName())); 68 Assert.assertFalse(filterUnderTest.shouldRun( 69 Description.createTestDescription(TestClass.class, "testMethod"))); 70 Assert.assertTrue(filterUnderTest.shouldRun( 71 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 72 Assert.assertTrue(filterUnderTest.shouldRun( 73 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 74 } 75 76 @Test testNegativeFilterClassRegex()77 public void testNegativeFilterClassRegex() { 78 Filter filterUnderTest = new GtestFilter(String.format( 79 "-%s.*", TestClass.class.getName())); 80 Assert.assertFalse(filterUnderTest.shouldRun( 81 Description.createTestDescription(TestClass.class, "testMethod"))); 82 Assert.assertFalse(filterUnderTest.shouldRun( 83 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 84 Assert.assertTrue(filterUnderTest.shouldRun( 85 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 86 } 87 88 @Test testPositiveAndNegativeFilter()89 public void testPositiveAndNegativeFilter() { 90 Filter filterUnderTest = new GtestFilter(String.format( 91 "%s.*-%s.testMethod", TestClass.class.getName(), TestClass.class.getName())); 92 Assert.assertFalse(filterUnderTest.shouldRun( 93 Description.createTestDescription(TestClass.class, "testMethod"))); 94 Assert.assertTrue(filterUnderTest.shouldRun( 95 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 96 Assert.assertFalse(filterUnderTest.shouldRun( 97 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 98 } 99 100 @Test testMultiplePositiveFilters()101 public void testMultiplePositiveFilters() { 102 Filter filterUnderTest = 103 new GtestFilter(String.format("%s.otherTestMethod:%s.otherTestMethod[1]", 104 TestClass.class.getName(), OtherTestClass.class.getName())); 105 Assert.assertFalse(filterUnderTest.shouldRun( 106 Description.createTestDescription(TestClass.class, "testMethod"))); 107 Assert.assertTrue(filterUnderTest.shouldRun( 108 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 109 Assert.assertFalse(filterUnderTest.shouldRun( 110 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 111 Assert.assertTrue(filterUnderTest.shouldRun( 112 Description.createTestDescription(OtherTestClass.class, "otherTestMethod[1]"))); 113 } 114 115 @Test testMultipleFiltersPositiveAndNegative()116 public void testMultipleFiltersPositiveAndNegative() { 117 Filter filterUnderTest = new GtestFilter(String.format( 118 "%s.*-%s.testMethod", TestClass.class.getName(), TestClass.class.getName())); 119 Assert.assertFalse(filterUnderTest.shouldRun( 120 Description.createTestDescription(TestClass.class, "testMethod"))); 121 Assert.assertTrue(filterUnderTest.shouldRun( 122 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 123 Assert.assertFalse(filterUnderTest.shouldRun( 124 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 125 } 126 127 @Test testMultipleNegativeFilters()128 public void testMultipleNegativeFilters() { 129 Filter filterUnderTest = new GtestFilter(String.format( 130 "*-%s.otherTestMethod:%s.otherTestMethod", TestClass.class.getName(), 131 OtherTestClass.class.getName())); 132 Assert.assertTrue(filterUnderTest.shouldRun( 133 Description.createTestDescription(TestClass.class, "testMethod"))); 134 Assert.assertFalse(filterUnderTest.shouldRun( 135 Description.createTestDescription(TestClass.class, "otherTestMethod"))); 136 Assert.assertTrue(filterUnderTest.shouldRun( 137 Description.createTestDescription(OtherTestClass.class, "testMethod"))); 138 Assert.assertFalse(filterUnderTest.shouldRun( 139 Description.createTestDescription(OtherTestClass.class, "otherTestMethod"))); 140 } 141 } 142 143