Class DoubleSubject


public final class DoubleSubject extends ComparableSubject<Double>
A subject for Double values.
Author:
Kurt Alfred Kluever
  • Method Details

    • isWithin

      public DoubleSubject.TolerantDoubleComparison isWithin(double tolerance)
      Prepares for a check that the actual value is a finite number within the given tolerance of an expected value that will be provided in the next call in the fluent chain.

      The check will fail if either the actual value or the expected value is Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, or Double.NaN. To check for those values, use isPositiveInfinity(), isNegativeInfinity(), isNaN(), or (with more generality) isEqualTo(java.lang.Object).

      The check will pass if both values are zero, even if one is 0.0 and the other is -0.0. Use isEqualTo(java.lang.Object) to assert that a value is exactly 0.0 or that it is exactly -0.0.

      You can use a tolerance of 0.0 to assert the exact equality of finite doubles, but often isEqualTo(java.lang.Object) is preferable (note the different behaviours around non-finite values and -0.0). See the documentation on isEqualTo(java.lang.Object) for advice on when exact equality assertions are appropriate.

      Parameters:
      tolerance - an inclusive upper bound on the difference between the actual value and expected value allowed by the check, which must be a non-negative finite value, i.e. not Double.NaN, Double.POSITIVE_INFINITY, or negative, including -0.0
    • isNotWithin

      public DoubleSubject.TolerantDoubleComparison isNotWithin(double tolerance)
      Prepares for a check that the actual value is a finite number not within the given tolerance of an expected value that will be provided in the next call in the fluent chain.

      The check will fail if either the actual value or the expected value is Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, or Double.NaN. See isFinite(), isNotNaN(), or isNotEqualTo(java.lang.Object) for checks with other behaviours.

      The check will fail if both values are zero, even if one is 0.0 and the other is -0.0. Use isNotEqualTo(java.lang.Object) for a test which fails for a value of exactly zero with one sign but passes for zero with the opposite sign.

      You can use a tolerance of 0.0 to assert the exact non-equality of finite doubles, but sometimes isNotEqualTo(java.lang.Object) is preferable (note the different behaviours around non-finite values and -0.0).

      Parameters:
      tolerance - an exclusive lower bound on the difference between the actual value and expected value allowed by the check, which must be a non-negative finite value, i.e. not Double.NaN, Double.POSITIVE_INFINITY, or negative, including -0.0
    • isEqualTo

      public void isEqualTo(@Nullable Object other)
      Asserts that the actual value is exactly equal to the given value, with equality defined as by Double#equals. This method is not recommended when the code under test is doing any kind of arithmetic: use isWithin(double) with a suitable tolerance in that case. (Remember that the exact result of floating point arithmetic is sensitive to apparently trivial changes such as replacing (a + b) + c with a + (b + c), and that unless strictfp is in force even the result of (a + b) + c is sensitive to the JVM's choice of precision for the intermediate result.) This method is recommended when the code under test is specified as either copying a value without modification from its input or returning a well-defined literal or constant value.

      Note: The assertion isEqualTo(0.0) fails for an input of -0.0, and vice versa. For an assertion that passes for either 0.0 or -0.0, use isZero().

      Overrides:
      isEqualTo in class Subject
    • isNotEqualTo

      public void isNotEqualTo(@Nullable Object other)
      Asserts that the actual value is not exactly equal to the given value, with equality defined as by Double#equals. See isEqualTo(java.lang.Object) for advice on when exact equality is recommended. Use isNotWithin(double) for an assertion with a tolerance.

      Note: The assertion isNotEqualTo(0.0) passes for -0.0, and vice versa. For an assertion that fails for either 0.0 or -0.0, use isNonZero().

      Overrides:
      isNotEqualTo in class Subject
    • isEquivalentAccordingToCompareTo

      @Deprecated public void isEquivalentAccordingToCompareTo(@Nullable Double other)
      Deprecated.
      Use isWithin(double) or isEqualTo(java.lang.Object) instead (see documentation for advice).
      Description copied from class: ComparableSubject
      Checks that the actual value is equivalent to other according to Comparable.compareTo(T), (i.e., checks that a.comparesTo(b) == 0).

      Note: Do not use this method for checking object equality. Instead, use Subject.isEqualTo(Object).

      Overrides:
      isEquivalentAccordingToCompareTo in class ComparableSubject<Double>
    • isZero

      public void isZero()
      Asserts that the actual value is zero (i.e. it is either 0.0 or -0.0).
    • isNonZero

      public void isNonZero()
      Asserts that the actual value is a non-null value other than zero (i.e. it is not 0.0, -0.0 or null).
    • isPositiveInfinity

      public void isPositiveInfinity()
      Asserts that the actual value is Double.POSITIVE_INFINITY.
    • isNegativeInfinity

      public void isNegativeInfinity()
      Asserts that the actual value is Double.NEGATIVE_INFINITY.
    • isNaN

      public void isNaN()
      Asserts that the actual value is Double.NaN.
    • isFinite

      public void isFinite()
      Asserts that the actual value is finite, i.e. not Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, or Double.NaN.
    • isNotNaN

      public void isNotNaN()
      Asserts that the actual value is a non-null value other than Double.NaN (but it may be Double.POSITIVE_INFINITY or Double.NEGATIVE_INFINITY).
    • isGreaterThan

      public void isGreaterThan(int other)
      Checks that the actual value is greater than other.

      To check that the actual value is greater than or equal to other, use isAtLeast(int).

    • isLessThan

      public void isLessThan(int other)
      Checks that the actual value is less than other.

      To check that the actual value is less than or equal to other, use isAtMost(int) .

    • isAtMost

      public void isAtMost(int other)
      Checks that the actual value is less than or equal to other.

      To check that the actual value is strictly less than other, use isLessThan(int).

    • isAtLeast

      public void isAtLeast(int other)
      Checks that the actual value is greater than or equal to other.

      To check that the actual value is strictly greater than other, use isGreaterThan(int).