Package org.meeuw.theories
Interface ComparableTheory<E extends Comparable<E>>
- All Superinterfaces:
BasicObjectTheory<E>
- All Known Subinterfaces:
CompleteScalarFieldTheory<E>,OrderedTheory<E>,ScalarFieldTheory<E>,ScalarTheory<S>,SizeableScalarTheory<S,,SIZE> StrictlyOrderedTheory<E>
Tests basic properties for
Comparable objects.
- Normally,
equals must be consistent with comparable comparing to null should raise NullPointerExceptioncompare to is anti-commutativecompareTois also transitive (compareToIsTransitiveBigger(E, E, E),compareToIsTransitiveSmaller(E, E, E),compareToIsTransitiveEquals(net.jqwik.api.Tuple.Tuple3<E, E, E>))
- Since:
- 0.10
- Author:
- Michiel Meeuwissen
-
Field Summary
Fields inherited from interface org.meeuw.theories.BasicObjectTheory
DATAPOINTS, DATAPOINTS_OR_NULL, EQUAL_DATAPOINTS, RANDOMS -
Method Summary
Modifier and TypeMethodDescriptiondefault net.jqwik.api.Arbitrary<@NonNull net.jqwik.api.Tuple.Tuple3<@NonNull E,@NonNull E, @NonNull E>> default voidcompareToIsAntiCommutative(E x, E y) The implementor must ensure sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) for all x and y.default voidcompareToIsTransitiveBigger(E x, E y, E z) The implementor must also ensure that the relation is transitive: (x.compareTo(y)>0 && y.compareTo(z)>0) implies x.compareTo(z)>0.default voidcompareToIsTransitiveEquals(net.jqwik.api.Tuple.Tuple3<E, E, E> tuple) The implementor must also ensure that the relation is transitive: (x.compareTo(y)==0 && y.compareTo(z)==0) implies x.compareTo(z)==0.default voidcompareToIsTransitiveSmaller(E x, E y, E z) The implementor must also ensure that the relation is transitive: (x.compareTo(y)<0 && y.compareTo(z)<0) implies x.compareTo(z)<0.default voiddefault voidequalsConsistentWithComparable(net.jqwik.api.Tuple.Tuple2<E, E> pair) This test whether compareToComparable.compareTo(Object)returns 0 iff if two object are equal.Methods inherited from interface org.meeuw.theories.BasicObjectTheory
datapoints, datapointsOrNull, equalDatapoints, equals, equalsIsConsistent, equalsIsReflexive, equalsIsSymmetric, equalsIsTransitive, equalsReturnFalseOnNull, equalsReturnFalseOnOtherObject, hashCodeIsConsistentWithEquals, hashCodeIsSelfConsistent, log, randoms, toString
-
Method Details
-
equalsConsistentWithComparable
@Property(maxDiscardRatio=10000) default void equalsConsistentWithComparable(@ForAll("equalDatapoints") net.jqwik.api.Tuple.Tuple2<E, E> pair) This test whether compareToComparable.compareTo(Object)returns 0 iff if two object are equal. TODO: This is not an absolute requirement, in some cases you may want to compareTo to zero even if two objects are not exactly equal. -
compareToNull
-
compareToIsAntiCommutative
@Property default void compareToIsAntiCommutative(@ForAll("datapoints") E x, @ForAll("datapoints") E y) The implementor must ensure sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) for all x and y. -
compareToIsTransitiveBigger
@Property(maxDiscardRatio=1000) default void compareToIsTransitiveBigger(@ForAll("datapoints") E x, @ForAll("datapoints") E y, @ForAll("datapoints") E z) The implementor must also ensure that the relation is transitive: (x.compareTo(y)>0 && y.compareTo(z)>0) implies x.compareTo(z)>0. -
compareToIsTransitiveSmaller
@Property(maxDiscardRatio=1000) default void compareToIsTransitiveSmaller(@ForAll("datapoints") E x, @ForAll("datapoints") E y, @ForAll("datapoints") E z) The implementor must also ensure that the relation is transitive: (x.compareTo(y)<0 && y.compareTo(z)<0) implies x.compareTo(z)<0. -
compareToIsTransitiveEquals
@Property default void compareToIsTransitiveEquals(@ForAll("compareToEqualsDatapoints3") net.jqwik.api.Tuple.Tuple3<E, E, E> tuple) The implementor must also ensure that the relation is transitive: (x.compareTo(y)==0 && y.compareTo(z)==0) implies x.compareTo(z)==0. -
compareToEqualsDatapoints3
-