Class AbstractLocalTimeAssert<SELF extends AbstractLocalTimeAssert<SELF>>

    • Constructor Detail

      • AbstractLocalTimeAssert

        protected AbstractLocalTimeAssert​(LocalTime actual,
                                          Class<?> selfType)
        Parameters:
        selfType - the "self type"
        actual - the actual value to verify
    • Method Detail

      • isBefore

        public SELF isBefore​(LocalTime other)
        Verifies that the actual LocalTime is strictly before the given one.

        Example :

         assertThat(parse("12:00:00")).isBefore(parse("13:00:00"));
        Parameters:
        other - the given LocalTime.
        Returns:
        this assertion object.
        Throws:
        AssertionError - if the actual LocalTime is null.
        IllegalArgumentException - if other LocalTime is null.
        AssertionError - if the actual LocalTime is not strictly before the given one.
      • isBeforeOrEqualTo

        public SELF isBeforeOrEqualTo​(LocalTime other)
        Verifies that the actual LocalTime is before or equals to the given one.

        Example :

         assertThat(parse("12:00:00")).isBeforeOrEqualTo(parse("12:00:00"))
                                                .isBeforeOrEqualTo(parse("12:00:01"));
        Parameters:
        other - the given LocalTime.
        Returns:
        this assertion object.
        Throws:
        AssertionError - if the actual LocalTime is null.
        IllegalArgumentException - if other LocalTime is null.
        AssertionError - if the actual LocalTime is not before or equals to the given one.
      • isAfterOrEqualTo

        public SELF isAfterOrEqualTo​(LocalTime other)
        Verifies that the actual LocalTime is after or equals to the given one.

        Example :

         assertThat(parse("13:00:00")).isAfterOrEqualTo(parse("13:00:00"))
                                      .isAfterOrEqualTo(parse("12:00:00"));
        Parameters:
        other - the given LocalTime.
        Returns:
        this assertion object.
        Throws:
        AssertionError - if the actual LocalTime is null.
        IllegalArgumentException - if other LocalTime is null.
        AssertionError - if the actual LocalTime is not after or equals to the given one.
      • isAfter

        public SELF isAfter​(LocalTime other)
        Verifies that the actual LocalTime is strictly after the given one.

        Example :

         assertThat(parse("13:00:00")).isAfter(parse("12:00:00"));
        Parameters:
        other - the given LocalTime.
        Returns:
        this assertion object.
        Throws:
        AssertionError - if the actual LocalTime is null.
        IllegalArgumentException - if other LocalTime is null.
        AssertionError - if the actual LocalTime is not strictly after the given one.
      • convertToLocalTimeArray

        private static Object[] convertToLocalTimeArray​(String... localTimesAsString)
      • checkIsNotNullAndNotEmpty

        private void checkIsNotNullAndNotEmpty​(Object[] values)
      • assertLocalTimeAsStringParameterIsNotNull

        private static void assertLocalTimeAsStringParameterIsNotNull​(String localTimeAsString)
        Check that the LocalTime string representation to compare actual LocalTime to is not null, otherwise throws a IllegalArgumentException with an explicit message
        Parameters:
        localTimeAsString - String representing the LocalTime to compare actual with
        Throws:
        IllegalArgumentException - with an explicit message if the given String is null
      • isEqualToIgnoringNanos

        public SELF isEqualToIgnoringNanos​(LocalTime other)
        Verifies that actual and given LocalTime have same hour, minute and second fields (nanosecond fields are ignored in comparison).

        Assertion can fail with localTimes in same chronological nanosecond time window, e.g :

        23:00:01.000000000 and 23:00:00.999999999.

        Assertion fails as second fields differ even if time difference is only 1ns.

        Code example :

         // successful assertions
         LocalTime localTime1 = LocalTime.of(12, 0, 1, 0);
         LocalTime localTime2 = LocalTime.of(12, 0, 1, 456);
         assertThat(localTime1).isEqualToIgnoringNanos(localTime2);
        
         // failing assertions (even if time difference is only 1ns)
         LocalTime localTimeA = LocalTime.of(12, 0, 1, 0);
         LocalTime localTimeB = LocalTime.of(12, 0, 0, 999999999);
         assertThat(localTimeA).isEqualToIgnoringNanos(localTimeB);
        Parameters:
        other - the given LocalTime.
        Returns:
        this assertion object.
        Throws:
        AssertionError - if the actual LocalTime is null.
        IllegalArgumentException - if other LocalTime is null.
        AssertionError - if the actual LocalTime is are not equal with nanoseconds ignored.
      • isEqualToIgnoringSeconds

        public SELF isEqualToIgnoringSeconds​(LocalTime other)
        Verifies that actual and given LocalTime have same hour and minute fields (second and nanosecond fields are ignored in comparison).

        Assertion can fail with LocalTimes in same chronological second time window, e.g :

        23:01:00.000 and 23:00:59.000.

        Assertion fails as minute fields differ even if time difference is only 1s.

        Code example :

         // successful assertions
         LocalTime localTime1 = LocalTime.of(23, 50, 0, 0);
         LocalTime localTime2 = LocalTime.of(23, 50, 10, 456);
         assertThat(localTime1).isEqualToIgnoringSeconds(localTime2);
        
         // failing assertions (even if time difference is only 1ms)
         LocalTime localTimeA = LocalTime.of(23, 50, 00, 000);
         LocalTime localTimeB = LocalTime.of(23, 49, 59, 999);
         assertThat(localTimeA).isEqualToIgnoringSeconds(localTimeB);
        Parameters:
        other - the given LocalTime.
        Returns:
        this assertion object.
        Throws:
        AssertionError - if the actual LocalTime is null.
        IllegalArgumentException - if other LocalTime is null.
        AssertionError - if the actual LocalTime is are not equal with second and nanosecond fields ignored.
      • hasSameHourAs

        public SELF hasSameHourAs​(LocalTime other)
        Verifies that actual and given LocalTime have same hour fields (minute, second and nanosecond fields are ignored in comparison).

        Assertion can fail with localTimes in same chronological second time window, e.g :

        01:00:00.000 and 00:59:59.000.

        Time difference is only 1s but hour fields differ.

        Code example :

         // successful assertions
         LocalTime localTime1 = LocalTime.of(23, 50, 0, 0);
         LocalTime localTime2 = LocalTime.of(23, 00, 2, 7);
         assertThat(localTime1).hasSameHourAs(localTime2);
        
         // failing assertions (even if time difference is only 1ms)
         LocalTime localTimeA = LocalTime.of(01, 00, 00, 000);
         LocalTime localTimeB = LocalTime.of(00, 59, 59, 999);
         assertThat(localTimeA).hasSameHourAs(localTimeB);
        Parameters:
        other - the given LocalTime.
        Returns:
        this assertion object.
        Throws:
        AssertionError - if the actual LocalTime is null.
        IllegalArgumentException - if other LocalTime is null.
        AssertionError - if the actual LocalTime is are not equal ignoring minute, second and nanosecond fields.
      • isBetween

        public SELF isBetween​(LocalTime startInclusive,
                              LocalTime endInclusive)
        Verifies that the actual LocalTime is in the [start, end] period (start and end included).

        Example:

         LocalTime localTime = LocalTime.now();
        
         // assertions succeed:
         assertThat(localTime).isBetween(localTime.minusSeconds(1), localTime.plusSeconds(1))
                              .isBetween(localTime, localTime.plusSeconds(1))
                              .isBetween(localTime.minusSeconds(1), localTime)
                              .isBetween(localTime, localTime);
        
         // assertions fail:
         assertThat(localTime).isBetween(localTime.minusSeconds(10), localTime.minusSeconds(1));
         assertThat(localTime).isBetween(localTime.plusSeconds(1), localTime.plusSeconds(10));
        Parameters:
        startInclusive - the start value (inclusive), expected not to be null.
        endInclusive - the end value (inclusive), expected not to be null.
        Returns:
        this assertion object.
        Throws:
        AssertionError - if the actual value is null.
        NullPointerException - if start value is null.
        NullPointerException - if end value is null.
        AssertionError - if the actual value is not in [start, end] period.
        Since:
        3.7.1
      • isBetween

        public SELF isBetween​(String startInclusive,
                              String endInclusive)
        Same assertion as isBetween(LocalTime, LocalTime) but here you pass LocalTime String representations which must follow ISO LocalTime format to allow calling LocalTime.parse(CharSequence) method.

        Example:

         LocalTime oneAm = LocalTime.parse("01:00:00");
        
         // assertions succeed:
         assertThat(oneAm).isBetween("00:59:59", "01:00:01")
                          .isBetween("01:00:00", "01:00:01")
                          .isBetween("00:59:59", "01:00:00")
                          .isBetween("01:00:00", "01:00:00");
        
         // assertion fails:
         assertThat(oneAm).isBetween("00:59:00", "00:59:59");
        Parameters:
        startInclusive - the start value (inclusive), expected not to be null.
        endInclusive - the end value (inclusive), expected not to be null.
        Returns:
        this assertion object.
        Throws:
        AssertionError - if the actual value is null.
        NullPointerException - if start value is null.
        NullPointerException - if end value is null.
        DateTimeParseException - if any of the given String can't be converted to a LocalTime.
        AssertionError - if the actual value is not in [start, end] period.
        Since:
        3.7.1
      • isStrictlyBetween

        public SELF isStrictlyBetween​(LocalTime startExclusive,
                                      LocalTime endExclusive)
        Verifies that the actual LocalTime is in the ]start, end[ period (start and end excluded).

        Example:

         LocalTime localTime = LocalTime.now();
        
         // assertion succeeds:
         assertThat(localTime).isStrictlyBetween(localTime.minusSeconds(1), localTime.plusSeconds(1));
        
         // assertions fail:
         assertThat(localTime).isStrictlyBetween(localTime.minusSeconds(10), localTime.minusSeconds(1));
         assertThat(localTime).isStrictlyBetween(localTime.plusSeconds(1), localTime.plusSeconds(10));
         assertThat(localTime).isStrictlyBetween(localTime, localTime.plusSeconds(1));
         assertThat(localTime).isStrictlyBetween(localTime.minusSeconds(1), localTime);
        Parameters:
        startExclusive - the start value (exclusive), expected not to be null.
        endExclusive - the end value (exclusive), expected not to be null.
        Returns:
        this assertion object.
        Throws:
        AssertionError - if the actual value is null.
        NullPointerException - if start value is null.
        NullPointerException - if end value is null.
        AssertionError - if the actual value is not in ]start, end[ period.
        Since:
        3.7.1
      • isStrictlyBetween

        public SELF isStrictlyBetween​(String startExclusive,
                                      String endExclusive)
        Same assertion as isStrictlyBetween(LocalTime, LocalTime) but here you pass LocalTime String representations which must follow ISO LocalTime format to allow calling LocalTime.parse(CharSequence) method.

        Example:

         LocalTime oneAm = LocalTime.parse("01:00:00");
        
         // assertion succeeds:
         assertThat(oneAm).isStrictlyBetween("00:59:59", "01:00:01");
        
         // assertion fails:
         assertThat(oneAm).isStrictlyBetween("00:59:00", "00:59:59");
         assertThat(oneAm).isStrictlyBetween("01:00:00", "01:00:01");
         assertThat(oneAm).isStrictlyBetween("00:59:59", "01:00:00");
        Parameters:
        startExclusive - the start value (exclusive), expected not to be null.
        endExclusive - the end value (exclusive), expected not to be null.
        Returns:
        this assertion object.
        Throws:
        AssertionError - if the actual value is null.
        NullPointerException - if start value is null.
        NullPointerException - if end value is null.
        DateTimeParseException - if any of the given String can't be converted to a LocalTime.
        AssertionError - if the actual value is not in ]start, end[ period.
        Since:
        3.7.1
      • areEqualIgnoringNanos

        private static boolean areEqualIgnoringNanos​(LocalTime actual,
                                                     LocalTime other)
        Returns true if both localtime are in the same year, month and day of month, hour, minute and second, false otherwise.
        Parameters:
        actual - the actual localtime. expected not be null
        other - the other localtime. expected not be null
        Returns:
        true if both localtime are in the same year, month and day of month, hour, minute and second, false otherwise.
      • areEqualIgnoringSeconds

        private static boolean areEqualIgnoringSeconds​(LocalTime actual,
                                                       LocalTime other)
        Returns true if both localtime are in the same year, month, day of month, hour and minute, false otherwise.
        Parameters:
        actual - the actual localtime. expected not be null
        other - the other localtime. expected not be null
        Returns:
        true if both localtime are in the same year, month, day of month, hour and minute, false otherwise.
      • haveSameHourField

        private static boolean haveSameHourField​(LocalTime actual,
                                                 LocalTime other)