Test: Change randomValueOtherThan(null, supplier) (#27901)
When the first parameter of `ESTestCase#randomValueOtherThan` is `null` then run the supplier until it returns non-`null`. Previously, `randomValueOtherThan` just ran the supplier one time which was confusing. Unexpectedly, it looks like not tests rely on the original `null` handling. Closes #27821
This commit is contained in:
parent
b1039164a1
commit
32669ca265
|
@ -684,11 +684,7 @@ public abstract class ESTestCase extends LuceneTestCase {
|
||||||
* helper to get a random value in a certain range that's different from the input
|
* helper to get a random value in a certain range that's different from the input
|
||||||
*/
|
*/
|
||||||
public static <T> T randomValueOtherThan(T input, Supplier<T> randomSupplier) {
|
public static <T> T randomValueOtherThan(T input, Supplier<T> randomSupplier) {
|
||||||
if (input != null) {
|
return randomValueOtherThanMany(v -> Objects.equals(input, v), randomSupplier);
|
||||||
return randomValueOtherThanMany(input::equals, randomSupplier);
|
|
||||||
}
|
|
||||||
|
|
||||||
return(randomSupplier.get());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -38,6 +38,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.greaterThan;
|
import static org.hamcrest.Matchers.greaterThan;
|
||||||
import static org.hamcrest.Matchers.hasSize;
|
import static org.hamcrest.Matchers.hasSize;
|
||||||
|
@ -166,4 +167,18 @@ public class ESTestCaseTests extends ESTestCase {
|
||||||
public void testRandomUniqueNormalUsageAlwayMoreThanOne() {
|
public void testRandomUniqueNormalUsageAlwayMoreThanOne() {
|
||||||
assertThat(randomUnique(() -> randomAlphaOfLengthBetween(1, 20), 10), hasSize(greaterThan(0)));
|
assertThat(randomUnique(() -> randomAlphaOfLengthBetween(1, 20), 10), hasSize(greaterThan(0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testRandomValueOtherThan() {
|
||||||
|
// "normal" way of calling where the value is not null
|
||||||
|
int bad = randomInt();
|
||||||
|
assertNotEquals(bad, (int) randomValueOtherThan(bad, ESTestCase::randomInt));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "funny" way of calling where the value is null. This once
|
||||||
|
* had a unique behavior but at this point `null` acts just
|
||||||
|
* like any other value.
|
||||||
|
*/
|
||||||
|
Supplier<Object> usuallyNull = () -> usually() ? null : randomInt();
|
||||||
|
assertNotNull(randomValueOtherThan(null, usuallyNull));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue