Improve Lazy.toString().
Added dedicated Lazy.toString() rendering the resolved value's ….toString() method but resorts to a constant [Unresolved] if it's not already resolved. An additional ….toString(Supplier<String>) allows to customize the fallback message if needed. Fixes #2751.
This commit is contained in:
@@ -116,4 +116,35 @@ class LazyUnitTests {
|
||||
assertThat(empty.or(reference).get()).isEqualTo(reference);
|
||||
assertThat(empty.or(() -> reference).get()).isEqualTo(reference);
|
||||
}
|
||||
|
||||
@Test // #2751
|
||||
void doesNotResolveValueForToString() {
|
||||
|
||||
Supplier<Object> mock = mock(Supplier.class);
|
||||
|
||||
var lazy = Lazy.of(mock);
|
||||
|
||||
assertThat(lazy.toString()).isEqualTo(Lazy.UNRESOLVED);
|
||||
verify(mock, never()).get();
|
||||
|
||||
lazy.getNullable();
|
||||
|
||||
assertThat(lazy.toString()).isNotEqualTo(Lazy.UNRESOLVED);
|
||||
}
|
||||
|
||||
@Test // #2751
|
||||
void usesFallbackForToStringOnUnresolvedInstance() {
|
||||
|
||||
Supplier<Object> mock = mock(Supplier.class);
|
||||
|
||||
var lazy = Lazy.of(mock);
|
||||
var fallback = "fallback";
|
||||
|
||||
assertThat(lazy.toString(() -> fallback)).isEqualTo(fallback);
|
||||
verify(mock, never()).get();
|
||||
|
||||
lazy.getNullable();
|
||||
|
||||
assertThat(lazy.toString(() -> fallback)).isNotEqualTo(fallback);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user