Skip to content

Commit 763e26b

Browse files
committed
Adds tests for resettable prefab values
1 parent 009045d commit 763e26b

File tree

4 files changed

+66
-1
lines changed

4 files changed

+66
-1
lines changed

equalsverifier-core/src/main/java/nl/jqno/equalsverifier/internal/instantiation/UserPrefabValueProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public <T> void register(Class<T> type, T red, T blue, T redCopy) {
9494
cache.put(type, tuple);
9595
}
9696

97+
/** {@inheritDoc} */
9798
@Override
9899
public boolean canBeCached(Class<?> type) {
99100
return !supplierCache.containsKey(type);

equalsverifier-core/src/test/java/nl/jqno/equalsverifier/internal/instantiation/CachingValueProviderTest.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,19 @@ void useFallbackValueAndCheckCache() {
3030
assertThat(sut.provide(FALLBACK_TAG, SOME_FIELD)).contains(new Tuple<>(42, 1337, 42));
3131
}
3232

33+
@Test
34+
void addsToCache() {
35+
sut.provide(FALLBACK_TAG, SOME_FIELD);
36+
assertThat(cache.get(SOME_FIELD, FALLBACK_TAG)).isEqualTo(new Tuple<>(42, 1337, 42));
37+
}
38+
39+
@Test
40+
void dontCacheValueIfCacheDeciderSaysNotTo() {
41+
sut = new CachingValueProvider(t -> false, cache, fallback);
42+
sut.provide(FALLBACK_TAG, SOME_FIELD);
43+
assertThat(cache.get(SOME_FIELD, FALLBACK_TAG)).isNull();
44+
}
45+
3346
@Test
3447
void useCachedValue() {
3548
cache.put(SOME_FIELD, SOME_TAG, new Tuple<>(1, 2, 1));
@@ -65,7 +78,7 @@ private static final class Fallback implements ValueProvider {
6578
@Override
6679
@SuppressWarnings("unchecked")
6780
public <T> Optional<Tuple<T>> provide(TypeTag tag, String fieldName) {
68-
if (int.class.equals(tag.getType())) {
81+
if (FALLBACK_TAG.getType().equals(tag.getType())) {
6982
return Optional.of((Tuple<T>) new Tuple<>(42, 1337, 42));
7083
}
7184
return Optional.empty();

equalsverifier-core/src/test/java/nl/jqno/equalsverifier/internal/instantiation/UserPrefabValueProviderTest.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,29 @@ public void aRegisteredValueCanBeFound() {
2020
assertThat(sut.provide(INT, SOME_FIELDNAME)).contains(new Tuple<>(3, 2, 3));
2121
}
2222

23+
@Test
24+
public void aRegisteredResettableValueCanBeFound() {
25+
sut.registerResettable(INT.getType(), () -> 3, () -> 2, () -> 3);
26+
assertThat(sut.provide(INT, SOME_FIELDNAME)).contains(new Tuple<>(3, 2, 3));
27+
}
28+
29+
@Test
30+
void aNormalValueCanBeCached() {
31+
sut.register(INT.getType(), 3, 2, 3);
32+
assertThat(sut.canBeCached(INT.getType())).isTrue();
33+
}
34+
35+
@Test
36+
void aResettableValueCannotBeCached() {
37+
sut.registerResettable(INT.getType(), () -> 3, () -> 2, () -> 3);
38+
assertThat(sut.canBeCached(INT.getType())).isFalse();
39+
}
40+
41+
@Test
42+
void anUnregisteredValueCanBeCached() {
43+
assertThat(sut.canBeCached(INT.getType())).isTrue();
44+
}
45+
2346
@Test
2447
public void fieldNameIsIgnoredWhenFindingAValue() {
2548
sut.register(INT.getType(), 3, 2, 3);
@@ -45,6 +68,14 @@ public void copy() {
4568
assertThat(anotherSut.provide(INT, SOME_FIELDNAME)).contains(new Tuple<>(1, 2, 1));
4669
}
4770

71+
@Test
72+
public void copyResettable() {
73+
sut.registerResettable(INT.getType(), () -> 1, () -> 2, () -> 1);
74+
UserPrefabValueProvider anotherSut = sut.copy();
75+
76+
assertThat(anotherSut.provide(INT, SOME_FIELDNAME)).contains(new Tuple<>(1, 2, 1));
77+
}
78+
4879
@Test
4980
public void copyDoesNotReflectLaterChangesToOriginal() {
5081
sut.register(INT.getType(), 1, 2, 1);

equalsverifier-test/src/test/java/nl/jqno/equalsverifier/integration/operational/ConfiguredEqualsVerifierMultipleTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,26 @@ void individuallyAddedPrefabValuesAreNotAddedGlobally() {
156156
.assertMessageContains("Recursive datastructure");
157157
}
158158

159+
@Test
160+
void individuallyAddedResettablePrefabValuesAreNotAddedGlobally() {
161+
ConfiguredEqualsVerifier ev = EqualsVerifier.configure();
162+
163+
// should succeed
164+
ev
165+
.forClasses(RecursiveTypeContainer.class, A.class)
166+
.withResettablePrefabValue(
167+
RecursiveType.class,
168+
() -> new RecursiveType(null),
169+
() -> new RecursiveType(new RecursiveType(null)))
170+
.verify();
171+
172+
// PrefabValues are not added to configuration, so should fail
173+
ExpectedException
174+
.when(() -> ev.forClasses(RecursiveTypeContainer.class, A.class).verify())
175+
.assertFailure()
176+
.assertMessageContains("Recursive datastructure");
177+
}
178+
159179
@Test
160180
void individuallyAddedGenericPrefabValuesAreNotAddedGlobally() {
161181
ConfiguredEqualsVerifier ev = EqualsVerifier.configure();

0 commit comments

Comments
 (0)