diff --git a/random-beans/src/main/java/io/github/benas/randombeans/randomizers/number/NumberRandomizer.java b/random-beans/src/main/java/io/github/benas/randombeans/randomizers/number/NumberRandomizer.java new file mode 100644 index 000000000..d3ba36157 --- /dev/null +++ b/random-beans/src/main/java/io/github/benas/randombeans/randomizers/number/NumberRandomizer.java @@ -0,0 +1,73 @@ +/** + * The MIT License + * + * Copyright (c) 2017, Mahmoud Ben Hassine (mahmoud.benhassine@icloud.com) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package io.github.benas.randombeans.randomizers.number; + +import io.github.benas.randombeans.randomizers.AbstractRandomizer; + +/** + * Generate a random {@link Number}. + * + * @author Andrew Neal (https://github.com/aeneal) + */ +public class NumberRandomizer extends AbstractRandomizer { + + /** + * Create a new {@link NumberRandomizer}. + */ + public NumberRandomizer() { + } + + /** + * Create a new {@link NumberRandomizer}. + * + * @param seed initial seed + */ + public NumberRandomizer(final long seed) { + super(seed); + } + + /** + * Create a new {@link NumberRandomizer}. + * + * @return a new {@link NumberRandomizer}. + */ + public static NumberRandomizer aNewNumberRandomizer() { + return new NumberRandomizer(); + } + + /** + * Create a new {@link NumberRandomizer}. + * + * @param seed initial seed + * @return a new {@link NumberRandomizer}. + */ + public static NumberRandomizer aNewNumberRandomizer(final long seed) { + return new NumberRandomizer(seed); + } + + @Override + public Integer getRandomValue() { + return random.nextInt(); + } +} diff --git a/random-beans/src/test/java/io/github/benas/randombeans/randomizers/number/NumberRandomizersTest.java b/random-beans/src/test/java/io/github/benas/randombeans/randomizers/number/NumberRandomizersTest.java index 31198ba95..24b97bf1e 100644 --- a/random-beans/src/test/java/io/github/benas/randombeans/randomizers/number/NumberRandomizersTest.java +++ b/random-beans/src/test/java/io/github/benas/randombeans/randomizers/number/NumberRandomizersTest.java @@ -30,6 +30,7 @@ import static io.github.benas.randombeans.randomizers.number.FloatRandomizer.aNewFloatRandomizer; import static io.github.benas.randombeans.randomizers.number.IntegerRandomizer.aNewIntegerRandomizer; import static io.github.benas.randombeans.randomizers.number.LongRandomizer.aNewLongRandomizer; +import static io.github.benas.randombeans.randomizers.number.NumberRandomizer.aNewNumberRandomizer; import static io.github.benas.randombeans.randomizers.number.ShortRandomizer.aNewShortRandomizer; import static org.assertj.core.api.BDDAssertions.then; @@ -55,6 +56,7 @@ public static Object[] generateRandomizers() { aNewByteRandomizer(), aNewShortRandomizer(), aNewIntegerRandomizer(), + aNewNumberRandomizer(), aNewLongRandomizer(), aNewFloatRandomizer(), aNewDoubleRandomizer(), @@ -78,6 +80,7 @@ public static Object[][] generateSeededRandomizersAndTheirExpectedValues() { { aNewByteRandomizer(SEED), (byte) -35 }, { aNewShortRandomizer(SEED), (short) -3619 }, { aNewIntegerRandomizer(SEED), -1188957731 }, + { aNewNumberRandomizer(SEED), -1188957731 }, { aNewLongRandomizer(SEED), -5106534569952410475L }, { aNewFloatRandomizer(SEED), 0.72317415F }, { aNewDoubleRandomizer(SEED), 0.7231742029971469 },