Skip to content

Commit a9cc726

Browse files
authored
add big decimal tests (#565)
1 parent 4080ae2 commit a9cc726

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

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

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66

77
import org.junit.jupiter.api.Test;
88

9+
import com.fasterxml.jackson.annotation.JsonCreator;
910
import com.fasterxml.jackson.annotation.JsonUnwrapped;
11+
import com.fasterxml.jackson.annotation.JsonValue;
1012
import com.fasterxml.jackson.core.JsonParser.NumberType;
1113
import com.fasterxml.jackson.core.JsonToken;
1214
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -47,6 +49,25 @@ static class NestedBigDecimalHolder2784 {
4749
public BigDecimalHolder2784 holder;
4850
}
4951

52+
static class DeserializationIssue4917 {
53+
public DecimalHolder4917 decimalHolder;
54+
public double number;
55+
}
56+
57+
static class DecimalHolder4917 {
58+
@JsonValue
59+
BigDecimal value;
60+
61+
private DecimalHolder4917(BigDecimal value) {
62+
this.value = value;
63+
}
64+
65+
@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
66+
static DecimalHolder4917 of(BigDecimal value) {
67+
return new DecimalHolder4917(value);
68+
}
69+
}
70+
5071
/*
5172
/**********************************************************
5273
/* Test methods
@@ -256,4 +277,21 @@ public void testBigDecimalWithBuffering() throws Exception
256277
NestedBigDecimalHolder2784.class);
257278
assertEquals(VALUE, result.holder.value);
258279
}
280+
281+
// [databind#4917]
282+
@Test
283+
public void testIssue4917() throws Exception {
284+
final String bd = "100.00";
285+
final double d = 50.0;
286+
final DeserializationIssue4917 value = new DeserializationIssue4917();
287+
value.decimalHolder = DecimalHolder4917.of(new BigDecimal(bd));
288+
value.number = d;
289+
final byte[] data = MAPPER.writeValueAsBytes(value);
290+
291+
final DeserializationIssue4917 result = MAPPER.readValue(
292+
data, DeserializationIssue4917.class);
293+
assertEquals(value.decimalHolder.value, result.decimalHolder.value);
294+
assertEquals(value.number, result.number);
295+
}
296+
259297
}
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.annotation.JsonValue;
5+
import com.fasterxml.jackson.dataformat.smile.BaseTestForSmile;
6+
import com.fasterxml.jackson.dataformat.smile.databind.SmileMapper;
7+
import org.junit.jupiter.api.Test;
8+
9+
import java.math.BigDecimal;
10+
11+
import static org.junit.jupiter.api.Assertions.assertEquals;
12+
13+
public class NumberReadTest extends BaseTestForSmile {
14+
15+
static class DeserializationIssue4917 {
16+
public DecimalHolder4917 decimalHolder;
17+
public double number;
18+
}
19+
20+
static class DecimalHolder4917 {
21+
@JsonValue
22+
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)