MicroUtils/klock/src/commonTest/kotlin/korlibs/time/DateTest.kt

79 lines
5.2 KiB
Kotlin

package korlibs.time
import korlibs.time.locale.spanish
import kotlin.test.Test
import kotlin.test.assertEquals
class DateTest {
@Test
fun test() {
val date = Date(2019, Month.September, 18)
val date2 = Date(2019, Month.September, 19)
val time = Time(13, 9, 37, 150)
assertEquals(DayOfWeek.Wednesday, date.dayOfWeek)
assertEquals(DayOfWeek.Thursday, date2.dayOfWeek)
assertEquals(4, date2.dayOfWeekInt)
assertEquals(1, Date(2019, Month.January, 1).dayOfYear)
assertEquals(262, date2.dayOfYear)
assertEquals(2019, date2.year)
assertEquals(Year(2019), date2.yearYear)
assertEquals("2019-09-18", date.toString())
assertEquals("13:09:37.150", time.toString())
assertEquals("Wed, 18 Sep 2019 00:00:00 UTC", (date.dateTimeDayStart).toStringDefault())
assertEquals("Wed, 18 Sep 2019 13:09:37 UTC", (date + time).toStringDefault())
assertEquals("2019-10-01", (Date(2019, Month.September, 30) + 1.days).toString())
assertEquals("2019-10-30", (Date(2019, Month.September, 30) + 1.months).toString())
assertEquals("2019-09-30", (Date(2019, Month.October, 1) - 1.days).toString())
assertEquals("2019-09-01", (Date(2019, Month.October, 1) - 1.months).toString())
assertEquals("2019-10-31", (Date(2019, Month.September, 30) + DateTimeSpan(1.months, 1.days)).toString())
assertEquals("2019-08-31", (Date(2019, Month.October, 1) - DateTimeSpan(1.months, 1.days)).toString())
(Time(9, 0) .. Time(19, 30)).let { range ->
assertEquals(true, range.contains(Time(11, 0)))
assertEquals(false, range.contains(Time(8, 59, 59, 999)))
assertEquals(false, range.contains(Time(19, 31)))
}
(Date(2019, 9, 18) .. Date(2019, 10, 2)).let { range ->
assertEquals(true, range.contains(Date(2019, 9, 18)))
assertEquals(true, range.contains(Date(2019, 10, 1)))
assertEquals(false, range.contains(Date(2019, 9, 17)))
assertEquals(false, range.contains(Date(2019, 10, 3)))
}
assertEquals("Wed, 18 Sep 2019 00:00:00 UTC", (Date(2019, Month.September, 17) + Time(24)).toStringDefault())
assertEquals("Tue, 17 Sep 2019 00:00:00 UTC", (Date(2019, Month.September, 18) - Time(24)).toStringDefault())
assertEquals("Wed, 18 Sep 2019 01:02:20 UTC", (Date(2019, Month.September, 18) + Time(hour = 1, minute = 1, second = 80)).toStringDefault())
val format = "EEE, dd MMM YYYY HH:mm:ss.SSS"
assertEquals("Wed, 18 Sep 2019 01:02:20.300", (Date(2019, Month.September, 18) + Time(hour = 1, minute = 1, second = 80, millisecond = 300)).format(format))
assertEquals("Wed, 18 Sep 2019 01:02:21.300", (Date(2019, Month.September, 18) + Time(hour = 1, minute = 1, second = 80, millisecond = 1300)).format(format))
assertEquals("Wed, 18 Sep 2019 23:58:39.700", (Date(2019, Month.September, 18) - Time(hour = 1, minute = 1, second = 80, millisecond = 300)).format(format))
assertEquals("Wed, 18 Sep 2019 23:58:38.700", (Date(2019, Month.September, 18) - Time(hour = 1, minute = 1, second = 80, millisecond = 1300)).format(format))
}
@Test
fun test2() {
fun date(dayOfMonth: Int, dayOfWeek: DayOfWeek, locale: KlockLocale) = Date(2019, Month.September, dayOfMonth).inThisWeek(dayOfWeek, locale).toString()
for (dayOfMonth in 16..22) assertEquals("2019-09-16", date(dayOfMonth, DayOfWeek.Monday, KlockLocale.spanish), "failed for day = $dayOfMonth")
for (dayOfMonth in 16..22) assertEquals("2019-09-17", date(dayOfMonth, DayOfWeek.Tuesday, KlockLocale.spanish), "failed for day = $dayOfMonth")
for (dayOfMonth in 16..22) assertEquals("2019-09-18", date(dayOfMonth, DayOfWeek.Wednesday, KlockLocale.spanish), "failed for day = $dayOfMonth")
for (dayOfMonth in 16..22) assertEquals("2019-09-19", date(dayOfMonth, DayOfWeek.Thursday, KlockLocale.spanish), "failed for day = $dayOfMonth")
for (dayOfMonth in 16..22) assertEquals("2019-09-20", date(dayOfMonth, DayOfWeek.Friday, KlockLocale.spanish), "failed for day = $dayOfMonth")
for (dayOfMonth in 16..22) assertEquals("2019-09-21", date(dayOfMonth, DayOfWeek.Saturday, KlockLocale.spanish), "failed for day = $dayOfMonth")
for (dayOfMonth in 16..22) assertEquals("2019-09-22", date(dayOfMonth, DayOfWeek.Sunday, KlockLocale.spanish), "failed for day = $dayOfMonth")
for (dayOfMonth in 15..21) assertEquals("2019-09-15", date(dayOfMonth, DayOfWeek.Sunday, KlockLocale.english), "failed for day = $dayOfMonth")
for (dayOfMonth in 15..21) assertEquals("2019-09-16", date(dayOfMonth, DayOfWeek.Monday, KlockLocale.english), "failed for day = $dayOfMonth")
for (dayOfMonth in 15..21) assertEquals("2019-09-17", date(dayOfMonth, DayOfWeek.Tuesday, KlockLocale.english), "failed for day = $dayOfMonth")
for (dayOfMonth in 15..21) assertEquals("2019-09-18", date(dayOfMonth, DayOfWeek.Wednesday, KlockLocale.english), "failed for day = $dayOfMonth")
for (dayOfMonth in 15..21) assertEquals("2019-09-19", date(dayOfMonth, DayOfWeek.Thursday, KlockLocale.english), "failed for day = $dayOfMonth")
for (dayOfMonth in 15..21) assertEquals("2019-09-20", date(dayOfMonth, DayOfWeek.Friday, KlockLocale.english), "failed for day = $dayOfMonth")
for (dayOfMonth in 15..21) assertEquals("2019-09-21", date(dayOfMonth, DayOfWeek.Saturday, KlockLocale.english), "failed for day = $dayOfMonth")
}
}