Split up test method into smaller ones. Correct code formatting

This commit is contained in:
Marcin Krykowski 2020-05-30 05:32:54 +01:00
parent 5cfe661c8a
commit 3396e92d2d
2 changed files with 60 additions and 52 deletions

View File

@ -7,38 +7,38 @@ import java.text.NumberFormat;
import java.util.Locale; import java.util.Locale;
public class FormatNumber { public class FormatNumber {
public static double withBigDecimal(double value, int places) { public static double withBigDecimal(double value, int places) {
if (places < 0) if (places < 0)
throw new IllegalArgumentException(); throw new IllegalArgumentException();
BigDecimal bigDecimal = new BigDecimal(value); BigDecimal bigDecimal = new BigDecimal(value);
bigDecimal = bigDecimal.setScale(places, RoundingMode.HALF_UP); bigDecimal = bigDecimal.setScale(places, RoundingMode.HALF_UP);
return bigDecimal.doubleValue(); return bigDecimal.doubleValue();
} }
public static double withMathRound(double value, int places) { public static double withMathRound(double value, int places) {
double scale = Math.pow(10, places); double scale = Math.pow(10, places);
return Math.round(value * scale) / scale; return Math.round(value * scale) / scale;
} }
public static double withDecimalFormatPattern(double value, int places) { public static double withDecimalFormatPattern(double value, int places) {
DecimalFormat df2 = new DecimalFormat("#,###,###,##0.00"); DecimalFormat df2 = new DecimalFormat("#,###,###,##0.00");
DecimalFormat df3 = new DecimalFormat("#,###,###,##0.000"); DecimalFormat df3 = new DecimalFormat("#,###,###,##0.000");
if (places == 2) if (places == 2)
return new Double(df2.format(value)); return new Double(df2.format(value));
else if (places == 3) else if (places == 3)
return new Double(df3.format(value)); return new Double(df3.format(value));
else else
throw new IllegalArgumentException(); throw new IllegalArgumentException();
} }
public static double withDecimalFormatLocal(double value) { public static double withDecimalFormatLocal(double value) {
DecimalFormat df = (DecimalFormat) NumberFormat.getNumberInstance(Locale.getDefault()); DecimalFormat df = (DecimalFormat) NumberFormat.getNumberInstance(Locale.getDefault());
return new Double(df.format(value)); return new Double(df.format(value));
} }
public static String withStringFormat(double value, int places) { public static String withStringFormat(double value, int places) {
return String.format("%." + places + "f", value); return String.format("%." + places + "f", value);
} }
} }

View File

@ -6,33 +6,41 @@ import static com.baeldung.formatNumber.FormatNumber.*;
import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.*;
public class FormatNumberUnitTest { public class FormatNumberUnitTest {
private static final double D = 4.2352989244d; private static final double D = 4.2352989244d;
private static final double F = 8.6994540927d; private static final double F = 8.6994540927d;
@Test @Test
public void givenDecimalNumber_whenFormatNumberToNDecimalPlaces_thenGetExpectedResult() { public void givenDecimalNumber_whenFormatNumber_withBigDecimal_thenGetExpectedResult() {
assertThat(withBigDecimal(D, 2)).isEqualTo(4.24);
assertThat(withBigDecimal(D, 3)).isEqualTo(4.235);
assertThat(withBigDecimal(F, 2)).isEqualTo(8.7);
assertThat(withBigDecimal(F, 3)).isEqualTo(8.699);
}
assertThat(withBigDecimal(D, 2)).isEqualTo(4.24); @Test
assertThat(withBigDecimal(D, 3)).isEqualTo(4.235); public void givenDecimalNumber_whenFormatNumber_withDecimalFormat_thenGetExpectedResult() {
assertThat(withBigDecimal(F, 2)).isEqualTo(8.7); assertThat(withDecimalFormatLocal(D)).isEqualTo(4.235);
assertThat(withBigDecimal(F, 3)).isEqualTo(8.699); assertThat(withDecimalFormatLocal(F)).isEqualTo(8.699);
assertThat(withMathRound(D, 2)).isEqualTo(4.24); assertThat(withDecimalFormatPattern(D, 2)).isEqualTo(4.24);
assertThat(withMathRound(D, 3)).isEqualTo(4.235); assertThat(withDecimalFormatPattern(D, 3)).isEqualTo(4.235);
assertThat(withMathRound(F, 2)).isEqualTo(8.7); assertThat(withDecimalFormatPattern(F, 2)).isEqualTo(8.7);
assertThat(withMathRound(F, 3)).isEqualTo(8.699); assertThat(withDecimalFormatPattern(F, 3)).isEqualTo(8.699);
}
assertThat(withStringFormat(D, 2)).isEqualTo("4.24"); @Test
assertThat(withStringFormat(D, 3)).isEqualTo("4.235"); public void givenDecimalNumber_whenFormatNumber_withStringFormat_thenGetExpectedResult() {
assertThat(withStringFormat(F, 2)).isEqualTo("8.70"); assertThat(withStringFormat(D, 2)).isEqualTo("4.24");
assertThat(withStringFormat(F, 3)).isEqualTo("8.699"); assertThat(withStringFormat(D, 3)).isEqualTo("4.235");
assertThat(withStringFormat(F, 2)).isEqualTo("8.70");
assertThat(withStringFormat(F, 3)).isEqualTo("8.699");
}
assertThat(withDecimalFormatLocal(D)).isEqualTo(4.235); @Test
assertThat(withDecimalFormatLocal(F)).isEqualTo(8.699); public void givenDecimalNumber_whenFormatNumber_withMathRound_thenGetExpectedResult() {
assertThat(withMathRound(D, 2)).isEqualTo(4.24);
assertThat(withDecimalFormatPattern(D, 2)).isEqualTo(4.24); assertThat(withMathRound(D, 3)).isEqualTo(4.235);
assertThat(withDecimalFormatPattern(D, 3)).isEqualTo(4.235); assertThat(withMathRound(F, 2)).isEqualTo(8.7);
assertThat(withDecimalFormatPattern(F, 2)).isEqualTo(8.7); assertThat(withMathRound(F, 3)).isEqualTo(8.699);
assertThat(withDecimalFormatPattern(F, 3)).isEqualTo(8.699); }
}
} }