@@ -244,6 +244,42 @@ public void testDecimalBuilder() {
244244 }
245245 }
246246
247+ @ Test
248+ public void testDecimalBuilderUsesOnlyPrecision () {
249+
250+ BigDecimal smallPrecisionLargeScale = new BigDecimal ("1" ).scaleByPowerOfTen (-20 );
251+ VariantBuilder vb1 = new VariantBuilder ();
252+ vb1 .appendDecimal (smallPrecisionLargeScale );
253+ VariantTestUtil .testVariant (vb1 .build (), v -> {
254+ VariantTestUtil .checkType (v , VariantUtil .PRIMITIVE , Variant .Type .DECIMAL4 );
255+ Assert .assertEquals (smallPrecisionLargeScale , v .getDecimal ());
256+ });
257+
258+ BigDecimal mediumPrecisionLargeScale = new BigDecimal ("1234567890" ).scaleByPowerOfTen (-25 );
259+ VariantBuilder vb2 = new VariantBuilder ();
260+ vb2 .appendDecimal (mediumPrecisionLargeScale );
261+ VariantTestUtil .testVariant (vb2 .build (), v -> {
262+ VariantTestUtil .checkType (v , VariantUtil .PRIMITIVE , Variant .Type .DECIMAL8 );
263+ Assert .assertEquals (mediumPrecisionLargeScale , v .getDecimal ());
264+ });
265+
266+ BigDecimal maxDecimal4Precision = new BigDecimal ("123456789" ).scaleByPowerOfTen (-18 );
267+ VariantBuilder vb3 = new VariantBuilder ();
268+ vb3 .appendDecimal (maxDecimal4Precision );
269+ VariantTestUtil .testVariant (vb3 .build (), v -> {
270+ VariantTestUtil .checkType (v , VariantUtil .PRIMITIVE , Variant .Type .DECIMAL4 );
271+ Assert .assertEquals (maxDecimal4Precision , v .getDecimal ());
272+ });
273+
274+ BigDecimal maxDecimal8Precision = new BigDecimal ("123456789012345678" ).scaleByPowerOfTen (-19 );
275+ VariantBuilder vb4 = new VariantBuilder ();
276+ vb4 .appendDecimal (maxDecimal8Precision );
277+ VariantTestUtil .testVariant (vb4 .build (), v -> {
278+ VariantTestUtil .checkType (v , VariantUtil .PRIMITIVE , Variant .Type .DECIMAL8 );
279+ Assert .assertEquals (maxDecimal8Precision , v .getDecimal ());
280+ });
281+ }
282+
247283 @ Test
248284 public void testDateBuilder () {
249285 VariantBuilder vb = new VariantBuilder ();
0 commit comments