package br.com.six2six.fixturefactory.function; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.math.BigDecimal; import java.math.BigInteger; import java.math.MathContext; import java.math.RoundingMode; import java.util.Arrays; import org.junit.Test; import br.com.six2six.bfgex.Gender; import br.com.six2six.fixturefactory.base.Range; import br.com.six2six.fixturefactory.function.impl.NameFunction; import br.com.six2six.fixturefactory.function.impl.RandomFunction; public class RandomFunctionTest { @Test public void randomByteTest() { Object value = new RandomFunction(Byte.class).generateValue(); assertNotNull("Generated byte must not be null", value); assertTrue("Generated value is not a byte", value instanceof Byte); } @Test public void randomShortTest() { Object value = new RandomFunction(Short.class).generateValue(); assertNotNull("Generated short must not be null", value); assertTrue("Generated value is not a short", value instanceof Short); } @Test public void randomIntegerTest() { Object value = new RandomFunction(Integer.class).generateValue(); assertNotNull("Generated integer can not be null", value); assertTrue("Generated value is not a Integer", value instanceof Integer); } @Test public void randomLongTest() { Object value = new RandomFunction(Long.class).generateValue(); assertNotNull("Generated long can not be null", value); assertTrue("Generated value is not a Long", value instanceof Long); } @Test public void randomFloatTest() { Object value = new RandomFunction(Float.class).generateValue(); assertNotNull("Generated float can not be null", value); assertTrue("Generated value is not a Float", value instanceof Float); } @Test public void randomDoubleTest() { Object value = new RandomFunction(Double.class).generateValue(); assertNotNull("Generated double can not be null", value); assertTrue("Generated value is not a Double", value instanceof Double); } @Test public void randomBigDecimalTest() { Object value = new RandomFunction(BigDecimal.class).generateValue(); assertNotNull("Generated BigDecimal must not be null", value); assertTrue("Generated value is not a BigDecimal", value instanceof BigDecimal); } @Test public void randomBigDecimalWithMathContextTest() { Object value = new RandomFunction(BigDecimal.class, new MathContext(3, RoundingMode.HALF_EVEN)).generateValue(); assertNotNull("Generated BigDecimal must not be null", value); assertTrue("Generated value is not a BigDecimal", value instanceof BigDecimal); assertTrue("Generated value should have a precision of 3", ((BigDecimal) value).precision() == 3); } @Test public void randomBigDecimalUsingRange() { RandomFunction random = new RandomFunction(BigDecimal.class, new Range(1, 1000)); BigDecimal bigDecimal = random.generateValue(); assertNotNull("Generated BigDecimal must not be null", bigDecimal); assertTrue("Generated value must be a BigDecimal", bigDecimal instanceof BigDecimal); assertTrue(bigDecimal.compareTo(new BigDecimal("1")) >= 0); assertTrue(bigDecimal.compareTo(new BigDecimal("1000")) <= 0); } @Test public void randomBigIntegerTest() { Object value = new RandomFunction(BigInteger.class).generateValue(); assertNotNull("Generated BigInteger must not be null", value); assertTrue("Generated value is not a BigInteger", value instanceof BigInteger); } @Test public void randomBigIntegerTestUsingRange() { RandomFunction random = new RandomFunction(BigInteger.class, new Range(1, 1000)); BigInteger bigInteger = random.generateValue(); assertNotNull("Generated BigInteger must not be null", bigInteger); assertTrue("Generated value is not a BigInteger", bigInteger instanceof BigInteger); assertTrue(bigInteger.compareTo(new BigInteger("1")) >= 0); assertTrue(bigInteger.compareTo(new BigInteger("1000")) <= 0); } @Test public void randomBooleanTest() { Object value = new RandomFunction(Boolean.class).generateValue(); assertNotNull("Generated boolean can not be null", value); assertTrue("Generated value is not a Boolean", value instanceof Boolean); } @Test public void randomDatasetTest() { String[] names = {"Anderson", "Arthur", "Douglas"}; Object value = new RandomFunction(names).generateValue(); assertNotNull("Generated name can not be null", value); assertTrue("Generated name does not exist in the dataset names", Arrays.asList(names).contains(value)); } @Test public void randomByteRangeTest() { Byte start = 1, end = 100; Byte value = new RandomFunction(Byte.class, new Range(start, end)).generateValue(); assertNotNull("Generated byte must not be null", value); assertTrue("Generated byte does not exist in the range", (start <= value && value <= end)); } @Test public void randomShortRangeTest() { Short start = 1, end = 100; Short value = new RandomFunction(Short.class, new Range(start, end)).generateValue(); assertNotNull("Generated short must not be null", value); assertTrue("Generated short does not exist in the range", (start <= value && value <= end)); } @Test public void randomLongRangeTest() { Long start = 85L, end = 86L; Object value = new RandomFunction(Long.class, new Range(start, end)).generateValue(); assertNotNull("Generated long can not be null", value); assertTrue("Generated long does not exist in the range", (start <= (Long) value && (Long) value <= end)); } @Test public void randomDoubleRangeTest() { Double start = 85.1, end = 85.2; Object value = new RandomFunction(Double.class, new Range(start, end)).generateValue(); assertNotNull("Generated double can not be null", value); assertTrue("Generated double does not exist in the range", (start <= (Double) value && (Double) value <= end)); } @Test public void randomBigDecimalRangeChoosesStartScaleTest() { BigDecimal start = new BigDecimal("2.313"), end = new BigDecimal("3.73"); BigDecimal value = new RandomFunction(BigDecimal.class, new Range(start, end)).generateValue(); assertNotNull("Generated BigDecimal can not be null", value); assertTrue("Generated BigDecimal does not exist in the range", (start.compareTo(value) <= 0 && value.compareTo(end) <= 0)); assertTrue("Generated BigDecimal should most precise scale", value.scale() == start.scale()); } @Test public void randomBigDecimalRangeChoosesEndScaleTest() { BigDecimal start = new BigDecimal("2.31"), end = new BigDecimal("3.731"); BigDecimal value = new RandomFunction(BigDecimal.class, new Range(start, end)).generateValue(); assertNotNull("Generated BigDecimal can not be null", value); assertTrue("Generated BigDecimal does not exist in the range", (start.compareTo(value) <= 0 && value.compareTo(end) <= 0)); assertTrue("Generated BigDecimal should most precise scale", value.scale() == end.scale()); } @Test public void randomBigIntegerRangeTest() { BigInteger start = new BigInteger("2147483648"), end = new BigInteger("2147483650"); BigInteger value = new RandomFunction(BigInteger.class, new Range(start, end)).generateValue(); assertNotNull("Generated BigInteger can not be null", value); assertTrue("Generated BigInteger does not exist in the range", (start.compareTo(value) <= 0 && value.compareTo(end) <= 0)); } @Test(expected = IllegalArgumentException.class) public void randomLongRangeIncorrectTest() { Long start = 80L, end = 80L; new RandomFunction(Long.class, new Range(start, end)).generateValue(); } @Test(expected = IllegalArgumentException.class) public void randomDoubleRangeIncorrectTest() { Double start = 80.0, end = 80.0; new RandomFunction(Long.class, new Range(start, end)).generateValue(); } @Test public void randomFunction() { Function[] functions = {new NameFunction(), new NameFunction(Gender.MALE), new NameFunction(Gender.FEMALE)}; Object value = new RandomFunction(functions).generateValue(); assertNotNull("Generated value can not be null", value); } @Test public void randomEnum() { Object value = new RandomFunction(Gender.class).generateValue(); assertNotNull("Generated enum can not be null", value); assertTrue("Generated value is not a Enum", value instanceof Enum); } }