package org.apache.maven.surefire.junitcore;
/*
* 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 java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.hamcrest.core.Is.is;
/*
* @author Kristian Rosenvold, kristian.rosenvold@gmail com
*/
public class JUnitCoreParametersTest
{
@Test
public void defaultParameters()
{
assertFalse( newTestSetDefault().isParallelismSelected() );
assertTrue( newTestSetDefault().isPerCoreThreadCount() );
assertThat( newTestSetDefault().getThreadCount(), is( 0 ) );
assertThat( newTestSetDefault().getThreadCountMethods(), is( 0 ) );
assertThat( newTestSetDefault().getThreadCountClasses(), is( 0 ) );
assertThat( newTestSetDefault().getThreadCountSuites(), is( 0 ) );
assertFalse( newTestSetDefault().isUseUnlimitedThreads() );
assertThat( newTestSetDefault().getParallelTestsTimeoutInSeconds(), is( 0d ) );
assertThat( newTestSetDefault().getParallelTestsTimeoutForcedInSeconds(), is( 0d ) );
assertTrue( newTestSetDefault().isParallelOptimization() );
}
@Test
public void optimizationParameter()
{
assertFalse( newTestSetOptimization( false ).isParallelOptimization() );
}
@Test
public void timeoutParameters()
{
JUnitCoreParameters parameters = newTestSetTimeouts( 5.5d, 11.1d );
assertThat( parameters.getParallelTestsTimeoutInSeconds(), is( 5.5d ) );
assertThat( parameters.getParallelTestsTimeoutForcedInSeconds(), is( 11.1d ) );
}
@Test
public void isParallelMethod()
{
assertFalse( newTestSetClasses().isParallelMethods() );
assertTrue( newTestSetMethods().isParallelMethods() );
assertTrue( newTestSetBoth().isParallelMethods() );
}
@Test
public void isParallelClasses()
{
assertTrue( newTestSetClasses().isParallelClasses() );
assertFalse( newTestSetMethods().isParallelClasses() );
assertTrue( newTestSetBoth().isParallelClasses() );
}
@Test
public void isParallelBoth()
{
assertFalse( isParallelMethodsAndClasses( newTestSetClasses() ) );
assertFalse( isParallelMethodsAndClasses( newTestSetMethods() ) );
assertTrue( isParallelMethodsAndClasses( newTestSetBoth() ) );
}
@Test
public void isPerCoreThreadCount()
{
assertFalse( newTestSetClasses().isPerCoreThreadCount() );
assertFalse( newTestSetMethods().isPerCoreThreadCount() );
assertTrue( newTestSetBoth().isPerCoreThreadCount() );
}
@Test
public void getThreadCount()
{
assertFalse( newTestSetClasses().isPerCoreThreadCount() );
assertFalse( newTestSetMethods().isPerCoreThreadCount() );
assertTrue( newTestSetBoth().isPerCoreThreadCount() );
}
@Test
public void isUseUnlimitedThreads()
{
assertFalse( newTestSetClasses().isUseUnlimitedThreads() );
assertTrue( newTestSetMethods().isUseUnlimitedThreads() );
assertFalse( newTestSetBoth().isUseUnlimitedThreads() );
}
@Test
public void isNoThreading()
{
assertFalse( newTestSetClasses().isNoThreading() );
assertFalse( newTestSetMethods().isNoThreading() );
assertFalse( newTestSetBoth().isNoThreading() );
}
@Test
public void isAnyParallelismSelected()
{
assertTrue( newTestSetClasses().isParallelismSelected() );
assertTrue( newTestSetMethods().isParallelismSelected() );
assertTrue( newTestSetBoth().isParallelismSelected() );
}
private Map<String, String> newDefaultProperties()
{
return new HashMap<String, String>();
}
private Map<String, String> newPropertiesClasses()
{
Map<String, String> props = new HashMap<String, String>();
props.put(JUnitCoreParameters.PARALLEL_KEY, "classes");
props.put(JUnitCoreParameters.PERCORETHREADCOUNT_KEY, "false");
props.put(JUnitCoreParameters.THREADCOUNT_KEY, "2");
props.put(JUnitCoreParameters.USEUNLIMITEDTHREADS_KEY, "false");
return props;
}
private Map<String, String> newPropertiesMethods()
{
Map<String, String> props = new HashMap<String, String>();
props.put(JUnitCoreParameters.PARALLEL_KEY, "methods");
props.put(JUnitCoreParameters.PERCORETHREADCOUNT_KEY, "false");
props.put(JUnitCoreParameters.THREADCOUNT_KEY, "2");
props.put(JUnitCoreParameters.USEUNLIMITEDTHREADS_KEY, "true");
return props;
}
private Map<String, String> newPropertiesBoth()
{
Map<String, String> props = new HashMap<String, String>();
props.put(JUnitCoreParameters.PARALLEL_KEY, "both");
props.put(JUnitCoreParameters.PERCORETHREADCOUNT_KEY, "true");
props.put(JUnitCoreParameters.THREADCOUNT_KEY, "7");
props.put(JUnitCoreParameters.USEUNLIMITEDTHREADS_KEY, "false");
return props;
}
private Map<String, String> newPropertiesTimeouts( double timeout, double forcedTimeout )
{
Map<String, String> props = new HashMap<String, String>();
props.put(JUnitCoreParameters.PARALLEL_TIMEOUT_KEY, Double.toString(timeout));
props.put(JUnitCoreParameters.PARALLEL_TIMEOUTFORCED_KEY, Double.toString(forcedTimeout));
return props;
}
private Map<String, String> newPropertiesOptimization( boolean optimize )
{
Map<String, String> props = new HashMap<String, String>();
props.put( JUnitCoreParameters.PARALLEL_OPTIMIZE_KEY, Boolean.toString( optimize ) );
return props;
}
private JUnitCoreParameters newTestSetDefault()
{
return new JUnitCoreParameters( newDefaultProperties() );
}
private JUnitCoreParameters newTestSetBoth()
{
return new JUnitCoreParameters( newPropertiesBoth() );
}
private JUnitCoreParameters newTestSetClasses()
{
return new JUnitCoreParameters( newPropertiesClasses() );
}
private JUnitCoreParameters newTestSetMethods()
{
return new JUnitCoreParameters( newPropertiesMethods() );
}
private JUnitCoreParameters newTestSetOptimization( boolean optimize )
{
return new JUnitCoreParameters( newPropertiesOptimization( optimize ) );
}
private JUnitCoreParameters newTestSetTimeouts( double timeout, double forcedTimeout )
{
return new JUnitCoreParameters( newPropertiesTimeouts( timeout, forcedTimeout ) );
}
private boolean isParallelMethodsAndClasses( JUnitCoreParameters jUnitCoreParameters )
{
return jUnitCoreParameters.isParallelMethods() && jUnitCoreParameters.isParallelClasses();
}
}