diff --git a/equalsverifier-core/src/main/java/nl/jqno/equalsverifier/internal/prefabvalues/JavaApiPrefabValues.java b/equalsverifier-core/src/main/java/nl/jqno/equalsverifier/internal/prefabvalues/JavaApiPrefabValues.java index 4214d9333..64db89b28 100644 --- a/equalsverifier-core/src/main/java/nl/jqno/equalsverifier/internal/prefabvalues/JavaApiPrefabValues.java +++ b/equalsverifier-core/src/main/java/nl/jqno/equalsverifier/internal/prefabvalues/JavaApiPrefabValues.java @@ -611,6 +611,29 @@ private void addAtomicClasses() { ); } ); + + DoubleAdder redDoubleAdder = new DoubleAdder(); + DoubleAdder blueDoubleAdder = new DoubleAdder(); + addValues(DoubleAdder.class, redDoubleAdder, blueDoubleAdder, redDoubleAdder); + DoubleAccumulator redDoubleAccumulator = new DoubleAccumulator((a, b) -> a + b, 0.0); + DoubleAccumulator blueDoubleAccumulator = new DoubleAccumulator((a, b) -> a * b, 1.0); + addValues( + DoubleAccumulator.class, + redDoubleAccumulator, + blueDoubleAccumulator, + redDoubleAccumulator + ); + LongAdder redLongAdder = new LongAdder(); + LongAdder blueLongAdder = new LongAdder(); + addValues(LongAdder.class, redLongAdder, blueLongAdder, redLongAdder); + LongAccumulator redLongAccumulator = new LongAccumulator((a, b) -> a + b, 0); + LongAccumulator blueLongAccumulator = new LongAccumulator((a, b) -> a * b, 1); + addValues( + LongAccumulator.class, + redLongAccumulator, + blueLongAccumulator, + redLongAccumulator + ); } private void addAncientJavaApiClasses() { diff --git a/equalsverifier-core/src/test/java/nl/jqno/equalsverifier/integration/extended_contract/JavaApiClassesTest.java b/equalsverifier-core/src/test/java/nl/jqno/equalsverifier/integration/extended_contract/JavaApiClassesTest.java index c20f45487..da892419a 100644 --- a/equalsverifier-core/src/test/java/nl/jqno/equalsverifier/integration/extended_contract/JavaApiClassesTest.java +++ b/equalsverifier-core/src/test/java/nl/jqno/equalsverifier/integration/extended_contract/JavaApiClassesTest.java @@ -106,6 +106,10 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReferenceArray; import java.util.concurrent.atomic.AtomicStampedReference; +import java.util.concurrent.atomic.DoubleAccumulator; +import java.util.concurrent.atomic.DoubleAdder; +import java.util.concurrent.atomic.LongAccumulator; +import java.util.concurrent.atomic.LongAdder; import java.util.concurrent.locks.StampedLock; import java.util.function.Supplier; import java.util.regex.Pattern; @@ -742,6 +746,10 @@ static final class AtomicClassesContainer { private final AtomicReference atomicReference; private final AtomicReferenceArray atomicReferenceArray; private final AtomicStampedReference atomicStampedReference; + private final DoubleAdder doubleAdder; + private final DoubleAccumulator doubleAccumulator; + private final LongAdder longAdder; + private final LongAccumulator longAccumulator; public AtomicClassesContainer( AtomicBoolean atomicBoolean, @@ -752,7 +760,11 @@ public AtomicClassesContainer( AtomicMarkableReference atomicMarkableReference, AtomicReference atomicReference, AtomicReferenceArray atomicReferenceArray, - AtomicStampedReference atomicStampedReference + AtomicStampedReference atomicStampedReference, + DoubleAdder doubleAdder, + DoubleAccumulator doubleAccumulator, + LongAdder longAdder, + LongAccumulator longAccumulator ) { this.atomicBoolean = atomicBoolean; this.atomicInteger = atomicInteger; @@ -763,6 +775,10 @@ public AtomicClassesContainer( this.atomicReference = atomicReference; this.atomicReferenceArray = atomicReferenceArray; this.atomicStampedReference = atomicStampedReference; + this.doubleAdder = doubleAdder; + this.doubleAccumulator = doubleAccumulator; + this.longAdder = longAdder; + this.longAccumulator = longAccumulator; } @Override