Skip to content

Commit

Permalink
fix: correct units display
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasser committed Feb 20, 2025
1 parent 71142cd commit c657a07
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,12 @@ public static String formatWithUnits(final double qty) {
return switch ((int) Math.floor(Math.log10(qty) / 3)) {
case -1 -> FORMATTER_WITH_UNITS.format(qty * 10e2) + "m";
case 0 -> FORMATTER_WITH_UNITS.format(qty >= 100 ? Math.floor(qty) : qty);
case 1 -> FORMATTER_WITH_UNITS.format(qty >= 10e4 ? Math.floor(qty / 10e2) : qty / 10e2) + "K";
case 1 -> FORMATTER_WITH_UNITS.format(qty >= 10e4 ? Math.floor(qty / 10e2) : qty / 10e2) + "k";
case 2 -> FORMATTER_WITH_UNITS.format(qty >= 10e7 ? Math.floor(qty / 10e5) : qty / 10e5) + "M";
case 3 -> FORMATTER_WITH_UNITS.format(qty >= 10e9 ? Math.floor(qty / 10e8) : qty / 10e8) + "B";
case 4 -> FORMATTER_WITH_UNITS.format(qty >= 10e12 ? Math.floor(qty / 10e11) : qty / 10e11) + "G";
case 5 -> FORMATTER_WITH_UNITS.format(qty >= 10e15 ? Math.floor(qty / 10e14) : qty / 10e14) + "T";
case 3 -> FORMATTER_WITH_UNITS.format(qty >= 10e10 ? Math.floor(qty / 10e8) : qty / 10e8) + "G";
case 4 -> FORMATTER_WITH_UNITS.format(qty >= 10e13 ? Math.floor(qty / 10e11) : qty / 10e11) + "T";
case 5 -> FORMATTER_WITH_UNITS.format(qty >= 10e16 ? Math.floor(qty / 10e14) : qty / 10e14) + "P";
case 6 -> FORMATTER_WITH_UNITS.format(qty >= 10e19 ? Math.floor(qty / 10e17) : qty / 10e17) + "E";
default -> "∞";
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ void shouldFormatWithUnitsForCompleteBuckets() {
assertThat(sut.formatAmount(BUCKET_AMOUNT, true)).isEqualTo("1b");
assertThat(sut.formatAmount(BUCKET_AMOUNT * 2, true)).isEqualTo("2b");
assertThat(sut.formatAmount(BUCKET_AMOUNT * 3, true)).isEqualTo("3b");
assertThat(sut.formatAmount(BUCKET_AMOUNT * 1000, true)).isEqualTo("1Kb");
assertThat(sut.formatAmount(BUCKET_AMOUNT * 1000, true)).isEqualTo("1kb");
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,20 +30,20 @@ void shouldFormatWithUnitsForSmallNumber() {
@Test
void shouldFormatWithUnitsForThousands() {
// Act & assert
assertThat(formatWithUnits(1000)).isEqualTo("1K");
assertThat(formatWithUnits(1510)).isEqualTo("1.5K");
assertThat(formatWithUnits(1000)).isEqualTo("1k");
assertThat(formatWithUnits(1510)).isEqualTo("1.5k");

assertThat(formatWithUnits(10_000)).isEqualTo("10K");
assertThat(formatWithUnits(10_510)).isEqualTo("10.5K");
assertThat(formatWithUnits(99_999)).isEqualTo("99.9K");
assertThat(formatWithUnits(10_000)).isEqualTo("10k");
assertThat(formatWithUnits(10_510)).isEqualTo("10.5k");
assertThat(formatWithUnits(99_999)).isEqualTo("99.9k");

assertThat(formatWithUnits(100_000)).isEqualTo("100K");
assertThat(formatWithUnits(100_500)).isEqualTo("100K");
assertThat(formatWithUnits(100_999)).isEqualTo("100K");
assertThat(formatWithUnits(100_000)).isEqualTo("100k");
assertThat(formatWithUnits(100_500)).isEqualTo("100k");
assertThat(formatWithUnits(100_999)).isEqualTo("100k");

assertThat(formatWithUnits(101_000)).isEqualTo("101K");
assertThat(formatWithUnits(101_500)).isEqualTo("101K");
assertThat(formatWithUnits(101_999)).isEqualTo("101K");
assertThat(formatWithUnits(101_000)).isEqualTo("101k");
assertThat(formatWithUnits(101_500)).isEqualTo("101k");
assertThat(formatWithUnits(101_999)).isEqualTo("101k");
}

@Test
Expand All @@ -68,11 +68,31 @@ void shouldFormatWithUnitsForMillions() {
@Test
void shouldFormatWithUnitsForBillions() {
// Act & assert
assertThat(formatWithUnits(1_000_000_000)).isEqualTo("1B");
assertThat(formatWithUnits(1_010_000_000)).isEqualTo("1B");
assertThat(formatWithUnits(1_100_000_000)).isEqualTo("1.1B");
assertThat(formatWithUnits(1_100_001_000)).isEqualTo("1.1B");
assertThat(formatWithUnits(1_920_001_000)).isEqualTo("1.9B");
assertThat(formatWithUnits(1_000_000_000)).isEqualTo("1G");
assertThat(formatWithUnits(1_010_000_000)).isEqualTo("1G");
assertThat(formatWithUnits(1_100_000_000)).isEqualTo("1.1G");
assertThat(formatWithUnits(1_100_001_000)).isEqualTo("1.1G");
assertThat(formatWithUnits(1_920_001_000)).isEqualTo("1.9G");
}

@Test
void shouldFormatWithUnitsForTrillions() {
// Act & assert
assertThat(formatWithUnits(1e12)).isEqualTo("1T");
assertThat(formatWithUnits(1.01e12)).isEqualTo("1T");
assertThat(formatWithUnits(1.1e12)).isEqualTo("1.1T");
assertThat(formatWithUnits(1.100_001e12)).isEqualTo("1.1T");
assertThat(formatWithUnits(1.920_001e12)).isEqualTo("1.9T");
}

@Test
void shouldFormatWithUnitsForQuadrillions() {
// Act & assert
assertThat(formatWithUnits(1e15)).isEqualTo("1P");
assertThat(formatWithUnits(1.01e15)).isEqualTo("1P");
assertThat(formatWithUnits(1.1e15)).isEqualTo("1.1P");
assertThat(formatWithUnits(1.100_001e15)).isEqualTo("1.1P");
assertThat(formatWithUnits(1.920_001e15)).isEqualTo("1.9P");
}

@Test
Expand Down

0 comments on commit c657a07

Please sign in to comment.