On Wed, 15 May 2024 09:51:23 GMT, Raffaello Giulietti <[email protected]>
wrote:
>> All random number generator algorithms are implemented in module
>> `java.base`. The usage of `ServiceLoader` in `j.u.r.RandomGeneratorFactory`
>> is no longer needed.
>
> Raffaello Giulietti has updated the pull request incrementally with one
> additional commit since the last revision:
>
> Small documentation changes.
test/jdk/java/util/Random/RandomTestCoverage.java line 179:
> 177: try {
> 178: rng = factory.create(12345L);
> 179: } catch (UnsupportedOperationException ignore) {
I think now that we know for sure which algorithm instances don't support which
type of seed value and since throwing `UnsupportedOperationException` is now a
specification of the `create(...)` methods, we should probably do something
like this:
diff --git a/test/jdk/java/util/Random/RandomTestCoverage.java
b/test/jdk/java/util/Random/RandomTestCoverage.java
index be12d188198..6e5c36e13c3 100644
--- a/test/jdk/java/util/Random/RandomTestCoverage.java
+++ b/test/jdk/java/util/Random/RandomTestCoverage.java
@@ -171,8 +171,37 @@ static void coverFactory(RandomGeneratorFactory factory) {
boolean isSplittable = factory.isSplittable();
coverRandomGenerator(factory.create());
- coverRandomGenerator(factory.create(12345L));
- coverRandomGenerator(factory.create(new byte[] {1, 2, 3, 4, 5, 6, 7,
8}));
+
+ String algo = factory.name();
+ // test create(long)
+ switch (algo) {
+ // SecureRandom doesn't have long constructors so we expect
+ // UnsupportedOperationException
+ case "SecureRandom" -> {
+ try {
+ factory.create(12345L);
+ throw new
AssertionError("RandomGeneratorFactory.create(long) was expected" +
+ "to throw UnsupportedOperationException for " +
algo + " but didn't");
+ } catch (UnsupportedOperationException uoe) {
+ // expected
+ }
+ }
+ default -> coverRandomGenerator(factory.create(12345L));
+ }
+ // test create(byte[])
+ switch (algo) {
+ // these don't have byte[] constructors so we expect
UnsupportedOperationException
+ case "Random", "SplittableRandom" -> {
+ try {
+ factory.create(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
+ throw new
AssertionError("RandomGeneratorFactory.create(byte[]) was expected" +
+ "to throw UnsupportedOperationException for " +
algo + " but didn't");
+ } catch (UnsupportedOperationException uoe) {
+ // expected
+ }
+ }
+ default -> coverRandomGenerator(factory.create(new byte[] {1, 2,
3, 4, 5, 6, 7, 8}));
+ }
}
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/19212#discussion_r1603123836