diff --git a/library/android/src/main/java/io/mehow/ruler/ImperialLengthFormatter.kt b/library/android/src/main/java/io/mehow/ruler/ImperialLengthFormatter.kt index a74b1837..16b30f27 100644 --- a/library/android/src/main/java/io/mehow/ruler/ImperialLengthFormatter.kt +++ b/library/android/src/main/java/io/mehow/ruler/ImperialLengthFormatter.kt @@ -22,7 +22,10 @@ public class ImperialLengthFormatter internal constructor( override fun Length<*>.format(unitSeparator: String, context: Context): String { val parts = distance.abs().formatUnitParts(context, unitSeparator) val noSignText = when { - parts.isEmpty() -> fallbackFormatter.format(0, context, unitSeparator) + parts.isEmpty() -> { + val fallbackUnitCount = distance.abs().toLength(fallbackFormatter.unit).measure.toLong() + fallbackFormatter.format(fallbackUnitCount, context, unitSeparator) + } else -> parts.joinToString(partSeparator) } return when { diff --git a/library/android/src/test/java/io/mehow/ruler/ImperialLengthFormatterTest.kt b/library/android/src/test/java/io/mehow/ruler/ImperialLengthFormatterTest.kt index 73f429ab..ba178a8e 100644 --- a/library/android/src/test/java/io/mehow/ruler/ImperialLengthFormatterTest.kt +++ b/library/android/src/test/java/io/mehow/ruler/ImperialLengthFormatterTest.kt @@ -183,4 +183,16 @@ internal class ImperialLengthFormatterTest { formattedDistance shouldBe "10ميل 11ياردة 2قدم 7بوصة" } + + @Test fun `imperial formatter without specified parts has a fallback`() { + val distance = Distance.ofMiles(10) + + Distance.ofYards(11) + + Distance.ofFeet(2) + + Distance.ofInches(7) + val formatter = ImperialLengthFormatter.Builder().build() + + val formattedDistance = distance.format(context, formatter = formatter, converter = null) + + formattedDistance shouldBe "17611yd" + } }