Skip to content

Commit 275f844

Browse files
committed
add big decimal tests
1 parent 76243f8 commit 275f844

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed

cbor/src/test/java/com/fasterxml/jackson/dataformat/cbor/mapper/NumberBeanTest.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.math.BigDecimal;
55
import java.math.BigInteger;
66

7+
import com.fasterxml.jackson.annotation.JsonCreator;
78
import org.junit.jupiter.api.Test;
89

910
import com.fasterxml.jackson.annotation.JsonUnwrapped;
@@ -47,6 +48,25 @@ static class NestedBigDecimalHolder2784 {
4748
public BigDecimalHolder2784 holder;
4849
}
4950

51+
static class DeserializationIssue4917 {
52+
public DecimalHolder4917 decimalHolder;
53+
public double number;
54+
}
55+
56+
static class DecimalHolder4917 {
57+
public BigDecimal value;
58+
59+
private DecimalHolder4917(BigDecimal value) {
60+
this.value = value;
61+
}
62+
63+
@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
64+
static DecimalHolder4917 of(BigDecimal value) {
65+
return new DecimalHolder4917(value);
66+
}
67+
}
68+
69+
5070
/*
5171
/**********************************************************
5272
/* Test methods
@@ -256,4 +276,20 @@ public void testBigDecimalWithBuffering() throws Exception
256276
NestedBigDecimalHolder2784.class);
257277
assertEquals(VALUE, result.holder.value);
258278
}
279+
280+
// [databind#4917]
281+
@Test
282+
public void testIssue4917() throws Exception {
283+
final String bd = "100.00";
284+
final double d = 50.0;
285+
final DeserializationIssue4917 value = new DeserializationIssue4917();
286+
value.decimalHolder = DecimalHolder4917.of(new BigDecimal(bd));
287+
value.number = d;
288+
final byte[] data = MAPPER.writeValueAsBytes(value);
289+
final DeserializationIssue4917 result = MAPPER.readValue(
290+
data, DeserializationIssue4917.class);
291+
assertEquals(value.decimalHolder.value, result.decimalHolder.value);
292+
assertEquals(value.number, result.number);
293+
}
294+
259295
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.fasterxml.jackson.dataformat.smile.mapper;
2+
3+
import com.fasterxml.jackson.annotation.JsonCreator;
4+
import com.fasterxml.jackson.dataformat.smile.BaseTestForSmile;
5+
import com.fasterxml.jackson.dataformat.smile.databind.SmileMapper;
6+
import org.junit.jupiter.api.Test;
7+
8+
import java.io.ByteArrayInputStream;
9+
import java.io.ByteArrayOutputStream;
10+
import java.math.BigDecimal;
11+
12+
import static org.junit.jupiter.api.Assertions.assertEquals;
13+
14+
public class NumberReadTest extends BaseTestForSmile {
15+
16+
static class DeserializationIssue4917 {
17+
public DecimalHolder4917 decimalHolder;
18+
public double number;
19+
}
20+
21+
static class DecimalHolder4917 {
22+
public BigDecimal value;
23+
24+
private DecimalHolder4917(BigDecimal value) {
25+
this.value = value;
26+
}
27+
28+
@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
29+
static DecimalHolder4917 of(BigDecimal value) {
30+
return new DecimalHolder4917(value);
31+
}
32+
}
33+
34+
// [databind#4917]
35+
@Test
36+
public void testIssue4917() throws Exception {
37+
final String bd = "100.00";
38+
final double d = 50.0;
39+
final DeserializationIssue4917 value = new DeserializationIssue4917();
40+
value.decimalHolder = DecimalHolder4917.of(new BigDecimal(bd));
41+
value.number = d;
42+
final SmileMapper mapper = smileMapper();
43+
final byte[] data = mapper.writeValueAsBytes(value);
44+
final DeserializationIssue4917 result = mapper.readValue(
45+
data, DeserializationIssue4917.class);
46+
assertEquals(value.decimalHolder.value, result.decimalHolder.value);
47+
assertEquals(value.number, result.number);
48+
}
49+
50+
}

0 commit comments

Comments
 (0)