From 150dcefb2c3a5636c29752ffabb202c9eff39fcd Mon Sep 17 00:00:00 2001 From: sgallese Date: Sun, 26 Sep 2021 06:12:59 -0700 Subject: [PATCH] Migrate getWeekdaySequence --- .../activities/common/views/FrequencyChart.kt | 2 +- .../kotlin/org/isoron/platform/time/Dates.kt | 23 +++++++++++++++++++ .../org/isoron/platform/time/DatesTest.kt | 8 +++++++ .../isoron/uhabits/core/utils/DateUtils.kt | 22 ------------------ .../uhabits/core/utils/DateUtilsTest.kt | 6 ----- 5 files changed, 32 insertions(+), 29 deletions(-) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.kt index c4bad1a96..3af86f454 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/FrequencyChart.kt @@ -23,12 +23,12 @@ import android.graphics.Canvas import android.graphics.Paint import android.graphics.RectF import android.util.AttributeSet +import org.isoron.platform.time.LocalDate.Companion.getWeekdaySequence import org.isoron.uhabits.R import org.isoron.uhabits.core.models.Timestamp import org.isoron.uhabits.core.utils.DateUtils.Companion.getShortWeekdayNames import org.isoron.uhabits.core.utils.DateUtils.Companion.getStartOfTodayCalendar import org.isoron.uhabits.core.utils.DateUtils.Companion.getStartOfTodayCalendarWithOffset -import org.isoron.uhabits.core.utils.DateUtils.Companion.getWeekdaySequence import org.isoron.uhabits.utils.ColorUtils.mixColors import org.isoron.uhabits.utils.StyledResources import org.isoron.uhabits.utils.toSimpleDataFormat diff --git a/uhabits-core/src/commonMain/kotlin/org/isoron/platform/time/Dates.kt b/uhabits-core/src/commonMain/kotlin/org/isoron/platform/time/Dates.kt index 254414b06..fbce2bc80 100644 --- a/uhabits-core/src/commonMain/kotlin/org/isoron/platform/time/Dates.kt +++ b/uhabits-core/src/commonMain/kotlin/org/isoron/platform/time/Dates.kt @@ -25,6 +25,7 @@ import kotlinx.datetime.Instant import kotlinx.datetime.TimeZone import kotlinx.datetime.offsetAt import org.isoron.platform.i18n.getDefault +import kotlin.jvm.JvmStatic import kotlin.math.abs import kotlin.math.ceil @@ -160,6 +161,28 @@ data class LocalDate(val daysSince2000: Int) { fun getLocale(): Locale { return fixedLocale ?: Locale.getDefault() } + + /** + * Returns a vector of exactly seven integers, where the first integer is + * the provided firstWeekday number, and each subsequent number is the + * previous number plus 1, wrapping back to 1 after 7. For example, + * providing 3 as firstWeekday returns {3,4,5,6,7,1,2} + * + * This function is supposed to be used to construct a sequence of weekday + * number following java.util.Calendar conventions. + */ + @JvmStatic + fun getWeekdaySequence(firstWeekday: Int): Array { + return arrayOf( + (firstWeekday - 1) % 7 + 1, + (firstWeekday) % 7 + 1, + (firstWeekday + 1) % 7 + 1, + (firstWeekday + 2) % 7 + 1, + (firstWeekday + 3) % 7 + 1, + (firstWeekday + 4) % 7 + 1, + (firstWeekday + 5) % 7 + 1, + ) + } } } diff --git a/uhabits-core/src/commonTest/kotlin/org/isoron/platform/time/DatesTest.kt b/uhabits-core/src/commonTest/kotlin/org/isoron/platform/time/DatesTest.kt index 53f328c4e..38958cfab 100644 --- a/uhabits-core/src/commonTest/kotlin/org/isoron/platform/time/DatesTest.kt +++ b/uhabits-core/src/commonTest/kotlin/org/isoron/platform/time/DatesTest.kt @@ -22,7 +22,9 @@ package org.isoron.platform.time import kotlinx.datetime.LocalDateTime import kotlinx.datetime.TimeZone import kotlinx.datetime.toInstant +import org.isoron.platform.time.LocalDate.Companion.getWeekdaySequence import kotlin.test.Test +import kotlin.test.assertContentEquals import kotlin.test.assertEquals class DatesTest { @@ -46,4 +48,10 @@ class DatesTest { val expectedUnixTimeForSydney = utcTestTimeInMillis + expectedUnixTimeOffsetForSydney assertEquals(expectedUnixTimeForSydney, localTimeInMillis) } + + @Test + fun testGetWeekdaySequence() { + val weekdaySequence = getWeekdaySequence(3) + assertContentEquals(arrayOf(3, 4, 5, 6, 7, 1, 2), weekdaySequence) + } } diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/utils/DateUtils.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/utils/DateUtils.kt index cdce9ce98..fad335dfa 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/utils/DateUtils.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/utils/DateUtils.kt @@ -119,28 +119,6 @@ abstract class DateUtils { return daysNullable.toTypedArray() } - /** - * Returns a vector of exactly seven integers, where the first integer is - * the provided firstWeekday number, and each subsequent number is the - * previous number plus 1, wrapping back to 1 after 7. For example, - * providing 3 as firstWeekday returns {3,4,5,6,7,1,2} - * - * This function is supposed to be used to construct a sequence of weekday - * number following java.util.Calendar conventions. - */ - @JvmStatic - fun getWeekdaySequence(firstWeekday: Int): Array { - return arrayOf( - (firstWeekday - 1) % 7 + 1, - (firstWeekday) % 7 + 1, - (firstWeekday + 1) % 7 + 1, - (firstWeekday + 2) % 7 + 1, - (firstWeekday + 3) % 7 + 1, - (firstWeekday + 4) % 7 + 1, - (firstWeekday + 5) % 7 + 1, - ) - } - /** * @return An integer representing the first day of the week, according to * the current locale. Sunday corresponds to 1, Monday to 2, and so on, diff --git a/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/utils/DateUtilsTest.kt b/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/utils/DateUtilsTest.kt index 2fbbb7c98..40996be8a 100644 --- a/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/utils/DateUtilsTest.kt +++ b/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/utils/DateUtilsTest.kt @@ -68,12 +68,6 @@ class DateUtilsTest : BaseUnitTest() { assertThat(expectedUnixTimeForSydney, equalTo(localTimeInMillis)) } - @Test - fun testGetWeekdaySequence() { - val weekdaySequence = DateUtils.getWeekdaySequence(3) - assertThat(arrayOf(3, 4, 5, 6, 7, 1, 2), equalTo(weekdaySequence)) - } - @Test fun testGetFirstWeekdayNumberAccordingToLocale_germany() { LocalDate.fixedLocale = Locale.forLanguageTag("de-de")