From 3408d58cb76e304f6797446bbd21394126587454 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 10 Apr 2021 15:29:55 +0600 Subject: [PATCH] fixes for Tz --- .../kotlin/dev/inmo/krontab/KronScheduler.kt | 2 +- .../kotlin/dev/inmo/krontab/SchedulerShortcuts.kt | 1 - .../inmo/krontab/internal/CronDateTimeSchedulerTz.kt | 4 ++-- .../kotlin/dev/inmo/krontab/utils/StringParseTest.kt | 11 +++++++---- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/commonMain/kotlin/dev/inmo/krontab/KronScheduler.kt b/src/commonMain/kotlin/dev/inmo/krontab/KronScheduler.kt index 172536b..b7e214a 100644 --- a/src/commonMain/kotlin/dev/inmo/krontab/KronScheduler.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/KronScheduler.kt @@ -1,7 +1,6 @@ package dev.inmo.krontab import com.soywiz.klock.DateTime -import com.soywiz.klock.DateTimeTz import dev.inmo.krontab.internal.toNearDateTime /** @@ -13,6 +12,7 @@ import dev.inmo.krontab.internal.toNearDateTime * @see dev.inmo.krontab.internal.CronDateTimeScheduler */ interface KronScheduler { + /** * @return Next [DateTime] when some action must be triggered according to settings of this instance * diff --git a/src/commonMain/kotlin/dev/inmo/krontab/SchedulerShortcuts.kt b/src/commonMain/kotlin/dev/inmo/krontab/SchedulerShortcuts.kt index f313d40..ed641e6 100644 --- a/src/commonMain/kotlin/dev/inmo/krontab/SchedulerShortcuts.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/SchedulerShortcuts.kt @@ -1,7 +1,6 @@ package dev.inmo.krontab import com.soywiz.klock.DateTime -import com.soywiz.klock.DateTimeTz import dev.inmo.krontab.builder.buildSchedule import dev.inmo.krontab.internal.* import dev.inmo.krontab.internal.CronDateTime diff --git a/src/commonMain/kotlin/dev/inmo/krontab/internal/CronDateTimeSchedulerTz.kt b/src/commonMain/kotlin/dev/inmo/krontab/internal/CronDateTimeSchedulerTz.kt index 86c71c5..c6f0e1f 100644 --- a/src/commonMain/kotlin/dev/inmo/krontab/internal/CronDateTimeSchedulerTz.kt +++ b/src/commonMain/kotlin/dev/inmo/krontab/internal/CronDateTimeSchedulerTz.kt @@ -14,10 +14,10 @@ internal data class CronDateTimeSchedulerTz internal constructor( internal val offset: TimezoneOffset ) : KronSchedulerTz { override suspend fun next(relatively: DateTimeTz): DateTimeTz? { - val dateTimeWithActualOffset = relatively.utc.toOffset(offset).local + val dateTimeWithActualOffset = relatively.toOffset(offset).local return cronDateTimes.mapNotNull { it.toNearDateTime(dateTimeWithActualOffset) - }.minOrNull() ?.toOffset(relatively.offset) + }.minOrNull() ?.toOffsetUnadjusted(offset) ?.toOffset(relatively.offset) } } diff --git a/src/commonTest/kotlin/dev/inmo/krontab/utils/StringParseTest.kt b/src/commonTest/kotlin/dev/inmo/krontab/utils/StringParseTest.kt index 4333187..108c278 100644 --- a/src/commonTest/kotlin/dev/inmo/krontab/utils/StringParseTest.kt +++ b/src/commonTest/kotlin/dev/inmo/krontab/utils/StringParseTest.kt @@ -1,9 +1,8 @@ package dev.inmo.krontab.utils -import com.soywiz.klock.DateTimeTz +import com.soywiz.klock.* import dev.inmo.krontab.KronSchedulerTz import dev.inmo.krontab.buildSchedule -import dev.inmo.krontab.internal.offsetRange import kotlinx.coroutines.* import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.takeWhile @@ -84,9 +83,13 @@ class StringParseTest { val now = DateTimeTz.nowLocal() runTest { - for (i in offsetRange) { - val kronScheduler = buildSchedule("* * 10 * * ${i}o") as KronSchedulerTz + for (i in 0 .. 1339) { + val expectedInCurrentOffset = now.toOffset(TimezoneOffset(i.minutes)) + 1.hours + val kronScheduler = buildSchedule( + "${expectedInCurrentOffset.seconds} ${expectedInCurrentOffset.minutes} ${expectedInCurrentOffset.hours} * * ${i}o" + ) as KronSchedulerTz val next = kronScheduler.next(now) + assertEquals(expectedInCurrentOffset.toOffset(now.offset), next) } } }