0
|
1 package org.msgpack;
|
|
2
|
|
3 import static org.junit.Assert.assertEquals;
|
|
4 import static org.junit.Assert.assertArrayEquals;
|
|
5 import static org.junit.Assert.assertTrue;
|
|
6
|
|
7 import java.io.ByteArrayOutputStream;
|
|
8 import java.io.IOException;
|
|
9 import java.math.BigInteger;
|
|
10 import java.util.ArrayList;
|
|
11 import java.util.HashMap;
|
|
12 import java.util.Iterator;
|
|
13 import java.util.List;
|
|
14 import java.util.Map;
|
|
15
|
|
16 import junit.framework.Assert;
|
|
17 import org.junit.Test;
|
|
18 import org.msgpack.packer.Packer;
|
|
19 import org.msgpack.type.ValueFactory;
|
|
20 import org.msgpack.unpacker.BufferUnpacker;
|
|
21 import org.msgpack.unpacker.Converter;
|
|
22 import org.msgpack.type.Value;
|
|
23
|
|
24
|
|
25 public class TestPackConvert extends TestSet {
|
|
26
|
|
27 @Test @Override
|
|
28 public void testBoolean() throws Exception {
|
|
29 super.testBoolean();
|
|
30 }
|
|
31
|
|
32 @Override
|
|
33 public void testBoolean(boolean v) throws Exception {
|
|
34 MessagePack msgpack = new MessagePack();
|
|
35 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
36 Packer packer = msgpack.createPacker(out);
|
|
37 packer.write(v);
|
|
38 byte[] bytes = out.toByteArray();
|
|
39 BufferUnpacker unpacker = msgpack.createBufferUnpacker(bytes);
|
|
40 unpacker.resetReadByteCount();
|
|
41 Value value = unpacker.readValue();
|
|
42 assertTrue(value.isBooleanValue());
|
|
43 boolean ret = new Converter(value).readBoolean();
|
|
44 assertEquals(v, ret);
|
|
45 assertEquals(bytes.length, unpacker.getReadByteCount());
|
|
46 }
|
|
47
|
|
48 @Test @Override
|
|
49 public void testByte() throws Exception {
|
|
50 super.testByte();
|
|
51 }
|
|
52
|
|
53 @Override
|
|
54 public void testByte(byte v) throws Exception {
|
|
55 MessagePack msgpack = new MessagePack();
|
|
56 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
57 Packer packer = msgpack.createPacker(out);
|
|
58 packer.write(v);
|
|
59 byte[] bytes = out.toByteArray();
|
|
60 BufferUnpacker unpacker = msgpack.createBufferUnpacker(bytes);
|
|
61 unpacker.resetReadByteCount();
|
|
62 Value value = unpacker.readValue();
|
|
63 assertTrue(value.isIntegerValue());
|
|
64 byte ret = new Converter(value).readByte();
|
|
65 assertEquals(v, ret);
|
|
66 assertEquals(bytes.length, unpacker.getReadByteCount());
|
|
67 }
|
|
68
|
|
69 @Test @Override
|
|
70 public void testShort() throws Exception {
|
|
71 super.testShort();
|
|
72 }
|
|
73
|
|
74 @Override
|
|
75 public void testShort(short v) throws Exception {
|
|
76 MessagePack msgpack = new MessagePack();
|
|
77 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
78 Packer packer = msgpack.createPacker(out);
|
|
79 packer.write(v);
|
|
80 byte[] bytes = out.toByteArray();
|
|
81 BufferUnpacker unpacker = msgpack.createBufferUnpacker(bytes);
|
|
82 unpacker.resetReadByteCount();
|
|
83 Value value = unpacker.readValue();
|
|
84 assertTrue(value.isIntegerValue());
|
|
85 short ret = new Converter(value).readShort();
|
|
86 assertEquals(v, ret);
|
|
87 assertEquals(bytes.length, unpacker.getReadByteCount());
|
|
88 }
|
|
89
|
|
90 @Test @Override
|
|
91 public void testInteger() throws Exception {
|
|
92 super.testInteger();
|
|
93 }
|
|
94
|
|
95 @Override
|
|
96 public void testInteger(int v) throws Exception {
|
|
97 MessagePack msgpack = new MessagePack();
|
|
98 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
99 Packer packer = msgpack.createPacker(out);
|
|
100 packer.write(v);
|
|
101 byte[] bytes = out.toByteArray();
|
|
102 BufferUnpacker unpacker = msgpack.createBufferUnpacker(bytes);
|
|
103 unpacker.resetReadByteCount();
|
|
104 Value value = unpacker.readValue();
|
|
105 assertTrue(value.isIntegerValue());
|
|
106 int ret = new Converter(value).readInt();
|
|
107 assertEquals(v, ret);
|
|
108 assertEquals(bytes.length, unpacker.getReadByteCount());
|
|
109 }
|
|
110
|
|
111 @Test @Override
|
|
112 public void testLong() throws Exception {
|
|
113 super.testLong();
|
|
114 }
|
|
115
|
|
116 @Override
|
|
117 public void testLong(long v) throws Exception {
|
|
118 MessagePack msgpack = new MessagePack();
|
|
119 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
120 Packer packer = msgpack.createPacker(out);
|
|
121 packer.write(v);
|
|
122 byte[] bytes = out.toByteArray();
|
|
123 BufferUnpacker unpacker = msgpack.createBufferUnpacker(bytes);
|
|
124 unpacker.resetReadByteCount();
|
|
125 Value value = unpacker.readValue();
|
|
126 assertTrue(value.isIntegerValue());
|
|
127 long ret = new Converter(value).readLong();
|
|
128 assertEquals(v, ret);
|
|
129 assertEquals(bytes.length, unpacker.getReadByteCount());
|
|
130 }
|
|
131
|
|
132 @Test @Override
|
|
133 public void testFloat() throws Exception {
|
|
134 super.testFloat();
|
|
135 }
|
|
136
|
|
137 @Override
|
|
138 public void testFloat(float v) throws Exception {
|
|
139 MessagePack msgpack = new MessagePack();
|
|
140 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
141 Packer packer = msgpack.createPacker(out);
|
|
142 packer.write(v);
|
|
143 byte[] bytes = out.toByteArray();
|
|
144 BufferUnpacker unpacker = msgpack.createBufferUnpacker(bytes);
|
|
145 unpacker.resetReadByteCount();
|
|
146 Value value = unpacker.readValue();
|
|
147 assertTrue(value.isFloatValue());
|
|
148 float ret = new Converter(value).readFloat();
|
|
149 assertEquals(v, ret, 10e-10);
|
|
150 assertEquals(bytes.length, unpacker.getReadByteCount());
|
|
151 }
|
|
152
|
|
153 @Test @Override
|
|
154 public void testDouble() throws Exception {
|
|
155 super.testDouble();
|
|
156 }
|
|
157
|
|
158 @Override
|
|
159 public void testDouble(double v) throws Exception {
|
|
160 MessagePack msgpack = new MessagePack();
|
|
161 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
162 Packer packer = msgpack.createPacker(out);
|
|
163 packer.write(v);
|
|
164 byte[] bytes = out.toByteArray();
|
|
165 BufferUnpacker unpacker = msgpack.createBufferUnpacker(bytes);
|
|
166 unpacker.resetReadByteCount();
|
|
167 Value value = unpacker.readValue();
|
|
168 assertTrue(value.isFloatValue());
|
|
169 double ret = new Converter(value).readDouble();
|
|
170 assertEquals(v, ret, 10e-10);
|
|
171 assertEquals(bytes.length, unpacker.getReadByteCount());
|
|
172 }
|
|
173
|
|
174 @Test @Override
|
|
175 public void testNil() throws Exception {
|
|
176 MessagePack msgpack = new MessagePack();
|
|
177 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
178 Packer packer = msgpack.createPacker(out);
|
|
179 packer.writeNil();
|
|
180 byte[] bytes = out.toByteArray();
|
|
181 BufferUnpacker unpacker = msgpack.createBufferUnpacker(bytes);
|
|
182 unpacker.resetReadByteCount();
|
|
183 Value value = unpacker.readValue();
|
|
184 assertTrue(value.isNilValue());
|
|
185 new Converter(value).readNil();
|
|
186 assertEquals(bytes.length, unpacker.getReadByteCount());
|
|
187 }
|
|
188
|
|
189 @Test @Override
|
|
190 public void testBigInteger() throws Exception {
|
|
191 super.testBigInteger();
|
|
192 }
|
|
193
|
|
194 @Override
|
|
195 public void testBigInteger(BigInteger v) throws Exception {
|
|
196 MessagePack msgpack = new MessagePack();
|
|
197 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
198 Packer packer = msgpack.createPacker(out);
|
|
199 packer.write(v);
|
|
200 byte[] bytes = out.toByteArray();
|
|
201 BufferUnpacker unpacker = msgpack.createBufferUnpacker(bytes);
|
|
202 unpacker.resetReadByteCount();
|
|
203 Value value = unpacker.readValue();
|
|
204 BigInteger ret = new Converter(value).read(BigInteger.class);
|
|
205 assertEquals(v, ret);
|
|
206 assertEquals(bytes.length, unpacker.getReadByteCount());
|
|
207 }
|
|
208
|
|
209 @Test @Override
|
|
210 public void testString() throws Exception {
|
|
211 super.testString();
|
|
212 }
|
|
213
|
|
214 @Override
|
|
215 public void testString(String v) throws Exception {
|
|
216 MessagePack msgpack = new MessagePack();
|
|
217 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
218 Packer packer = msgpack.createPacker(out);
|
|
219 packer.write(v);
|
|
220 byte[] bytes = out.toByteArray();
|
|
221 BufferUnpacker unpacker = msgpack.createBufferUnpacker(bytes);
|
|
222 unpacker.resetReadByteCount();
|
|
223 Value value = unpacker.readValue();
|
|
224 String ret = new Converter(value).read(String.class);
|
|
225 assertEquals(v, ret);
|
|
226 assertEquals(bytes.length, unpacker.getReadByteCount());
|
|
227 }
|
|
228
|
|
229 @Test @Override
|
|
230 public void testByteArray() throws Exception {
|
|
231 super.testByteArray();
|
|
232 }
|
|
233
|
|
234 @Override
|
|
235 public void testByteArray(byte[] v) throws Exception {
|
|
236 MessagePack msgpack = new MessagePack();
|
|
237 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
238 Packer packer = msgpack.createPacker(out);
|
|
239 packer.write(v);
|
|
240 byte[] bytes = out.toByteArray();
|
|
241 BufferUnpacker unpacker = msgpack.createBufferUnpacker(bytes);
|
|
242 unpacker.resetReadByteCount();
|
|
243 Value value = unpacker.readValue();
|
|
244 byte[] ret = new Converter(value).read(byte[].class);
|
|
245 assertArrayEquals(v, ret);
|
|
246 assertEquals(bytes.length, unpacker.getReadByteCount());
|
|
247 }
|
|
248
|
|
249 @Test @Override
|
|
250 public void testList() throws Exception {
|
|
251 super.testList();
|
|
252 }
|
|
253
|
|
254 @Override
|
|
255 public <E> void testList(List<E> v, Class<E> elementClass) throws Exception {
|
|
256 MessagePack msgpack = new MessagePack();
|
|
257 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
258 Packer packer = msgpack.createPacker(out);
|
|
259 if (v == null) {
|
|
260 packer.writeNil();
|
|
261 } else {
|
|
262 packer.writeArrayBegin(v.size());
|
|
263 for (Object o : v) {
|
|
264 packer.write(o);
|
|
265 }
|
|
266 packer.writeArrayEnd();
|
|
267 }
|
|
268 byte[] bytes = out.toByteArray();
|
|
269 BufferUnpacker unpacker = msgpack.createBufferUnpacker(bytes);
|
|
270 unpacker.resetReadByteCount();
|
|
271 if (unpacker.trySkipNil()) {
|
|
272 assertEquals(null, v);
|
|
273 return;
|
|
274 }
|
|
275 int size = unpacker.readArrayBegin();
|
|
276 List<E> ret = new ArrayList<E>(size);
|
|
277 for (int i = 0; i < size; ++i) {
|
|
278 Value value = unpacker.readValue();
|
|
279 ret.add(new Converter(value).read(elementClass));
|
|
280 }
|
|
281 unpacker.readArrayEnd();
|
|
282 assertEquals(v.size(), ret.size());
|
|
283 Iterator<E> v_iter = v.iterator();
|
|
284 Iterator<E> ret_iter = ret.iterator();
|
|
285 while (v_iter.hasNext()) {
|
|
286 assertEquals(v_iter.next(), ret_iter.next());
|
|
287 }
|
|
288 assertEquals(bytes.length, unpacker.getReadByteCount());
|
|
289 }
|
|
290
|
|
291 @Test @Override
|
|
292 public void testMap() throws Exception {
|
|
293 super.testMap();
|
|
294 }
|
|
295
|
|
296 @Override
|
|
297 public <K, V> void testMap(Map<K, V> v, Class<K> keyElementClass, Class<V> valueElementClass) throws Exception {
|
|
298 MessagePack msgpack = new MessagePack();
|
|
299 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
300 Packer packer = msgpack.createPacker(out);
|
|
301 if (v == null) {
|
|
302 packer.writeNil();
|
|
303 } else {
|
|
304 packer.writeMapBegin(v.size());
|
|
305 for (Map.Entry<K, V> e : ((Map<K, V>) v).entrySet()) {
|
|
306 packer.write(e.getKey());
|
|
307 packer.write(e.getValue());
|
|
308 }
|
|
309 packer.writeMapEnd();
|
|
310 }
|
|
311 byte[] bytes = out.toByteArray();
|
|
312 BufferUnpacker unpacker = msgpack.createBufferUnpacker(bytes);
|
|
313 unpacker.resetReadByteCount();
|
|
314 if (unpacker.trySkipNil()) {
|
|
315 assertEquals(null, v);
|
|
316 return;
|
|
317 }
|
|
318 int size = unpacker.readMapBegin();
|
|
319 Map<K, V> ret = new HashMap<K, V>(size);
|
|
320 for (int i = 0; i < size; ++i) {
|
|
321 Value keyValue = unpacker.readValue();
|
|
322 K key = new Converter(keyValue).read(keyElementClass);
|
|
323 Value valueValue = unpacker.readValue();
|
|
324 V value = new Converter(valueValue).read(valueElementClass);
|
|
325 ret.put(key, value);
|
|
326 }
|
|
327 unpacker.readMapEnd();
|
|
328 assertEquals(v.size(), ret.size());
|
|
329 for (Map.Entry<K, V> e : ((Map<K, V>) v).entrySet()) {
|
|
330 Object value = ret.get(e.getKey());
|
|
331 assertEquals(e.getValue(), value);
|
|
332 }
|
|
333 assertEquals(bytes.length, unpacker.getReadByteCount());
|
|
334 }
|
|
335
|
|
336 @Test
|
|
337 public void testPackValue() throws IOException {
|
|
338 MessagePack msgpack = new MessagePack();
|
|
339 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
340 Packer packer = msgpack.createPacker(out);
|
|
341 String text = "This is Value";
|
|
342 Value value = ValueFactory.createRawValue(text);
|
|
343 packer.write(value);
|
|
344 byte[] bytes = out.toByteArray();
|
|
345 Assert.assertEquals(text.length() + 1,bytes.length);
|
|
346 Assert.assertEquals(0xa0 + text.length(), 0xff & bytes[0]);
|
|
347 }
|
|
348
|
|
349 @Test
|
|
350 public void testPackValuePassedAsObject() throws IOException{
|
|
351 MessagePack msgpack = new MessagePack();
|
|
352 ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
353 Packer packer = msgpack.createPacker(out);
|
|
354 String text = "This is Value";
|
|
355 Object value = ValueFactory.createRawValue(text);
|
|
356 packer.write(value); // passed as object
|
|
357 byte[] bytes = out.toByteArray();
|
|
358 Assert.assertEquals(text.length() + 1,bytes.length);
|
|
359 Assert.assertEquals(0xa0 + text.length(), 0xff & bytes[0]);
|
|
360
|
|
361 }
|
|
362
|
|
363 }
|