Best Kotest code snippet using io.kotest.property.arbitrary.dates.Arb.Companion.localDateTime
dates.kt
Source:dates.kt  
1package io.kotest.property.arbitrary2import io.kotest.property.Arb3import java.time.Instant4import java.time.LocalDate5import java.time.LocalDateTime6import java.time.LocalTime7import java.time.Period8import java.time.Year.isLeap9import java.time.YearMonth10import java.time.temporal.ChronoUnit11import java.time.temporal.TemporalQueries.localDate12import java.time.temporal.TemporalQueries.localTime13import kotlin.random.Random14/**15 * Arberates a random [Period]s.16 *17 * This generator creates randomly generated Periods, with years less than or equal to [maxYear].18 *19 * If [maxYear] is 0, only random months and days will be generated.20 *21 * Months will always be in range [0..11]22 * Days will always be in range [0..31]23 */24fun Arb.Companion.period(maxYear: Int = 10): Arb<Period> = arbitrary(listOf(Period.ZERO)) {25   Period.of(26      (0..maxYear).random(it.random),27      (0..11).random(it.random),28      (0..31).random(it.random)29   )30}31fun Arb.Companion.localDate() = Arb.Companion.localDate(LocalDate.of(1970, 1, 1), LocalDate.of(2030, 12, 31))32/**33 * Arberates a stream of random LocalDates34 *35 * This generator creates randomly generated LocalDates, in the range [[minDate, maxDate]].36 *37 * If any of the years in the range contain a leap year, the date [29/02/YEAR] will always be a constant value of this38 * generator.39 *40 * @see [localDateTime]41 * @see [localTime]42 */43fun Arb.Companion.localDate(44   minDate: LocalDate = LocalDate.of(1970, 1, 1),45   maxDate: LocalDate = LocalDate.of(2030, 12, 31)46): Arb<LocalDate> {47   val leapYears = (minDate.year..maxDate.year).filter { isLeap(it.toLong()) }48   val february28s = leapYears.map { LocalDate.of(it, 2, 28) }49   val february29s = february28s.map { it.plusDays(1) }50   return arbitrary(february28s + february29s + minDate + maxDate) {51      minDate.plusDays(it.random.nextLong(ChronoUnit.DAYS.between(minDate, maxDate)))52   }.filter { it in minDate..maxDate }53}54/**55 * Arberates a stream of random LocalTimes56 *57 * This generator creates randomly generated LocalTimes.58 *59 * @see [localDateTime]60 * @see [localDate]61 */62fun Arb.Companion.localTime(): Arb<LocalTime> = arbitrary(listOf(LocalTime.of(23, 59, 59), LocalTime.of(0, 0, 0))) {63   LocalTime.of(it.random.nextInt(24), it.random.nextInt(60), it.random.nextInt(60))64}65/**66 * Arberates a stream of random LocalDateTimes67 *68 * This generator creates randomly generated LocalDates, in the range [[minYear, maxYear]].69 *70 * If any of the years in the range contain a leap year, the date [29/02/YEAR] will always be a constant value of this71 * generator.72 *73 * @see [localDateTime]74 * @see [localTime]75 */76fun Arb.Companion.localDateTime(77   minYear: Int? = null,78   maxYear: Int79): Arb<LocalDateTime> {80   return localDateTime(minYear ?: 1970, maxYear)81}82/**83 * Arberates a stream of random LocalDateTimes84 *85 * This generator creates randomly generated LocalDates, in the range [[minYear, maxYear]].86 *87 * If any of the years in the range contain a leap year, the date [29/02/YEAR] will always be a constant value of this88 * generator.89 *90 * @see [localDateTime]91 * @see [localTime]92 */93fun Arb.Companion.localDateTime(94   minYear: Int,95   maxYear: Int? = null96): Arb<LocalDateTime> {97   return localDateTime(minYear, maxYear ?: 2030)98}99/**100 * Arberates a stream of random LocalDateTimes101 *102 * This generator creates randomly generated LocalDates, in the range [[minYear, maxYear]].103 *104 * If any of the years in the range contain a leap year, the date [29/02/YEAR] will always be a constant value of this105 * generator.106 *107 * @see [localDateTime]108 * @see [localTime]109 */110fun Arb.Companion.localDateTime(111   minYear: Int,112   maxYear: Int113): Arb<LocalDateTime> {114   return localDateTime(115      minLocalDateTime = LocalDateTime.of(minYear, 1, 1, 0, 0),116      maxLocalDateTime = LocalDateTime.of(maxYear, 12, 31, 23, 59)117   )118}119/**120 * Arberates a stream of random LocalDateTimes121 *122 * This generator creates randomly generated LocalDates, in the range [[minLocalDateTime, maxLocalDateTime]].123 *124 * If any of the years in the range contain a leap year, the date [29/02/YEAR] will always be a constant value of this125 * generator.126 *127 * @see [localDateTime]128 * @see [localTime]129 */130fun Arb.Companion.localDateTime(131   minLocalDateTime: LocalDateTime = LocalDateTime.of(1970, 1, 1, 0, 0),132   maxLocalDateTime: LocalDateTime = LocalDateTime.of(2030, 12, 31, 23, 59)133): Arb<LocalDateTime> {134   return arbitrary(135      edgecaseFn = {136         generateSequence {137            val date = localDate(minLocalDateTime.toLocalDate(), maxLocalDateTime.toLocalDate()).edgecase(it)138            val time = localTime().edgecase(it)139            if (date == null || time == null) null else date.atTime(time)140         }.find { !it.isBefore(minLocalDateTime) && !it.isAfter(maxLocalDateTime) }141      },142      sampleFn = {143         generateSequence {144            val date = localDate(minLocalDateTime.toLocalDate(), maxLocalDateTime.toLocalDate()).single(it)145            val time = localTime().single(it)146            date.atTime(time)147         }.first { !it.isBefore(minLocalDateTime) && !it.isAfter(maxLocalDateTime) }148      }149   )150}151/**152 * Arberates a stream of random YearMonth153 *154 * If any of the years in the range contain a leap year, the date [02/YEAR] will always be a constant value of this155 * generator.156 *157 * This generator creates randomly generated YearMonth, in the range [[minYearMonth, maxYearMonth]].158 *159 * @see [yearMonth]160 */161fun Arb.Companion.yearMonth(162   minYearMonth: YearMonth = YearMonth.of(1970, 1),163   maxYearMonth: YearMonth = YearMonth.of(2030, 12)164): Arb<YearMonth> {165   val leapYears = (minYearMonth.year..maxYearMonth.year).filter { isLeap(it.toLong()) }166   val february = leapYears.map { YearMonth.of(it, 2) }167   return arbitrary(february + minYearMonth + maxYearMonth) {168      minYearMonth.plusMonths(it.random.nextLong(ChronoUnit.MONTHS.between(minYearMonth, maxYearMonth)))169   }.filter { it in minYearMonth..maxYearMonth }170}171typealias InstantRange = ClosedRange<Instant>172fun InstantRange.random(random: Random): Instant {173   try {174      val seconds = (start.epochSecond..endInclusive.epochSecond).random(random)175      val nanos = when {176         seconds == start.epochSecond && seconds == endInclusive.epochSecond -> start.nano..endInclusive.nano177         seconds == start.epochSecond -> start.nano..999_999_999178         seconds == endInclusive.epochSecond -> 0..endInclusive.nano179         else -> 0..999_999_999180      }.random(random)181      return Instant.ofEpochSecond(seconds, nanos.toLong())182   } catch (e: IllegalArgumentException) {183      throw NoSuchElementException(e.message)184   }185}186/**187 * Arberates a stream of random [Instant]188 */189fun Arb.Companion.instant(range: InstantRange): Arb<Instant> =190   arbitrary(listOf(range.start, range.endInclusive)) {191      range.random(it.random)192   }193/**194 * Arberates a stream of random [Instant]195 */196fun Arb.Companion.instant(197   minValue: Instant = Instant.MIN,198   maxValue: Instant = Instant.MAX199) = instant(minValue..maxValue)...Arb.Companion.localDateTime
Using AI Code Generation
1val arbLocalDateTime = Arb.localDateTime()2val arbLocalDate = Arb.localDate()3val arbLocalTime = Arb.localTime()4val arbDate = Arb.date()5val arbInstant = Arb.instant()6val arbMonth = Arb.month()7val arbMonthDay = Arb.monthDay()8val arbYear = Arb.year()9val arbYearMonth = Arb.yearMonth()10val arbZoneId = Arb.zoneId()11val arbZoneOffset = Arb.zoneOffset()12val arbZoneRegion = Arb.zoneRegion()13val arbZoneRules = Arb.zoneRules()14val arbZoneRulesException = Arb.zoneRulesException()15val arbZoneRulesGroup = Arb.zoneRulesGroup()16val arbZoneRulesProvider = Arb.zoneRulesProvider()17val arbZoneRulesTransition = Arb.zoneRulesTransition()Arb.Companion.localDateTime
Using AI Code Generation
1val arb = Arb.localDateTime()2val arb = Arb.localDate()3val arb = Arb.localTime()4val arb = Arb.localDateTime()5val arb = Arb.localDate()6val arb = Arb.localTime()7val arb = Arb.localDateTime()8val arb = Arb.localDate()9val arb = Arb.localTime()10val arb = Arb.localDateTime()11val arb = Arb.localDate()12val arb = Arb.localTime()13val arb = Arb.localDateTime()14val arb = Arb.localDate()15val arb = Arb.localTime()16val arb = Arb.localDateTime()17val arb = Arb.localDate()18val arb = Arb.localTime()Arb.Companion.localDateTime
Using AI Code Generation
1val arb = Arb.localDateTime(Year.MIN, Year.MAX)2val arb = Arb.localTime()3val arb = Arb.localTime(Year.MIN, Year.MAX)4val arb = Arb.localTime(Year.MIN, Year.MAX, ZoneOffset.UTC)5val arb = Arb.localTime(ZoneOffset.UTC)6val arb = Arb.month()7val arb = Arb.month(Year.MIN, Year.MAX)8val arb = Arb.monthDay()9val arb = Arb.monthDay(Year.MIN, Year.MAX)10val arb = Arb.monthDay(Year.MIN, Year.MAX, ZoneOffset.UTC)11val arb = Arb.monthDay(ZoneOffset.UTC)12val arb = Arb.offsetDateTime()13val arb = Arb.offsetDateTime(Year.MIN, Year.MAX)14val arb = Arb.offsetDateTime(Year.MIN, Year.MAX, ZoneOffset.UTC)15val arb = Arb.offsetDateTime(ZoneOffset.UTC)16val arb = Arb.offsetTime()Arb.Companion.localDateTime
Using AI Code Generation
1val arb: Arb < LocalDateTime > = localDateTime ( min = LocalDateTime . of ( 2019 , 1 , 1 , 0 , 0 , 0 ), max = LocalDateTime . of ( 2019 , 1 , 1 , 23 , 59 , 59 ))2val arb: Arb < LocalDate > = localDate ( min = LocalDate . of ( 2019 , 1 , 1 ), max = LocalDate . of ( 2019 , 12 , 31 ))3val arb: Arb < LocalTime > = localTime ( min = LocalTime . of ( 0 , 0 , 0 ), max = LocalTime . of ( 23 , 59 , 59 ))4val arb: Arb < Month > = month ()5val arb: Arb < MonthDay > = monthDay ()6val arb: Arb < OffsetDateTime > = offsetDateTime ( min = OffsetDateTime . of ( 2019 , 1 , 1 , 0 , 0 , 0 , 0 , ZoneOffset . UTC ), max = OffsetDateTime . of ( 2019 , 1 , 1 , 23 , 59 , 59 , 0 , ZoneOffset . UTC ))7val arb: Arb < OffsetTime > = offsetTime ( min = OffsetTime . of ( 0 , 0 , 0 , 0 , ZoneOffset . UTC ), max = OffsetTime . of ( 23 , 59 , 59 , 0 , ZoneOffset . UTC ))8val arb: Arb < Year > = year ()9val arb: Arb < YearMonth > = yearMonth ()Arb.Companion.localDateTime
Using AI Code Generation
1@Property( iterations = 1000 ) fun  testLocalDateTime ( @ForAll  dt :  LocalDateTime ) { 2     dt . shouldNotBe ( null ) 3 }4@Property( iterations = 1000 ) fun  testLocalDate ( @ForAll  dt :  LocalDate ) { 5     dt . shouldNotBe ( null ) 6 }7@Property( iterations = 1000 ) fun  testLocalTime ( @ForAll  dt :  LocalTime ) { 8     dt . shouldNotBe ( null ) 9 }10@Property( iterations = 1000 ) fun  testMonthDay ( @ForAll  dt :  MonthDay ) { 11     dt . shouldNotBe ( null ) 12 }13@Property( iterations = 1000 ) fun  testOffsetDateTime ( @ForAll  dt :  OffsetDateTime ) { 14     dt . shouldNotBe ( null ) 15 }16@Property( iterations = 1000 ) fun  testOffsetTime ( @ForAll  dt :  OffsetTime ) { 17     dt . shouldNotBe ( null ) 18 }19@Property( iterations = 1000 ) fun  testYear ( @ForAll  dt :  Year ) { 20     dt . shouldNotBe ( null ) 21 }22@Property( iterations = 1000 ) fun  testYearMonth ( @ForAll  dt :  YearMonth ) { 23     dt . shouldNotBe ( null ) 24 }25@Property( iterations = 1000 ) fun  testZonedDateTime ( @ForAll  dt :  ZonedDateTime ) { Arb.Companion.localDateTime
Using AI Code Generation
1Arb.localDate(1970, 2038)2Arb.localTime()3Arb.zonedDateTime()4Arb.zonedDateTime()5Arb.zonedDateTime()6Arb.zonedDateTime()Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
