Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Verified Commit 385e3747 authored by Fahim M. Choudhury's avatar Fahim M. Choudhury
Browse files

refactor: improve rounding in app's user rating

parent 158bf822
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ object AppUserRatingFormatter {
    fun roundedNumericValue(rating: Double?): Double? {
        val validRating = rating?.takeIf { it.isFinite() && it >= MIN_VALID_RATING } ?: return null

        return BigDecimal.valueOf(validRating).setScale(1, RoundingMode.HALF_EVEN).toDouble()
        return BigDecimal.valueOf(validRating).setScale(1, RoundingMode.HALF_UP).toDouble()
    }

    fun format(rating: Double?, locale: Locale): String? {
@@ -39,7 +39,7 @@ object AppUserRatingFormatter {
            minimumFractionDigits = 0
            maximumFractionDigits = 1
            isGroupingUsed = false
            roundingMode = RoundingMode.HALF_EVEN
            roundingMode = RoundingMode.HALF_UP
        }.format(roundedRating)
    }
}
+6 −0
Original line number Diff line number Diff line
@@ -62,11 +62,17 @@ class AppUserRatingFormatterTest {
    fun format_roundsUnexpectedPrecision_forUsLocale() {
        assertEquals("4.3", AppUserRatingFormatter.format(4.34, usLocale))
        assertEquals("4.4", AppUserRatingFormatter.format(4.36, usLocale))
        assertEquals("3.3", AppUserRatingFormatter.format(3.34, usLocale))
        assertEquals("3.4", AppUserRatingFormatter.format(3.35, usLocale))
        assertEquals("3.6", AppUserRatingFormatter.format(3.6, usLocale))
    }

    @Test
    fun format_roundsUnexpectedPrecision_forFrenchLocale() {
        assertEquals("4,3", AppUserRatingFormatter.format(4.34, franceLocale))
        assertEquals("4,4", AppUserRatingFormatter.format(4.36, franceLocale))
        assertEquals("3,3", AppUserRatingFormatter.format(3.34, franceLocale))
        assertEquals("3,4", AppUserRatingFormatter.format(3.35, franceLocale))
        assertEquals("3,6", AppUserRatingFormatter.format(3.6, franceLocale))
    }
}