diff --git a/app/src/main/java/com/bnyro/clock/util/TimeHelper.kt b/app/src/main/java/com/bnyro/clock/util/TimeHelper.kt index b189857d..8c877943 100644 --- a/app/src/main/java/com/bnyro/clock/util/TimeHelper.kt +++ b/app/src/main/java/com/bnyro/clock/util/TimeHelper.kt @@ -61,12 +61,18 @@ object TimeHelper { } + /** + * Converts milliseconds to a formatted time string. + * + * @param millis The milliseconds since midnight. + * @return The formatted time string. + */ fun millisToFormatted(millis: Long): String { val timeFormatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT) val localTime = LocalTime.of( millis.div(1000 * 60 * 60).toInt(), millis.div(1000 * 60).mod(60), - millis.mod(1000) + millis.div(1000).mod(60) ) return timeFormatter.format(localTime) } diff --git a/app/src/test/java/com/bnyro/clock/TimeFormatterTest.kt b/app/src/test/java/com/bnyro/clock/TimeFormatterTest.kt new file mode 100644 index 00000000..3cb7aaba --- /dev/null +++ b/app/src/test/java/com/bnyro/clock/TimeFormatterTest.kt @@ -0,0 +1,35 @@ +package com.bnyro.clock + +import com.bnyro.clock.util.TimeHelper.millisToFormatted +import org.junit.Assert.assertEquals +import org.junit.Test +import java.time.LocalTime +import java.time.format.DateTimeFormatter +import java.time.format.FormatStyle + +class TimeFormatterTest { + + @Test + fun millisToFormatted_convertsMillisToFormattedTime() { + // Test case 1: Midnight + val millis1 = 0L + val formattedTime1 = millisToFormatted(millis1) + val expectedTime1 = + LocalTime.MIDNIGHT.format(DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT)) + assertEquals(expectedTime1, formattedTime1) + + // Test case 2: Afternoon time + val millis2 = 12 * 60 * 60 * 1000L // 12:00:00 PM + val formattedTime2 = millisToFormatted(millis2) + val expectedTime2 = + LocalTime.NOON.format(DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT)) + assertEquals(expectedTime2, formattedTime2) + + // Test case 3: Time with milliseconds + val millis3 = ((10 * 60 + 33) * 60 + 54) * 1000L + 567L // 10:33:54.567 AM + val formattedTime3 = millisToFormatted(millis3) + val expectedTime3 = LocalTime.of(10, 33, 54, 567_000_000) + .format(DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT)) + assertEquals(expectedTime3, formattedTime3) + } +} \ No newline at end of file