package org.apache.maven.surefire.testset; /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import org.junit.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; @SuppressWarnings( { "javadoc", "checkstyle:javadoctype" } ) /** * Inclusive test patters:<p> * * <table cellspacing=0 border=1> * <tr> * <td style=min-width:50px> test</td> * <td style=min-width:50px></td> * <td style=min-width:50px> pattern</td> * <td style=min-width:50px></td> * <td style=min-width:50px></td> * <td style=min-width:50px></td> * </tr> * <tr> * <td style=min-width:50px>class</td> * <td style=min-width:50px>method</td> * <td style=min-width:50px>class</td> * <td style=min-width:50px>method</td> * <td style=min-width:50px>shouldRunAsInclusive</td> * <td style=min-width:50px></td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y (wildcard pattern)</td> * <td style=min-width:50px>testIncludes1</td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y (suppose suite and custome filter)</td> * <td style=min-width:50px>testIncludes2</td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y (suppose Suite)</td> * <td style=min-width:50px>testIncludes3</td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y (suppose Suite)</td> * <td style=min-width:50px>testIncludes4</td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y (wildcard pattern)</td> * <td style=min-width:50px>testIncludes5</td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>match methods</td> * <td style=min-width:50px>testIncludes6</td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y (due to Cucumber)</td> * <td style=min-width:50px>testIncludes7</td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y (due to Cucumber)</td> * <td style=min-width:50px>testIncludes8</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y (wildcard pattern)</td> * <td style=min-width:50px>testIncludes9</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y (suppose suite and custome filter)</td> * <td style=min-width:50px>testIncludes10</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>match classes</td> * <td style=min-width:50px>testIncludes11</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>match classes</td> * <td style=min-width:50px>testIncludes12</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y (wildcard pattern)</td> * <td style=min-width:50px>testIncludes13</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>match methods</td> * <td style=min-width:50px>testIncludes14</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>match classes</td> * <td style=min-width:50px>testIncludes15</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>match all</td> * <td style=min-width:50px>testIncludes16</td> * </tr> * </table> * <p> * <p> * Exclusive test patters:<p> * * <table cellspacing=0 border=1> * <tr> * <td style=min-width:50px> test</td> * <td style=min-width:50px></td> * <td style=min-width:50px> pattern</td> * <td style=min-width:50px></td> * <td style=min-width:50px></td> * <td style=min-width:50px></td> * </tr> * <tr> * <td style=min-width:50px>class</td> * <td style=min-width:50px>method</td> * <td style=min-width:50px>class</td> * <td style=min-width:50px>method</td> * <td style=min-width:50px>shouldRunAsExclusive</td> * <td style=min-width:50px></td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n (wildcard pattern)</td> * <td style=min-width:50px>testExcludes1</td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n (suppose suite and custome filter)</td> * <td style=min-width:50px>testExcludes2</td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n (suppose Suite)</td> * <td style=min-width:50px>testExcludes3</td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n (suppose Suite)</td> * <td style=min-width:50px>testExcludes4</td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n (wildcard pattern)</td> * <td style=min-width:50px>testExcludes5</td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>match methods</td> * <td style=min-width:50px>testExcludes6</td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n (due to Cucumber)</td> * <td style=min-width:50px>testExcludes7</td> * </tr> * <tr> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n (due to Cucumber)</td> * <td style=min-width:50px>testExcludes8</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n (wildcard pattern)</td> * <td style=min-width:50px>testExcludes9</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n (suppose suite and custome filter)</td> * <td style=min-width:50px>testExcludes10</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>match classes</td> * <td style=min-width:50px>testExcludes11</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n (cannot exclude in dir.scanner)</td> * <td style=min-width:50px>testExcludes12</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>n (wildcard pattern)</td> * <td style=min-width:50px>testExcludes13</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>match methods</td> * <td style=min-width:50px>testExcludes14</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>n</td> * <td style=min-width:50px>match classes</td> * <td style=min-width:50px>testExcludes15</td> * </tr> * <tr> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>y</td> * <td style=min-width:50px>match all</td> * <td style=min-width:50px>testExcludes16</td> * </tr> * </table> */ public class FundamentalFilterTest { @Test public void testIncludes1() { ResolvedTest pattern = new ResolvedTest( (String) null, null, false ); assertThat( pattern.matchAsInclusive( null, null ), is( true ) ); } @Test public void testIncludes2() { ResolvedTest pattern = new ResolvedTest( (String) null, "method", false ); assertThat( pattern.matchAsInclusive( null, null ), is( true ) ); } @Test public void testIncludes3() { ResolvedTest pattern = new ResolvedTest( "Test", null, false ); assertThat( pattern.matchAsInclusive( null, null ), is( true ) ); } @Test public void testIncludes4() { ResolvedTest pattern = new ResolvedTest( "Test", "method", false ); assertThat( pattern.matchAsInclusive( null, null ), is( true ) ); } @Test public void testIncludes5() { ResolvedTest pattern = new ResolvedTest( (String) null, null, false ); assertThat( pattern.matchAsInclusive( null, "method" ), is( true ) ); } @Test public void testIncludes6() { ResolvedTest pattern = new ResolvedTest( (String) null, "method", false ); assertThat( pattern.matchAsInclusive( null, "method" ), is( true ) ); assertThat( pattern.matchAsInclusive( null, "otherMethod" ), is( false ) ); } /** * Does not throw NPE due to Cucumber has test class NULL and test method NOT NULL. */ @Test public void testIncludes7() { ResolvedTest pattern = new ResolvedTest( "Test", null, false ); assertThat( pattern.matchAsInclusive( null, "method" ), is( true ) ); } /** * Does not throw NPE due to Cucumber has test class NULL and test method NOT NULL. */ @Test public void testIncludes8() { ResolvedTest pattern = new ResolvedTest( "Test", "method", false ); assertThat( pattern.matchAsInclusive( null, "method" ), is( true ) ); assertThat( pattern.matchAsInclusive( null, "otherMethod" ), is( true ) ); } @Test public void testIncludes9() { ResolvedTest pattern = new ResolvedTest( (String) null, null, false ); assertThat( pattern.matchAsInclusive( "Test.class", null ), is( true ) ); } @Test public void testIncludes10() { ResolvedTest pattern = new ResolvedTest( (String) null, "method", false ); assertThat( pattern.matchAsInclusive( "Test.class", null ), is( true ) ); } @Test public void testIncludes11() { ResolvedTest pattern = new ResolvedTest( "Test", null, false ); assertThat( pattern.matchAsInclusive( "Test.class", null ), is( true ) ); assertThat( pattern.matchAsInclusive( "Other.class", null ), is( false ) ); } @Test public void testIncludes12() { ResolvedTest pattern = new ResolvedTest( "Test", "method", false ); assertThat( pattern.matchAsInclusive( "Test.class", null ), is( true ) ); assertThat( pattern.matchAsInclusive( "Other.class", null ), is( false ) ); } @Test public void testIncludes13() { ResolvedTest pattern = new ResolvedTest( (String) null, null, false ); assertThat( pattern.matchAsInclusive( "Test.class", "method" ), is( true ) ); } @Test public void testIncludes14() { ResolvedTest pattern = new ResolvedTest( (String) null, "method", false ); assertThat( pattern.matchAsInclusive( "Test.class", "method" ), is( true ) ); assertThat( pattern.matchAsInclusive( "Test.class", "otherMethod" ), is( false ) ); } @Test public void testIncludes15() { ResolvedTest pattern = new ResolvedTest( "Test", null, false ); assertThat( pattern.matchAsInclusive( "Test.class", "method" ), is( true ) ); assertThat( pattern.matchAsInclusive( "Other.class", "method" ), is( false ) ); } @Test public void testIncludes16() { ResolvedTest pattern = new ResolvedTest( "Test", "method", false ); assertThat( pattern.matchAsInclusive( "Test.class", "method" ), is( true ) ); assertThat( pattern.matchAsInclusive( "Test.class", "otherMethod" ), is( false ) ); assertThat( pattern.matchAsInclusive( "Other.class", "method" ), is( false ) ); assertThat( pattern.matchAsInclusive( "Other.class", "otherMethod" ), is( false ) ); } @Test public void testExcludes1() { ResolvedTest pattern = new ResolvedTest( (String) null, null, false ); assertThat( pattern.matchAsExclusive( null, null ), is( false ) ); } @Test public void testExcludes2() { ResolvedTest pattern = new ResolvedTest( (String) null, "method", false ); assertThat( pattern.matchAsExclusive( null, null ), is( false ) ); } @Test public void testExcludes3() { ResolvedTest pattern = new ResolvedTest( "Test", null, false ); assertThat( pattern.matchAsExclusive( null, null ), is( false ) ); } @Test public void testExcludes4() { ResolvedTest pattern = new ResolvedTest( "Test", "method", false ); assertThat( pattern.matchAsExclusive( null, null ), is( false ) ); } @Test public void testExcludes5() { ResolvedTest pattern = new ResolvedTest( (String) null, null, false ); assertThat( pattern.matchAsExclusive( null, "method" ), is( false ) ); } @Test public void testExcludes6() { ResolvedTest pattern = new ResolvedTest( (String) null, "method", false ); assertThat( pattern.matchAsExclusive( null, "method" ), is( true ) ); assertThat( pattern.matchAsExclusive( null, "otherMethod" ), is( false ) ); } /** * Does not throw NPE due to Cucumber has test class NULL and test method NOT NULL. */ @Test public void testExcludes7() { ResolvedTest pattern = new ResolvedTest( "Test", null, false ); assertThat( pattern.matchAsExclusive( null, "method" ), is( false ) ); } /** * Does not throw NPE due to Cucumber has test class NULL and test method NOT NULL. */ @Test public void testExcludes8() { ResolvedTest pattern = new ResolvedTest( "Test", "method", false ); assertThat( pattern.matchAsExclusive( null, "method" ), is( false ) ); assertThat( pattern.matchAsExclusive( null, "otherMethod" ), is( false ) ); } @Test public void testExcludes9() { ResolvedTest pattern = new ResolvedTest( (String) null, null, false ); assertThat( pattern.matchAsExclusive( "Test.class", null ), is( false ) ); } @Test public void testExcludes10() { ResolvedTest pattern = new ResolvedTest( (String) null, "method", false ); assertThat( pattern.matchAsExclusive( "Test.class", null ), is( false ) ); } @Test public void testExcludes11() { ResolvedTest pattern = new ResolvedTest( "Test", null, false ); assertThat( pattern.matchAsExclusive( "Test.class", null ), is( true ) ); assertThat( pattern.matchAsExclusive( "Other.class", null ), is( false ) ); } @Test public void testExcludes12() { ResolvedTest pattern = new ResolvedTest( "Test", "method", false ); assertThat( pattern.matchAsExclusive( "Test.class", null ), is( false ) ); assertThat( pattern.matchAsExclusive( "Other.class", null ), is( false ) ); } @Test public void testExcludes13() { ResolvedTest pattern = new ResolvedTest( (String) null, null, false ); assertThat( pattern.matchAsExclusive( "Test.class", "method" ), is( false ) ); } @Test public void testExcludes14() { ResolvedTest pattern = new ResolvedTest( (String) null, "method", false ); assertThat( pattern.matchAsExclusive( "Test.class", "method" ), is( true ) ); assertThat( pattern.matchAsExclusive( "Test.class", "otherMethod" ), is( false ) ); } @Test public void testExcludes15() { ResolvedTest pattern = new ResolvedTest( "Test", null, false ); assertThat( pattern.matchAsExclusive( "Test.class", "method" ), is( true ) ); assertThat( pattern.matchAsExclusive( "Other.class", "method" ), is( false ) ); } @Test public void testExcludes16() { ResolvedTest pattern = new ResolvedTest( "Test", "method", false ); assertThat( pattern.matchAsExclusive( "Test.class", "method" ), is( true ) ); assertThat( pattern.matchAsExclusive( "Test.class", "otherMethod" ), is( false ) ); assertThat( pattern.matchAsExclusive( "Other.class", "method" ), is( false ) ); assertThat( pattern.matchAsExclusive( "Other.class", "otherMethod" ), is( false ) ); } }