fix of #34 and upfix for #27

This commit is contained in:
InsanusMokrassar 2022-06-15 13:27:21 +06:00
parent 58f30aef15
commit 8ac6cd3e62
2 changed files with 15 additions and 7 deletions

View File

@ -101,7 +101,7 @@ internal fun NearDateTimeCalculatorDays(
times: Array<Byte>
) = CommonNearDateTimeCalculator(
times,
{ it.dayOfMonth.toByte() },
{ (it.dayOfMonth - 1).toByte() },
{ dateTime, newOne ->
val dateTime = (if (newOne < dateTime.dayOfMonth) {
dateTime.plus(1.months)
@ -109,7 +109,7 @@ internal fun NearDateTimeCalculatorDays(
dateTime
})
dateTime.copy(
dayOfMonth = min(dateTime.month.days(dateTime.year) - 1, newOne.toInt()), // index1
dayOfMonth = min(dateTime.month.days(dateTime.year), newOne.toInt() + 1), // index1
hour = 0,
minute = 0,
second = 0,
@ -122,7 +122,7 @@ internal fun NearDateTimeCalculatorMonths(
times: Array<Byte>
) = CommonNearDateTimeCalculator(
times,
{ it.dayOfMonth.toByte() },
{ it.month0.toByte() },
{ dateTime, newOne ->
(if (newOne < dateTime.month0) {
dateTime.plus(1.years)

View File

@ -1,14 +1,22 @@
package dev.inmo.krontab.utils
import com.soywiz.klock.DateTime
import com.soywiz.klock.days
import dev.inmo.krontab.buildSchedule
import kotlin.test.Test
import kotlin.test.assertNotNull
import kotlin.test.*
class InfinityLoopCheckTest {
@Test
fun absenceOfInfinityLoopCheckTest() {
runTest {
assertNotNull(buildSchedule("0 0 0 1 *").next())
val now = DateTime.now().startOfYear.startOfDay
for (i in 0 until now.year.days) {
val scheduleDateTime = (now + i.days)
runTest {
assertEquals(
scheduleDateTime,
buildSchedule("0 0 0 ${scheduleDateTime.dayOfMonth - 1} ${scheduleDateTime.month0}").next(now)
)
}
}
}
}