mirror of
https://github.com/InsanusMokrassar/krontab.git
synced 2024-11-26 20:18:54 +00:00
fixes for Tz
This commit is contained in:
parent
5c81eede9c
commit
3408d58cb7
@ -1,7 +1,6 @@
|
|||||||
package dev.inmo.krontab
|
package dev.inmo.krontab
|
||||||
|
|
||||||
import com.soywiz.klock.DateTime
|
import com.soywiz.klock.DateTime
|
||||||
import com.soywiz.klock.DateTimeTz
|
|
||||||
import dev.inmo.krontab.internal.toNearDateTime
|
import dev.inmo.krontab.internal.toNearDateTime
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -13,6 +12,7 @@ import dev.inmo.krontab.internal.toNearDateTime
|
|||||||
* @see dev.inmo.krontab.internal.CronDateTimeScheduler
|
* @see dev.inmo.krontab.internal.CronDateTimeScheduler
|
||||||
*/
|
*/
|
||||||
interface KronScheduler {
|
interface KronScheduler {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Next [DateTime] when some action must be triggered according to settings of this instance
|
* @return Next [DateTime] when some action must be triggered according to settings of this instance
|
||||||
*
|
*
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package dev.inmo.krontab
|
package dev.inmo.krontab
|
||||||
|
|
||||||
import com.soywiz.klock.DateTime
|
import com.soywiz.klock.DateTime
|
||||||
import com.soywiz.klock.DateTimeTz
|
|
||||||
import dev.inmo.krontab.builder.buildSchedule
|
import dev.inmo.krontab.builder.buildSchedule
|
||||||
import dev.inmo.krontab.internal.*
|
import dev.inmo.krontab.internal.*
|
||||||
import dev.inmo.krontab.internal.CronDateTime
|
import dev.inmo.krontab.internal.CronDateTime
|
||||||
|
@ -14,10 +14,10 @@ internal data class CronDateTimeSchedulerTz internal constructor(
|
|||||||
internal val offset: TimezoneOffset
|
internal val offset: TimezoneOffset
|
||||||
) : KronSchedulerTz {
|
) : KronSchedulerTz {
|
||||||
override suspend fun next(relatively: DateTimeTz): DateTimeTz? {
|
override suspend fun next(relatively: DateTimeTz): DateTimeTz? {
|
||||||
val dateTimeWithActualOffset = relatively.utc.toOffset(offset).local
|
val dateTimeWithActualOffset = relatively.toOffset(offset).local
|
||||||
return cronDateTimes.mapNotNull {
|
return cronDateTimes.mapNotNull {
|
||||||
it.toNearDateTime(dateTimeWithActualOffset)
|
it.toNearDateTime(dateTimeWithActualOffset)
|
||||||
}.minOrNull() ?.toOffset(relatively.offset)
|
}.minOrNull() ?.toOffsetUnadjusted(offset) ?.toOffset(relatively.offset)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
package dev.inmo.krontab.utils
|
package dev.inmo.krontab.utils
|
||||||
|
|
||||||
import com.soywiz.klock.DateTimeTz
|
import com.soywiz.klock.*
|
||||||
import dev.inmo.krontab.KronSchedulerTz
|
import dev.inmo.krontab.KronSchedulerTz
|
||||||
import dev.inmo.krontab.buildSchedule
|
import dev.inmo.krontab.buildSchedule
|
||||||
import dev.inmo.krontab.internal.offsetRange
|
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
import kotlinx.coroutines.flow.takeWhile
|
import kotlinx.coroutines.flow.takeWhile
|
||||||
@ -84,9 +83,13 @@ class StringParseTest {
|
|||||||
val now = DateTimeTz.nowLocal()
|
val now = DateTimeTz.nowLocal()
|
||||||
|
|
||||||
runTest {
|
runTest {
|
||||||
for (i in offsetRange) {
|
for (i in 0 .. 1339) {
|
||||||
val kronScheduler = buildSchedule("* * 10 * * ${i}o") as KronSchedulerTz
|
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)
|
val next = kronScheduler.next(now)
|
||||||
|
assertEquals(expectedInCurrentOffset.toOffset(now.offset), next)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user