added randomDirection method to Enum. Created RandomEnumGenerator. Added corresponding Unit Tests
This commit is contained in:
parent
b67525c5c1
commit
7093bdc456
|
@ -1,11 +1,25 @@
|
||||||
package com.baeldung.enums;
|
package com.baeldung.enums;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents directions.
|
* Represents directions.
|
||||||
*/
|
*/
|
||||||
public enum Direction {
|
public enum Direction {
|
||||||
EAST, WEST, SOUTH, NORTH;
|
EAST, WEST, SOUTH, NORTH;
|
||||||
|
|
||||||
|
private static final Random PRNG = new Random();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate a random direction.
|
||||||
|
*
|
||||||
|
* @return a random direction
|
||||||
|
*/
|
||||||
|
public static Direction randomDirection() {
|
||||||
|
Direction[] directions = values();
|
||||||
|
return directions[PRNG.nextInt(directions.length)];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds direction by name.
|
* Finds direction by name.
|
||||||
*
|
*
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.baeldung.enums;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class RandomEnumGenerator<T extends Enum<T>> {
|
||||||
|
|
||||||
|
private static final Random PRNG = new Random();
|
||||||
|
private final T[] values;
|
||||||
|
|
||||||
|
public RandomEnumGenerator(Class<T> e) {
|
||||||
|
values = e.getEnumConstants();
|
||||||
|
}
|
||||||
|
|
||||||
|
public T randomEnum() {
|
||||||
|
return values[PRNG.nextInt(values.length)];
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package com.baeldung.enums;
|
||||||
|
|
||||||
|
import org.assertj.core.api.Assertions;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
|
||||||
|
|
||||||
|
public class RandomEnumUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenEnumType_whenUsingStaticMethod_valueIsRandomlyGenerated() {
|
||||||
|
Direction direction = Direction.randomDirection();
|
||||||
|
assertThat(direction).isNotNull();
|
||||||
|
assertThat(direction instanceof Direction);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenEnumType_whenGeneratingRandomValue_valueIsOfClassAndNotNull() {
|
||||||
|
RandomEnumGenerator reg = new RandomEnumGenerator(Direction.class);
|
||||||
|
Object direction = reg.randomEnum();
|
||||||
|
assertThat(direction).isNotNull();
|
||||||
|
assertThat(direction instanceof Direction);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue