refactor(android): add shared formatDuration + ms/sec conversion helpers
This commit is contained in:
@@ -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())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user