### Question:
HalfUpRounding implements Rounding, ImmutableBean, Serializable { public static HalfUpRounding ofDecimalPlaces(int decimalPlaces) { if (decimalPlaces >= 0 && decimalPlaces < 16) { return CACHE[decimalPlaces]; } return new HalfUpRounding(decimalPlaces, 1); } @ImmutableConstructor private  HalfUpRounding(
      int decimalPlaces,
      int fraction); static HalfUpRounding ofDecimalPlaces(int decimalPlaces); static HalfUpRounding ofFractionalDecimalPlaces(int decimalPlaces, int fraction); @Override double round(double value); @Override BigDecimal round(BigDecimal value); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); static HalfUpRounding.Meta meta(); @Override HalfUpRounding.Meta metaBean(); int getDecimalPlaces(); int getFraction();  }### Answer:
@Test public void test_ofDecimalPlaces_invalid() { assertThatIllegalArgumentException().isThrownBy(() -> HalfUpRounding.ofDecimalPlaces(-1)); assertThatIllegalArgumentException().isThrownBy(() -> HalfUpRounding.ofDecimalPlaces(257)); }
@Test public void test_serialization() { HalfUpRounding test = HalfUpRounding.ofDecimalPlaces(4); assertSerialization(test); }