Merge pull request #369 from name213/#313-chronoLocalDateAssertions_for_the_new_infix_API

#313 migrate chronoLocalDateAssertions for infix api
This commit is contained in:
Robert Stoll
2020-02-10 23:41:58 +01:00
committed by GitHub
2 changed files with 128 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
@file:Suppress("JAVA_MODULE_DOES_NOT_READ_UNNAMED_MODULE" /* TODO remove once https://youtrack.jetbrains.com/issue/KT-35343 is fixed */)
package ch.tutteli.atrium.api.infix.en_GB
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.domain.builders.chronoLocalDate
import java.time.chrono.ChronoLocalDate
/**
* Expects that the subject of the assertion (a [ChronoLocalDate])
* is before the [expected] [ChronoLocalDate].
*
* @return This assertion container to support a fluent API.
* @throws AssertionError Might throw an [AssertionError] if the assertion made is not correct.
*
* @since 0.10.0
*/
infix fun <T : ChronoLocalDate> Expect<T>.isBefore(expected: ChronoLocalDate): Expect<T> =
addAssertion(ExpectImpl.chronoLocalDate.isBefore(this, expected))
/**
* Expects that the subject of the assertion (a [ChronoLocalDate])
* is before or equal the [expected] [ChronoLocalDate].
*
* @return This assertion container to support a fluent API.
* @throws AssertionError Might throw an [AssertionError] if the assertion made is not correct.
*
* @since 0.10.0
*/
infix fun <T : ChronoLocalDate> Expect<T>.isBeforeOrEqual(expected: ChronoLocalDate): Expect<T> =
addAssertion(ExpectImpl.chronoLocalDate.isBeforeOrEquals(this, expected))
/**
* Expects that the subject of the assertion (a [ChronoLocalDate])
* is after the [expected] [ChronoLocalDate].
*
* @return This assertion container to support a fluent API.
* @throws AssertionError Might throw an [AssertionError] if the assertion made is not correct.
*
* @since 0.10.0
*/
infix fun <T : ChronoLocalDate> Expect<T>.isAfter(expected: ChronoLocalDate): Expect<T> =
addAssertion(ExpectImpl.chronoLocalDate.isAfter(this, expected))
/**
* Expects that the subject of the assertion (a [ChronoLocalDate])
* is after or equal the [expected] [ChronoLocalDate].
*
* @return This assertion container to support a fluent API.
* @throws AssertionError Might throw an [AssertionError] if the assertion made is not correct.
*
* @since 0.10.0
*/
infix fun <T : ChronoLocalDate> Expect<T>.isAfterOrEqual(expected: ChronoLocalDate): Expect<T> =
addAssertion(ExpectImpl.chronoLocalDate.isAfterOrEquals(this, expected))
/**
* Expects that the subject of the assertion (a [ChronoLocalDate])
* is equal to the [expected] [ChronoLocalDate].
*
* @return This assertion container to support a fluent API.
* @throws AssertionError Might throw an [AssertionError] if the assertion made is not correct.
*
* @since 0.10.0
*/
infix fun <T : ChronoLocalDate> Expect<T>.isEqual(expected: ChronoLocalDate): Expect<T> =
addAssertion(ExpectImpl.chronoLocalDate.isEqual(this, expected))

View File

@@ -0,0 +1,59 @@
package kotlin.ch.tutteli.atrium.api.infix.en_GB.jdk8
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.specs.fun1
import ch.tutteli.atrium.specs.notImplemented
import java.time.LocalDate
import java.time.chrono.ChronoLocalDate
import java.time.chrono.JapaneseDate
class ChronoLocalDateAssertionsSpec : ch.tutteli.atrium.specs.integration.ChronoLocalDateAssertionSpec(
fun1(Expect<ChronoLocalDate>::isBefore),
fun1(Expect<ChronoLocalDate>::isBeforeOrEqual),
fun1(Expect<ChronoLocalDate>::isAfter),
fun1(Expect<ChronoLocalDate>::isAfterOrEqual),
fun1(Expect<ChronoLocalDate>::isEqual)
) {
@Suppress("unused", "UNUSED_VALUE")
private fun ambiguityTest() {
val chronoLocalDate: ChronoLocalDate = notImplemented()
var a1: Expect<ChronoLocalDate> = notImplemented()
var a2: Expect<LocalDate> = notImplemented()
a1 = a1 isBefore LocalDate.now()
a1 = a1 isBeforeOrEqual LocalDate.now()
a1 = a1 isAfter LocalDate.now()
a1 = a1 isAfterOrEqual LocalDate.now()
a1 = a1 isEqual LocalDate.now()
a2 = a2 isBefore LocalDate.now()
a2 = a2 isBeforeOrEqual LocalDate.now()
a2 = a2 isAfter LocalDate.now()
a2 = a2 isAfterOrEqual LocalDate.now()
a2 = a2 isEqual LocalDate.now()
a1 = a1 isBefore JapaneseDate.now()
a1 = a1 isBeforeOrEqual JapaneseDate.now()
a1 = a1 isAfter JapaneseDate.now()
a1 = a1 isAfterOrEqual JapaneseDate.now()
a1 = a1 isEqual JapaneseDate.now()
a2 = a2 isBefore JapaneseDate.now()
a2 = a2 isBeforeOrEqual JapaneseDate.now()
a2 = a2 isAfter JapaneseDate.now()
a2 = a2 isAfterOrEqual JapaneseDate.now()
a2 = a2 isEqual JapaneseDate.now()
a1 = a1 isBefore chronoLocalDate
a1 = a1 isBeforeOrEqual chronoLocalDate
a1 = a1 isAfter chronoLocalDate
a1 = a1 isAfterOrEqual chronoLocalDate
a1 = a1 isEqual chronoLocalDate
a2 = a2 isBefore chronoLocalDate
a2 = a2 isBeforeOrEqual chronoLocalDate
a2 = a2 isAfter chronoLocalDate
a2 = a2 isAfterOrEqual chronoLocalDate
a2 = a2 isEqual chronoLocalDate
}
}