LocalDateRangeSource
annotation class LocalDateRangeSource(val min: String, val max: String, val increment: String = "P1d", val ascending: Boolean = true, val dateFormat: String = "yyyy-MM-dd")
Annotation to indicate that the annotated LocalDate parameter should be populated with a LocalDate range from min to max with an increment step in the ascending direction. The default increment is 1 day. The default ascending is true.
Samples
import assertk.Assert
import assertk.all
import assertk.assertThat
import assertk.assertions.isBetween
import assertk.assertions.isIn
import assertk.assertions.isLessThan
import assertk.assertions.support.expected
import com.wesleyhome.test.jupiter.annotations.GeneratedParametersTest
import com.wesleyhome.test.jupiter.annotations.StringSource
import com.wesleyhome.test.jupiter.annotations.datetime.InstantRangeSource
import com.wesleyhome.test.jupiter.annotations.datetime.InstantSource
import com.wesleyhome.test.jupiter.annotations.datetime.LocalDateRangeSource
import com.wesleyhome.test.jupiter.annotations.datetime.LocalDateSource
import com.wesleyhome.test.jupiter.annotations.datetime.LocalDateTimeRangeSource
import com.wesleyhome.test.jupiter.annotations.datetime.LocalDateTimeSource
import com.wesleyhome.test.jupiter.annotations.datetime.LocalTimeRangeSource
import com.wesleyhome.test.jupiter.annotations.datetime.LocalTimeSource
import com.wesleyhome.test.jupiter.annotations.datetime.RandomInstantSource
import com.wesleyhome.test.jupiter.annotations.number.DoubleRangeSource
import com.wesleyhome.test.jupiter.annotations.number.DoubleSource
import com.wesleyhome.test.jupiter.annotations.number.FloatRangeSource
import com.wesleyhome.test.jupiter.annotations.number.FloatSource
import com.wesleyhome.test.jupiter.annotations.number.IntRangeSource
import com.wesleyhome.test.jupiter.annotations.number.IntSource
import com.wesleyhome.test.jupiter.annotations.number.LongRangeSource
import com.wesleyhome.test.jupiter.annotations.number.LongSource
import java.time.Instant
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.LocalTime
import java.time.temporal.ChronoUnit
fun main() {
//sampleStart
/**
* This will generate 10 tests with random LocalDate values
* between 2023-01-01 and 2023-01-10
*/
@GeneratedParametersTest
fun testLocalDateRangeSource(
@LocalDateRangeSource(
min = "2023-01-01",
max = "2023-01-10"
)
value: LocalDate
) {
assertThat(value).isBetween(
LocalDate.parse("2023-01-01"),
LocalDate.parse("2023-01-10")
)
}
/**
* This will generate 10 tests with random LocalDate values
* between 01/01/2023 and 01/10/2023
* The values will be parsed using the format "MM/dd/yyyy"
*/
@GeneratedParametersTest
fun testLocalDateRangeSourceWithFormat(
@LocalDateRangeSource(
min = "01/01/2023",
max = "01/10/2023",
dateFormat = "MM/dd/yyyy"
)
value: LocalDate
) {
assertThat(value).isBetween(
LocalDate.parse("2023-01-01"),
LocalDate.parse("2023-01-10")
)
}
/**
* This will generate 10 tests with random LocalDate values
* between 01/01/2023 and 01/10/2023
* The values will be parsed using the format "MM/dd/yyyy"
* The values will be incremented by 2 days
*/
@GeneratedParametersTest
fun testLocalDateRangeSourceWithIncrement(
@LocalDateRangeSource(
min = "01/01/2023",
max = "01/10/2023",
dateFormat = "MM/dd/yyyy",
increment = "P2d"
)
value: LocalDate
) {
assertThat(value).isBetween(
LocalDate.parse("2023-01-01"),
LocalDate.parse("2023-01-10")
)
}
//sampleEnd
}