package com.ldbc.driver.util;
import static org.junit.Assert.assertEquals;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import org.junit.Test;
import com.ldbc.driver.generator.GeneratorException;
import com.ldbc.driver.util.NumberHelper;
public class NumberHelperTest
{
@Test
public void createNumberHelperTest()
{
// Given
// When
// Then
assertEquals( Double.class, NumberHelper.createNumberHelper( new Double( 1 ).getClass() ).zero().getClass() );
assertEquals( Integer.class, NumberHelper.createNumberHelper( new Integer( 1 ).getClass() ).zero().getClass() );
assertEquals( Long.class, NumberHelper.createNumberHelper( new Long( 1 ).getClass() ).zero().getClass() );
}
@Test
public void createNumberHelperUnsupportedTypeTest()
{
// Given
boolean exceptionAlwaysThrown = true;
// When
try
{
NumberHelper.createNumberHelper( new Byte( (byte) 1 ).getClass() );
exceptionAlwaysThrown = false;
}
catch ( GeneratorException e )
{
}
try
{
NumberHelper.createNumberHelper( new Float( 1 ).getClass() );
exceptionAlwaysThrown = false;
}
catch ( GeneratorException e )
{
}
try
{
NumberHelper.createNumberHelper( new Short( (short) 1 ).getClass() );
exceptionAlwaysThrown = false;
}
catch ( GeneratorException e )
{
}
try
{
NumberHelper.createNumberHelper( new BigInteger( "1" ).getClass() );
exceptionAlwaysThrown = false;
}
catch ( GeneratorException e )
{
}
try
{
NumberHelper.createNumberHelper( new AtomicInteger( 1 ).getClass() );
exceptionAlwaysThrown = false;
}
catch ( GeneratorException e )
{
}
try
{
NumberHelper.createNumberHelper( new AtomicLong( 1 ).getClass() );
exceptionAlwaysThrown = false;
}
catch ( GeneratorException e )
{
}
try
{
NumberHelper.createNumberHelper( new BigDecimal( 1 ).getClass() );
exceptionAlwaysThrown = false;
}
catch ( GeneratorException e )
{
}
// Then
assertEquals( true, exceptionAlwaysThrown );
}
@Test
public void functionsTest()
{
// Given
NumberHelper<Integer> number = NumberHelper.createNumberHelper( Integer.class );
// When
// Then
assertEquals( 0, (int) number.zero() );
assertEquals( 1, (int) number.one() );
assertEquals( 1, (int) number.inc( number.zero() ) );
assertEquals( 2, (int) number.sum( number.one(), number.one() ) );
assertEquals( 2, (int) number.sum( Arrays.asList( new Integer[] { 1, 1 } ) ) );
assertEquals( true, NumberHelper.withinTolerance( 2, 4, 2.0 ) );
assertEquals( false, NumberHelper.withinTolerance( 2, 4, 1.0 ) );
assertEquals( true, NumberHelper.withinTolerance( 2l, 4l, 2.0 ) );
assertEquals( false, NumberHelper.withinTolerance( 2l, 4l, 1.0 ) );
assertEquals( true, NumberHelper.withinTolerance( 2d, 4d, 2.0 ) );
assertEquals( false, NumberHelper.withinTolerance( 2d, 4d, 1.0 ) );
}
}