blob: af573101222440b6f75a72289ec743a8bd0a944f [file] [log] [blame]
package org.apache.maven.surefire.api.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.is;
@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 ) );
}
}