Skip to content

Commit 9a84075

Browse files
author
Christian Jaimes
committed
added randomDirection method to Enum. Created RandomEnumGenerator. Added corresponding Unit Tests
1 parent 80924c2 commit 9a84075

3 files changed

Lines changed: 58 additions & 0 deletions

File tree

core-java-modules/core-java-lang-oop-types-2/src/main/java/com/baeldung/enums/Direction.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,25 @@
11
package com.baeldung.enums;
22

3+
import java.util.Random;
4+
35
/**
46
* Represents directions.
57
*/
68
public enum Direction {
79
EAST, WEST, SOUTH, NORTH;
810

11+
private static final Random PRNG = new Random();
12+
13+
/**
14+
* Generate a random direction.
15+
*
16+
* @return a random direction
17+
*/
18+
public static Direction randomDirection() {
19+
Direction[] directions = values();
20+
return directions[PRNG.nextInt(directions.length)];
21+
}
22+
923
/**
1024
* Finds direction by name.
1125
*
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.baeldung.enums;
2+
3+
import java.util.Random;
4+
5+
public class RandomEnumGenerator<T extends Enum<T>> {
6+
7+
private static final Random PRNG = new Random();
8+
private final T[] values;
9+
10+
public RandomEnumGenerator(Class<T> e) {
11+
values = e.getEnumConstants();
12+
}
13+
14+
public T randomEnum() {
15+
return values[PRNG.nextInt(values.length)];
16+
}
17+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.baeldung.enums;
2+
3+
import org.assertj.core.api.Assertions;
4+
import org.junit.Test;
5+
6+
import java.util.Optional;
7+
8+
import static org.assertj.core.api.Assertions.assertThat;
9+
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
10+
11+
public class RandomEnumUnitTest {
12+
13+
@Test
14+
public void givenEnumType_whenUsingStaticMethod_valueIsRandomlyGenerated() {
15+
Direction direction = Direction.randomDirection();
16+
assertThat(direction).isNotNull();
17+
assertThat(direction instanceof Direction);
18+
}
19+
20+
@Test
21+
public void givenEnumType_whenGeneratingRandomValue_valueIsOfClassAndNotNull() {
22+
RandomEnumGenerator reg = new RandomEnumGenerator(Direction.class);
23+
Object direction = reg.randomEnum();
24+
assertThat(direction).isNotNull();
25+
assertThat(direction instanceof Direction);
26+
}
27+
}

0 commit comments

Comments
 (0)