Loading app/src/main/java/foundation/e/apps/ui/utils/AppUserRatingFormatter.kt +2 −2 Original line number Diff line number Diff line Loading @@ -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? { Loading @@ -39,7 +39,7 @@ object AppUserRatingFormatter { minimumFractionDigits = 0 maximumFractionDigits = 1 isGroupingUsed = false roundingMode = RoundingMode.HALF_EVEN roundingMode = RoundingMode.HALF_UP }.format(roundedRating) } } app/src/test/java/foundation/e/apps/ui/utils/AppUserRatingFormatterTest.kt +6 −0 Original line number Diff line number Diff line Loading @@ -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)) } } Loading
app/src/main/java/foundation/e/apps/ui/utils/AppUserRatingFormatter.kt +2 −2 Original line number Diff line number Diff line Loading @@ -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? { Loading @@ -39,7 +39,7 @@ object AppUserRatingFormatter { minimumFractionDigits = 0 maximumFractionDigits = 1 isGroupingUsed = false roundingMode = RoundingMode.HALF_EVEN roundingMode = RoundingMode.HALF_UP }.format(roundedRating) } }
app/src/test/java/foundation/e/apps/ui/utils/AppUserRatingFormatterTest.kt +6 −0 Original line number Diff line number Diff line Loading @@ -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)) } }