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>

public interface ComparableTheory<E extends Comparable<E>> extends BasicObjectTheory<E>
Since:
0.10
Author:
Michiel Meeuwissen
  • Method Details

    • equalsConsistentWithComparable

      @Property(maxDiscardRatio=10000) default void equalsConsistentWithComparable(@ForAll("equalDatapoints") net.jqwik.api.Tuple.Tuple2<E,E> pair)
      This test whether compareTo Comparable.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

      @Property default void compareToNull(@ForAll("datapoints") Object o)
    • 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

      @Provide default net.jqwik.api.Arbitrary<@NonNull net.jqwik.api.Tuple.Tuple3<@NonNull E,@NonNull E,@NonNull E>> compareToEqualsDatapoints3()