refactor(android): add shared formatDuration + ms/sec conversion helpers

This commit is contained in:
2026-05-29 14:38:52 -04:00
parent d7dda2fcef
commit 4015fb145d
2 changed files with 50 additions and 0 deletions
@@ -0,0 +1,23 @@
package com.fabledsword.minstrel.shared
const val MILLIS_PER_SECOND = 1000
private const val SECONDS_PER_MINUTE = 60
/**
* Formats [seconds] as m:ss. Returns [zero] when [seconds] <= 0 — pass
* "--:--" for unknown track durations, "0:00" (default) for playback
* position/duration. The single mm:ss formatter for the client.
*/
fun formatDuration(seconds: Int, zero: String = "0:00"): String =
if (seconds <= 0) {
zero
} else {
"%d:%02d".format(seconds / SECONDS_PER_MINUTE, seconds % SECONDS_PER_MINUTE)
}
fun Int.secondsToMillis(): Int = this * MILLIS_PER_SECOND
fun Int.millisToSeconds(): Int = this / MILLIS_PER_SECOND
fun Long.millisToSeconds(): Int = (this / MILLIS_PER_SECOND).toInt()
@@ -0,0 +1,27 @@
package com.fabledsword.minstrel.shared
import org.junit.jupiter.api.Test
import kotlin.test.assertEquals
class FormattingTest {
@Test
fun `formatDuration formats minutes and seconds`() {
assertEquals("0:05", formatDuration(5))
assertEquals("2:05", formatDuration(125))
assertEquals("10:00", formatDuration(600))
}
@Test
fun `formatDuration uses the zero string for non-positive input`() {
assertEquals("0:00", formatDuration(0))
assertEquals("0:00", formatDuration(-3))
assertEquals("--:--", formatDuration(0, zero = "--:--"))
}
@Test
fun `conversions round-trip seconds and millis`() {
assertEquals(5000, 5.secondsToMillis())
assertEquals(5, 5000.millisToSeconds())
assertEquals(5, 5000L.millisToSeconds())
}
}