test: Implement unit tests for Utils.kt
This commit is contained in:
@@ -10,24 +10,30 @@ package org.nsh07.pomodoro.utils
|
||||
import java.util.Locale
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
fun millisecondsToStr(t: Long): String =
|
||||
String.format(
|
||||
fun millisecondsToStr(t: Long): String {
|
||||
require(t >= 0L)
|
||||
return String.format(
|
||||
Locale.getDefault(),
|
||||
"%02d:%02d",
|
||||
TimeUnit.MILLISECONDS.toMinutes(t),
|
||||
TimeUnit.MILLISECONDS.toSeconds(t) % TimeUnit.MINUTES.toSeconds(1)
|
||||
)
|
||||
}
|
||||
|
||||
fun millisecondsToHours(t: Long): String =
|
||||
String.format(
|
||||
fun millisecondsToHours(t: Long): String {
|
||||
require(t >= 0L)
|
||||
return String.format(
|
||||
Locale.getDefault(),
|
||||
"%dh",
|
||||
TimeUnit.MILLISECONDS.toHours(t)
|
||||
)
|
||||
}
|
||||
|
||||
fun millisecondsToHoursMinutes(t: Long): String =
|
||||
String.format(
|
||||
fun millisecondsToHoursMinutes(t: Long): String {
|
||||
require(t >= 0L)
|
||||
return String.format(
|
||||
Locale.getDefault(),
|
||||
"%dh %dm", TimeUnit.MILLISECONDS.toHours(t),
|
||||
TimeUnit.MILLISECONDS.toMinutes(t) % TimeUnit.HOURS.toMinutes(1)
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package org.nsh07.pomodoro
|
||||
|
||||
import org.junit.Test
|
||||
|
||||
import org.junit.Assert.*
|
||||
|
||||
/**
|
||||
* Example local unit test, which will execute on the development machine (host).
|
||||
*
|
||||
* See [testing documentation](http://d.android.com/tools/testing).
|
||||
*/
|
||||
class ExampleUnitTest {
|
||||
@Test
|
||||
fun addition_isCorrect() {
|
||||
assertEquals(4, 2 + 2)
|
||||
}
|
||||
}
|
||||
165
app/src/test/java/org/nsh07/pomodoro/utils/UtilsKtTest.kt
Normal file
165
app/src/test/java/org/nsh07/pomodoro/utils/UtilsKtTest.kt
Normal file
@@ -0,0 +1,165 @@
|
||||
/*
|
||||
* Copyright (c) 2025 Nishant Mishra
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.nsh07.pomodoro.utils
|
||||
|
||||
import junit.framework.TestCase.assertEquals
|
||||
import junit.framework.TestCase.assertTrue
|
||||
import org.junit.Assert.assertThrows
|
||||
import org.junit.Test
|
||||
|
||||
class UtilsKtTest {
|
||||
|
||||
@Test
|
||||
fun `millisecondsToStr zero milliseconds`() {
|
||||
assertEquals("00:00", millisecondsToStr(0))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToStr positive milliseconds less than a second`() {
|
||||
assertEquals("00:00", millisecondsToStr(999))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToStr exactly one second`() {
|
||||
assertEquals("00:01", millisecondsToStr(1000))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToStr positive milliseconds less than a minute`() {
|
||||
assertEquals("00:59", millisecondsToStr(59999))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToStr exactly one minute`() {
|
||||
assertEquals("01:00", millisecondsToStr(60000))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToStr positive milliseconds more than a minute`() {
|
||||
assertEquals("01:01", millisecondsToStr(61999))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToStr large milliseconds value`() {
|
||||
assertEquals("99:59", millisecondsToStr(5999999))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToStr negative milliseconds`() {
|
||||
val exception = assertThrows(IllegalArgumentException::class.java) {
|
||||
millisecondsToStr(-1)
|
||||
}
|
||||
assertTrue(
|
||||
"millisecondsToStr should throw IllegalArgumentException for negative values",
|
||||
exception is IllegalArgumentException
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToStr Long MAX VALUE`() {
|
||||
assertEquals("153722867280912:55", millisecondsToStr(Long.MAX_VALUE))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHours zero milliseconds`() {
|
||||
assertEquals("0h", millisecondsToHours(0))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHours less than an hour`() {
|
||||
assertEquals("0h", millisecondsToHours(3599999))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHours exactly one hour`() {
|
||||
assertEquals("1h", millisecondsToHours(3600000))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHours multiple hours`() {
|
||||
assertEquals("2h", millisecondsToHours(7200000))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHours large number of hours`() {
|
||||
assertEquals("25h", millisecondsToHours(25 * 3600000))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHours negative milliseconds`() {
|
||||
val exception = assertThrows(IllegalArgumentException::class.java) {
|
||||
millisecondsToHours(-1)
|
||||
}
|
||||
assertTrue(
|
||||
"millisecondsToHours should throw IllegalArgumentException for negative values",
|
||||
exception is IllegalArgumentException
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHours Long MAX VALUE`() {
|
||||
assertEquals("2562047788015h", millisecondsToHours(Long.MAX_VALUE))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHoursMinutes zero milliseconds`() {
|
||||
assertEquals("0h 0m", millisecondsToHoursMinutes(0))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHoursMinutes less than a minute`() {
|
||||
assertEquals("0h 0m", millisecondsToHoursMinutes(59999))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHoursMinutes exactly one minute`() {
|
||||
assertEquals("0h 1m", millisecondsToHoursMinutes(60000))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHoursMinutes less than an hour but more than a minute`() {
|
||||
assertEquals("0h 59m", millisecondsToHoursMinutes(3599999))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHoursMinutes exactly one hour`() {
|
||||
assertEquals("1h 0m", millisecondsToHoursMinutes(3600000))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHoursMinutes hours and minutes`() {
|
||||
assertEquals("1h 1m", millisecondsToHoursMinutes(3660000))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHoursMinutes multiple hours and minutes`() {
|
||||
assertEquals("2h 3m", millisecondsToHoursMinutes(7380000))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHoursMinutes just less than 2 hours`() {
|
||||
assertEquals("1h 59m", millisecondsToHoursMinutes(3600000 + 3599999))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHoursMinutes negative milliseconds`() {
|
||||
val exception = assertThrows(IllegalArgumentException::class.java) {
|
||||
millisecondsToHoursMinutes(-1)
|
||||
}
|
||||
assertTrue(
|
||||
"millisecondsToHoursMinutes should throw IllegalArgumentException for negative values",
|
||||
exception is IllegalArgumentException
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `millisecondsToHoursMinutes Long MAX VALUE`() {
|
||||
assertEquals("2562047788015h 12m", millisecondsToHoursMinutes(Long.MAX_VALUE))
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user