@@ -282,6 +282,42 @@ public void testDecimalBuilder() {
282282 }
283283 }
284284
285+ @ Test
286+ public void testDecimalBuilderUsesOnlyPrecision () {
287+
288+ BigDecimal smallPrecisionLargeScale = new BigDecimal ("1" ).scaleByPowerOfTen (-20 );
289+ VariantBuilder vb1 = new VariantBuilder ();
290+ vb1 .appendDecimal (smallPrecisionLargeScale );
291+ VariantTestUtil .testVariant (vb1 .build (), v -> {
292+ VariantTestUtil .checkType (v , VariantUtil .PRIMITIVE , Variant .Type .DECIMAL4 );
293+ Assert .assertEquals (smallPrecisionLargeScale , v .getDecimal ());
294+ });
295+
296+ BigDecimal mediumPrecisionLargeScale = new BigDecimal ("1234567890" ).scaleByPowerOfTen (-25 );
297+ VariantBuilder vb2 = new VariantBuilder ();
298+ vb2 .appendDecimal (mediumPrecisionLargeScale );
299+ VariantTestUtil .testVariant (vb2 .build (), v -> {
300+ VariantTestUtil .checkType (v , VariantUtil .PRIMITIVE , Variant .Type .DECIMAL8 );
301+ Assert .assertEquals (mediumPrecisionLargeScale , v .getDecimal ());
302+ });
303+
304+ BigDecimal maxDecimal4Precision = new BigDecimal ("123456789" ).scaleByPowerOfTen (-18 );
305+ VariantBuilder vb3 = new VariantBuilder ();
306+ vb3 .appendDecimal (maxDecimal4Precision );
307+ VariantTestUtil .testVariant (vb3 .build (), v -> {
308+ VariantTestUtil .checkType (v , VariantUtil .PRIMITIVE , Variant .Type .DECIMAL4 );
309+ Assert .assertEquals (maxDecimal4Precision , v .getDecimal ());
310+ });
311+
312+ BigDecimal maxDecimal8Precision = new BigDecimal ("123456789012345678" ).scaleByPowerOfTen (-19 );
313+ VariantBuilder vb4 = new VariantBuilder ();
314+ vb4 .appendDecimal (maxDecimal8Precision );
315+ VariantTestUtil .testVariant (vb4 .build (), v -> {
316+ VariantTestUtil .checkType (v , VariantUtil .PRIMITIVE , Variant .Type .DECIMAL8 );
317+ Assert .assertEquals (maxDecimal8Precision , v .getDecimal ());
318+ });
319+ }
320+
285321 @ Test
286322 public void testDateBuilder () {
287323 VariantBuilder vb = new VariantBuilder ();
0 commit comments