source: issuevalue/src/test/java/geniusweb/issuevalue/NumberValueTest.java@ 41

Last change on this file since 41 was 41, checked in by bart, 3 years ago

Reduced memory need of websockets.

File size: 3.6 KB
Line 
1package geniusweb.issuevalue;
2
3import static org.junit.Assert.assertEquals;
4
5import java.io.IOException;
6import java.math.BigDecimal;
7import java.util.ArrayList;
8import java.util.Arrays;
9import java.util.List;
10
11import org.junit.Test;
12
13import com.fasterxml.jackson.core.JsonParseException;
14import com.fasterxml.jackson.core.JsonProcessingException;
15import com.fasterxml.jackson.databind.JsonMappingException;
16import com.fasterxml.jackson.databind.ObjectMapper;
17
18import tudelft.utilities.junit.GeneralTests;
19
20public class NumberValueTest extends GeneralTests<NumberValue> {
21 private final NumberValue value = new NumberValue("12.31");
22 private final NumberValue value1 = new NumberValue("12.31");
23 private final NumberValue valueb = new NumberValue("12.310000000000000001");
24 private final String serialized = "12.31";
25
26 private final String bigserialized = "8748703924870439218876954320948372058";
27 private final NumberValue bigvalue = new NumberValue(bigserialized);
28 private static final ObjectMapper jackson = new ObjectMapper();
29
30 @Override
31 public List<List<NumberValue>> getGeneralTestData() {
32 return Arrays.asList(Arrays.asList(value, value1),
33 Arrays.asList(valueb));
34 }
35
36 @Override
37 public List<String> getGeneralTestStrings() {
38 return Arrays.asList("12.31", "12.310000000000000001");
39 }
40
41 @Test
42 public void testSerialize() throws JsonProcessingException {
43 assertEquals(serialized, jackson.writeValueAsString(value));
44 }
45
46 @Test
47 public void testDeserialize() throws IOException {
48 assertEquals(value, jackson.readValue(serialized, NumberValue.class));
49
50 }
51
52 @Test
53 public void testDeserializeFromValue() throws IOException {
54 assertEquals(value, jackson.readValue(serialized, Value.class));
55
56 }
57
58 @Test
59 public void testBigSerialize() throws JsonProcessingException {
60 assertEquals(bigserialized, jackson.writeValueAsString(bigvalue));
61 }
62
63 @Test
64 public void testBigDeserialize() throws IOException {
65 assertEquals(bigvalue,
66 jackson.readValue(bigserialized, NumberValue.class));
67
68 }
69
70 @Test
71 public void testSerializeShorts() throws IOException {
72 System.out.println(
73 jackson.writeValueAsString(new short[] { 1, 2, 3, 4, 5 }));
74
75 }
76
77 @Test
78 public void testDeserializeShorts() throws IOException {
79 @SuppressWarnings("unchecked")
80 ArrayList<Integer> list = jackson.readValue("[1,2,3,4,5]",
81 ArrayList.class);
82 System.out.println(list);
83 System.out.println(list.get(0).getClass());
84
85 }
86
87 @Test
88 public void testDeserializeMix() throws IOException {
89 @SuppressWarnings("unchecked")
90 ArrayList<Object> list = jackson.readValue("[\"short\",1,2,3,4,5]",
91 ArrayList.class);
92 System.out.println(list);
93 System.out.println(list.get(0).getClass());
94
95 }
96
97 /**
98 * Showing that we CAN deserialize big numbers without double quotes
99 * correctly, if we tell jackson upfront that it's a BigDecimal.
100 */
101 @Test
102 public void testDeserializePlainNumber()
103 throws JsonParseException, JsonMappingException, IOException {
104 String valstr = "483958743698732691487326987569213874694328974329874328947320984372498327493827432987231874681273648127";
105 BigDecimal val = jackson.readValue(valstr, BigDecimal.class);
106 assertEquals(valstr, val.toString());
107 }
108
109 @Test
110 public void testNumberBlab() throws IOException {
111 // jackson.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);
112 assertEquals(value, jackson.readValue("12.31", Value.class));
113
114 }
115
116 @Test
117 public void testDeserializeScientificNotation()
118 throws JsonParseException, JsonMappingException, IOException {
119 String valstr = "9E+2";
120 Value val = jackson.readValue(valstr, Value.class);
121 assertEquals(valstr, val.toString());
122 assertEquals(val, new NumberValue(new BigDecimal("900")));
123 }
124
125}
Note: See TracBrowser for help on using the repository browser.