From 76b195d8c09b4e1e441e131d3e72f915f0b460b1 Mon Sep 17 00:00:00 2001 From: sgallese Date: Sun, 19 Sep 2021 21:55:00 -0700 Subject: [PATCH] Tests for DateUtils and FileExtensions --- .../isoron/uhabits/core/utils/DateUtils.kt | 8 +-- .../uhabits/core/utils/DateUtilsTest.kt | 59 +++++++++++++++++++ .../uhabits/core/utils/FileExtensionsTest.kt | 17 ++++++ 3 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/utils/FileExtensionsTest.kt 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 8af545504..e812bc2ca 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 @@ -77,11 +77,11 @@ abstract class DateUtils { } @JvmStatic - fun getLocalTime(): Long { + fun getLocalTime(testTimeInMillis: Long? = null): Long { if (fixedLocalTime != null) return fixedLocalTime as Long val tz = getTimeZone() - val now = Date().time + val now = testTimeInMillis ?: Date().time return now + tz.getOffset(now) } @@ -100,7 +100,7 @@ abstract class DateUtils { format: Int, firstWeekDay: Int ): Array { - val calendar = GregorianCalendar() + val calendar = GregorianCalendar(getLocale()) calendar.set(DAY_OF_WEEK, firstWeekDay) val daysNullable = ArrayList() @@ -149,7 +149,7 @@ abstract class DateUtils { */ @JvmStatic fun getFirstWeekdayNumberAccordingToLocale(): Int { - return GregorianCalendar().firstDayOfWeek + return GregorianCalendar(getLocale()).firstDayOfWeek } /** 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 1b440279e..5519ff1ed 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 @@ -58,6 +58,65 @@ class DateUtilsTest : BaseUnitTest() { assertThat(formatted, equalTo("Thu\n31")) } + @Test + fun testGetLocalTime() { + setFixedLocalTime(null) + setFixedTimeZone(TimeZone.getTimeZone("Australia/Sydney")) + val utcTestTimeInMillis = unixTime(2015, Calendar.JANUARY, 11) + val localTimeInMillis = DateUtils.getLocalTime(utcTestTimeInMillis) + val expectedUnixTimeOffsetForSydney = 11 * 60 * 60 * 1000 + val expectedUnixTimeForSydney = utcTestTimeInMillis + expectedUnixTimeOffsetForSydney + 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() { + setFixedLocale(Locale.GERMANY) + val firstWeekdayNumber = DateUtils.getFirstWeekdayNumberAccordingToLocale() + assertThat(2, equalTo(firstWeekdayNumber)) + } + + @Test + fun testGetFirstWeekdayNumberAccordingToLocale_us() { + setFixedLocale(Locale.US) + val firstWeekdayNumber = DateUtils.getFirstWeekdayNumberAccordingToLocale() + assertThat(1, equalTo(firstWeekdayNumber)) + } + + @Test + fun testGetLongWeekdayNames_germany() { + setFixedLocale(Locale.GERMANY) + val longWeekdayNames = DateUtils.getLongWeekdayNames(Calendar.SATURDAY) + assertThat(arrayOf("Samstag", "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag"), equalTo(longWeekdayNames)) + } + + @Test + fun testGetLongWeekdayNames_us() { + setFixedLocale(Locale.US) + val longWeekdayNames = DateUtils.getLongWeekdayNames(Calendar.SATURDAY) + assertThat(arrayOf("Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"), equalTo(longWeekdayNames)) + } + + @Test + fun testGetShortWeekdayNames_germany() { + setFixedLocale(Locale.GERMANY) + val longWeekdayNames = DateUtils.getShortWeekdayNames(Calendar.SATURDAY) + assertThat(arrayOf("Sa.", "So.", "Mo.", "Di.", "Mi.", "Do.", "Fr."), equalTo(longWeekdayNames)) + } + + @Test + fun testGetShortWeekdayNames_us() { + setFixedLocale(Locale.US) + val longWeekdayNames = DateUtils.getShortWeekdayNames(Calendar.SATURDAY) + assertThat(arrayOf("Sat", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri"), equalTo(longWeekdayNames)) + } + @Test fun testTruncate_dayOfWeek() { val field = DateUtils.TruncateField.WEEK_NUMBER diff --git a/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/utils/FileExtensionsTest.kt b/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/utils/FileExtensionsTest.kt new file mode 100644 index 000000000..627422608 --- /dev/null +++ b/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/utils/FileExtensionsTest.kt @@ -0,0 +1,17 @@ +package org.isoron.uhabits.core.utils + +import org.isoron.uhabits.core.BaseUnitTest +import org.junit.Test +import java.io.File +import kotlin.test.assertTrue + +class FileExtensionsTest : BaseUnitTest() { + + @Test + fun testIsSQLite3File() { + val file = File.createTempFile("asset", "") + copyAssetToFile("loop.db", file) + val isSqlite3File = file.isSQLite3File() + assertTrue(isSqlite3File) + } +}