comparison src/test/java/org/msgpack/util/json/TestValueToStringJSONUnpack.java @ 0:cb825acd883a

first commit
author sugi
date Sat, 18 Oct 2014 15:06:15 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:cb825acd883a
1 package org.msgpack.util.json;
2
3 import static org.junit.Assert.assertEquals;
4
5 import java.math.BigInteger;
6 import java.util.ArrayList;
7 import java.util.HashMap;
8 import java.util.Iterator;
9 import java.util.List;
10 import java.util.Map;
11
12 import org.junit.Ignore;
13 import org.junit.Test;
14 import org.msgpack.MessagePack;
15 import org.msgpack.TestSet;
16 import org.msgpack.unpacker.Unpacker;
17 import org.msgpack.packer.Unconverter;
18 import org.msgpack.util.json.JSON;
19
20
21 public class TestValueToStringJSONUnpack extends TestSet {
22
23 @Test @Override
24 public void testBoolean() throws Exception {
25 super.testBoolean();
26 }
27
28 @Override
29 public void testBoolean(boolean v) throws Exception {
30 MessagePack msgpack = new JSON();
31 Unconverter packer = new Unconverter(msgpack);
32 packer.write(v);
33 byte[] bytes = packer.getResult().toString().getBytes("UTF-8");
34 Unpacker unpacker = msgpack.createBufferUnpacker(bytes);
35 boolean ret = unpacker.readBoolean();
36 assertEquals(v, ret);
37 }
38
39 @Test @Override
40 public void testByte() throws Exception {
41 super.testByte();
42 }
43
44 @Override
45 public void testByte(byte v) throws Exception {
46 MessagePack msgpack = new JSON();
47 Unconverter packer = new Unconverter(msgpack);
48 packer.write(v);
49 byte[] bytes = packer.getResult().toString().getBytes("UTF-8");
50 Unpacker unpacker = msgpack.createBufferUnpacker(bytes);
51 byte ret = unpacker.readByte();
52 assertEquals(v, ret);
53 }
54
55 @Test @Override
56 public void testShort() throws Exception {
57 super.testShort();
58 }
59
60 @Override
61 public void testShort(short v) throws Exception {
62 MessagePack msgpack = new JSON();
63 Unconverter packer = new Unconverter(msgpack);
64 packer.write(v);
65 byte[] bytes = packer.getResult().toString().getBytes("UTF-8");
66 Unpacker unpacker = msgpack.createBufferUnpacker(bytes);
67 short ret = unpacker.readShort();
68 assertEquals(v, ret);
69 }
70
71 @Test @Override
72 public void testInteger() throws Exception {
73 super.testInteger();
74 }
75
76 @Override
77 public void testInteger(int v) throws Exception {
78 MessagePack msgpack = new JSON();
79 Unconverter packer = new Unconverter(msgpack);
80 packer.write(v);
81 byte[] bytes = packer.getResult().toString().getBytes("UTF-8");
82 Unpacker unpacker = msgpack.createBufferUnpacker(bytes);
83 int ret = unpacker.readInt();
84 assertEquals(v, ret);
85 }
86
87 @Test @Override
88 public void testLong() throws Exception {
89 super.testLong();
90 }
91
92 @Override
93 public void testLong(long v) throws Exception {
94 MessagePack msgpack = new JSON();
95 Unconverter packer = new Unconverter(msgpack);
96 packer.write(v);
97 byte[] bytes = packer.getResult().toString().getBytes("UTF-8");
98 Unpacker unpacker = msgpack.createBufferUnpacker(bytes);
99 long ret = unpacker.readLong();
100 assertEquals(v, ret);
101 }
102
103 @Test @Override
104 public void testFloat() throws Exception {
105 super.testFloat();
106 }
107
108 @Override
109 public void testFloat(float v) throws Exception {
110 MessagePack msgpack = new JSON();
111 Unconverter packer = new Unconverter(msgpack);
112 if(((Float)v).isInfinite()) {
113 packer.write(v);
114 String str = packer.getResult().toString();
115 if(v < 0) {
116 assertEquals("-Infinity", str);
117 } else {
118 assertEquals("Infinity", str);
119 }
120 return;
121 } else if(((Float)v).isNaN()) {
122 packer.write(v);
123 String str = packer.getResult().toString();
124 assertEquals("NaN", str);
125 return;
126 }
127 packer.write(v);
128 byte[] bytes = packer.getResult().toString().getBytes("UTF-8");
129 Unpacker unpacker = msgpack.createBufferUnpacker(bytes);
130 float ret = unpacker.readFloat();
131 assertEquals(v, ret, 10e-10);
132 }
133
134 @Test @Override
135 public void testDouble() throws Exception {
136 super.testDouble();
137 }
138
139 @Override
140 public void testDouble(double v) throws Exception {
141 MessagePack msgpack = new JSON();
142 Unconverter packer = new Unconverter(msgpack);
143 if(((Double)v).isInfinite()) {
144 packer.write(v);
145 String str = packer.getResult().toString();
146 if(v < 0) {
147 assertEquals("-Infinity", str);
148 } else {
149 assertEquals("Infinity", str);
150 }
151 return;
152 } else if(((Double)v).isNaN()) {
153 packer.write(v);
154 String str = packer.getResult().toString();
155 assertEquals("NaN", str);
156 return;
157 }
158 packer.write(v);
159 byte[] bytes = packer.getResult().toString().getBytes("UTF-8");
160 Unpacker unpacker = msgpack.createBufferUnpacker(bytes);
161 double ret = unpacker.readDouble();
162 assertEquals(v, ret, 10e-10);
163 }
164
165 @Test @Override
166 public void testNil() throws Exception {
167 MessagePack msgpack = new JSON();
168 Unconverter packer = new Unconverter(msgpack);
169 packer.writeNil();
170 byte[] bytes = packer.getResult().toString().getBytes("UTF-8");
171 Unpacker unpacker = msgpack.createBufferUnpacker(bytes);
172 unpacker.readNil();
173 }
174
175 @Ignore @Test @Override // FIXME #SF JSON Unpacker doesn't support BigInteger
176 public void testBigInteger() throws Exception {
177 super.testBigInteger();
178 }
179
180 @Override
181 public void testBigInteger(BigInteger v) throws Exception {
182 MessagePack msgpack = new JSON();
183 Unconverter packer = new Unconverter(msgpack);
184 packer.write(v);
185 byte[] bytes = packer.getResult().toString().getBytes("UTF-8");
186 Unpacker unpacker = msgpack.createBufferUnpacker(bytes);
187 BigInteger ret = unpacker.read(BigInteger.class);
188 assertEquals(v, ret);
189 }
190
191 @Test @Override
192 public void testString() throws Exception {
193 super.testString();
194 }
195
196 @Override
197 public void testString(String v) throws Exception {
198 MessagePack msgpack = new JSON();
199 Unconverter packer = new Unconverter(msgpack);
200 packer.write(v);
201 byte[] bytes = packer.getResult().toString().getBytes("UTF-8");
202 Unpacker unpacker = msgpack.createBufferUnpacker(bytes);
203 String ret = unpacker.read(String.class);
204 assertEquals(v, ret);
205 }
206
207 @Ignore @Test @Override // FIXME JSONPacker doesn't support bytes
208 public void testByteArray() throws Exception {
209 super.testByteArray();
210 }
211
212 @Override
213 public void testByteArray(byte[] v) throws Exception {
214 MessagePack msgpack = new JSON();
215 Unconverter packer = new Unconverter(msgpack);
216 //packer.write(v);
217 String str = new String(v);
218 packer.write(str);
219 byte[] bytes = packer.getResult().toString().getBytes("UTF-8");
220 Unpacker unpacker = msgpack.createBufferUnpacker(bytes);
221 String ret = unpacker.read(String.class);
222 assertEquals(str, ret);
223 }
224
225 @Test @Override
226 public void testList() throws Exception {
227 super.testList();
228 }
229
230 @SuppressWarnings({ "rawtypes", "unchecked" })
231 @Override
232 public <E> void testList(List<E> v, Class<E> elementClass) throws Exception {
233 MessagePack msgpack = new JSON();
234 Unconverter packer = new Unconverter(msgpack);
235 if (v == null) {
236 packer.writeNil();
237 } else {
238 packer.writeArrayBegin(v.size());
239 for (Object o : v) {
240 packer.write(o);
241 }
242 packer.writeArrayEnd();
243 }
244 byte[] bytes = packer.getResult().toString().getBytes("UTF-8");
245 Unpacker unpacker = msgpack.createBufferUnpacker(bytes);
246 if (unpacker.trySkipNil()) {
247 assertEquals(null, v);
248 return;
249 }
250 int size = unpacker.readArrayBegin();
251 List ret = new ArrayList(size);
252 for (int i = 0; i < size; ++i) {
253 ret.add(unpacker.read(elementClass));
254 }
255 unpacker.readArrayEnd();
256 assertEquals(v.size(), ret.size());
257 Iterator v_iter = v.iterator();
258 Iterator ret_iter = ret.iterator();
259 while (v_iter.hasNext()) {
260 assertEquals(v_iter.next(), ret_iter.next());
261 }
262 }
263
264 @Test @Override
265 public void testMap() throws Exception {
266 super.testMap();
267 }
268
269 @SuppressWarnings({ "unchecked", "rawtypes" })
270 @Override
271 public <K, V> void testMap(Map<K, V> v, Class<K> keyElementClass, Class<V> valueElementClass) throws Exception {
272 MessagePack msgpack = new JSON();
273 Unconverter packer = new Unconverter(msgpack);
274 if (v == null) {
275 packer.writeNil();
276 } else {
277 packer.writeMapBegin(v.size());
278 for (Map.Entry<Object, Object> e : ((Map<Object, Object>) v).entrySet()) {
279 packer.write(e.getKey());
280 packer.write(e.getValue());
281 }
282 packer.writeMapEnd();
283 }
284 byte[] bytes = packer.getResult().toString().getBytes("UTF-8");
285 if(!keyElementClass.equals(String.class)) {
286 // TODO JSONUnpacker rejects maps whose keys are not string
287 return;
288 }
289 Unpacker unpacker = msgpack.createBufferUnpacker(bytes);
290 if (unpacker.trySkipNil()) {
291 assertEquals(null, v);
292 return;
293 }
294 int size = unpacker.readMapBegin();
295 Map ret = new HashMap(size);
296 for (int i = 0; i < size; ++i) {
297 Object key = unpacker.read(keyElementClass);
298 Object value = unpacker.read(valueElementClass);
299 ret.put(key, value);
300 }
301 unpacker.readMapEnd();
302 assertEquals(v.size(), ret.size());
303 for (Map.Entry<Object, Object> e : ((Map<Object, Object>) v).entrySet()) {
304 Object value = ret.get(e.getKey());
305 assertEquals(e.getValue(), value);
306 }
307 }
308 }