0
|
1 package org.msgpack;
|
|
2
|
|
3 import static org.junit.Assert.assertEquals;
|
|
4
|
|
5 import java.io.IOException;
|
|
6 import java.util.ArrayList;
|
|
7 import java.util.HashMap;
|
|
8 import java.util.List;
|
|
9 import java.util.Map;
|
|
10
|
|
11 import org.junit.Ignore;
|
|
12 import org.junit.Test;
|
|
13 import org.msgpack.annotation.Message;
|
|
14 import org.msgpack.packer.BufferPacker;
|
|
15 import org.msgpack.packer.Unconverter;
|
|
16 import org.msgpack.type.Value;
|
|
17 import org.msgpack.unpacker.BufferUnpacker;
|
|
18 import org.msgpack.unpacker.Converter;
|
|
19
|
|
20 public class TestSimpleArrays {
|
|
21
|
|
22 @Message
|
|
23 public static class PrimitiveTest {
|
|
24 public boolean[] b = new boolean[0];
|
|
25 public short[] s = new short[0];
|
|
26 public int[] i = new int[0];
|
|
27 // public long[] l = new long[0]; // FIXME javassist?
|
|
28 public float[] f = new float[0];
|
|
29
|
|
30 // public double[] d = new double[0]; // FIXME javassist?
|
|
31
|
|
32 public PrimitiveTest() {
|
|
33 }
|
|
34 }
|
|
35
|
|
36 @Test
|
|
37 public void testPrimitive() throws Exception {
|
|
38 MessagePack msgpack = new MessagePack();
|
|
39
|
|
40 PrimitiveTest t = new PrimitiveTest();
|
|
41 t.b = new boolean[] { true, false };
|
|
42 t.s = new short[] { 0, 1 };
|
|
43 t.i = new int[] { 2, 3 };
|
|
44 // t.l = new long[] {4, 5};
|
|
45 t.f = new float[] { 2.0f, 4.0f };
|
|
46 // t.d = new double[] {8.0, 16.0};
|
|
47
|
|
48 BufferPacker packer = msgpack.createBufferPacker();
|
|
49 packer.write(t);
|
|
50 byte[] raw = packer.toByteArray();
|
|
51 BufferUnpacker unpacker = msgpack.createBufferUnpacker(raw);
|
|
52 PrimitiveTest u = unpacker.read(PrimitiveTest.class);
|
|
53 assertEquals(t.b.length, u.b.length);
|
|
54 for (int i = 0; i < t.b.length; i++) {
|
|
55 assertEquals(t.b[i], u.b[i]);
|
|
56 }
|
|
57 assertEquals(t.s.length, u.s.length);
|
|
58 for (int i = 0; i < t.s.length; i++) {
|
|
59 assertEquals(t.s[i], u.s[i]);
|
|
60 }
|
|
61 assertEquals(t.i.length, u.i.length);
|
|
62 for (int i = 0; i < t.i.length; i++) {
|
|
63 assertEquals(t.i[i], u.i[i]);
|
|
64 }
|
|
65 // assertEquals(t.l.length, u.l.length);
|
|
66 // for(int i=0; i < t.l.length; i++) { assertEquals(t.l[i], u.l[i]); }
|
|
67 assertEquals(t.f.length, u.f.length);
|
|
68 for (int i = 0; i < t.f.length; i++) {
|
|
69 assertEquals(t.f[i], u.f[i], 10e-10);
|
|
70 }
|
|
71 // assertEquals(t.d.length, u.d.length);
|
|
72 // for(int i=0; i < t.d.length; i++) { assertEquals(t.d[i], u.d[i]); }
|
|
73
|
|
74 Unconverter unconverter = new Unconverter(msgpack);
|
|
75 unconverter.write(t);
|
|
76 Value value = unconverter.getResult();
|
|
77 Converter converter = new Converter(msgpack, value);
|
|
78 PrimitiveTest c = converter.read(PrimitiveTest.class);
|
|
79 assertEquals(t.b.length, c.b.length);
|
|
80 for (int i = 0; i < t.b.length; i++) {
|
|
81 assertEquals(t.b[i], c.b[i]);
|
|
82 }
|
|
83 assertEquals(t.s.length, c.s.length);
|
|
84 for (int i = 0; i < t.s.length; i++) {
|
|
85 assertEquals(t.s[i], c.s[i]);
|
|
86 }
|
|
87 assertEquals(t.i.length, c.i.length);
|
|
88 for (int i = 0; i < t.i.length; i++) {
|
|
89 assertEquals(t.i[i], c.i[i]);
|
|
90 }
|
|
91 // assertEquals(t.l.length, c.l.length);
|
|
92 // for(int i=0; i < t.l.length; i++) { assertEquals(t.l[i], c.l[i]); }
|
|
93 assertEquals(t.f.length, c.f.length);
|
|
94 for (int i = 0; i < t.f.length; i++) {
|
|
95 assertEquals(t.f[i], c.f[i], 10e-10);
|
|
96 }
|
|
97 // assertEquals(t.d.length, c.d.length);
|
|
98 // for(int i=0; i < t.d.length; i++) { assertEquals(t.d[i], c.d[i]); }
|
|
99 }
|
|
100
|
|
101 @Message
|
|
102 public static class ReferenceTest {
|
|
103 public ReferenceTest() {
|
|
104 }
|
|
105
|
|
106 public Boolean[] b;
|
|
107 public Short[] s;
|
|
108 public Integer[] i;
|
|
109 public Long[] l;
|
|
110 public Float[] f;
|
|
111 public Double[] d;
|
|
112 public String[] str;
|
|
113 }
|
|
114
|
|
115 @Test
|
|
116 public void testReference() throws Exception {
|
|
117 MessagePack msgpack = new MessagePack();
|
|
118
|
|
119 ReferenceTest t = new ReferenceTest();
|
|
120 t.b = new Boolean[] { true, false };
|
|
121 t.s = new Short[] { 0, 1 };
|
|
122 t.i = new Integer[] { 2, 3 };
|
|
123 t.l = new Long[] { 4l, 5l };
|
|
124 t.f = new Float[] { 2.0f, 4.0f };
|
|
125 t.d = new Double[] { 8.0, 16.0 };
|
|
126 t.str = new String[] { "furuhashi", "java" };
|
|
127
|
|
128 BufferPacker packer = msgpack.createBufferPacker();
|
|
129 packer.write(t);
|
|
130 byte[] raw = packer.toByteArray();
|
|
131 BufferUnpacker unpacker = msgpack.createBufferUnpacker(raw);
|
|
132 ReferenceTest u = unpacker.read(ReferenceTest.class);
|
|
133 assertEquals(t.b.length, u.b.length);
|
|
134 for (int i = 0; i < t.b.length; i++) {
|
|
135 assertEquals(t.b[i], u.b[i]);
|
|
136 }
|
|
137 assertEquals(t.s.length, u.s.length);
|
|
138 for (int i = 0; i < t.s.length; i++) {
|
|
139 assertEquals(t.s[i], u.s[i]);
|
|
140 }
|
|
141 assertEquals(t.i.length, u.i.length);
|
|
142 for (int i = 0; i < t.i.length; i++) {
|
|
143 assertEquals(t.i[i], u.i[i]);
|
|
144 }
|
|
145 assertEquals(t.l.length, u.l.length);
|
|
146 for (int i = 0; i < t.l.length; i++) {
|
|
147 assertEquals(t.l[i], u.l[i]);
|
|
148 }
|
|
149 assertEquals(t.f.length, u.f.length);
|
|
150 for (int i = 0; i < t.f.length; i++) {
|
|
151 assertEquals(t.f[i], u.f[i]);
|
|
152 }
|
|
153 assertEquals(t.d.length, u.d.length);
|
|
154 for (int i = 0; i < t.d.length; i++) {
|
|
155 assertEquals(t.d[i], u.d[i]);
|
|
156 }
|
|
157 assertEquals(t.str.length, u.str.length);
|
|
158 for (int i = 0; i < t.str.length; i++) {
|
|
159 assertEquals(t.str[i], u.str[i]);
|
|
160 }
|
|
161
|
|
162 Unconverter unconverter = new Unconverter(msgpack);
|
|
163 unconverter.write(t);
|
|
164 Value value = unconverter.getResult();
|
|
165 Converter converter = new Converter(msgpack, value);
|
|
166 ReferenceTest c = converter.read(ReferenceTest.class);
|
|
167 assertEquals(t.b.length, c.b.length);
|
|
168 for (int i = 0; i < t.b.length; i++) {
|
|
169 assertEquals(t.b[i], c.b[i]);
|
|
170 }
|
|
171 assertEquals(t.s.length, c.s.length);
|
|
172 for (int i = 0; i < t.s.length; i++) {
|
|
173 assertEquals(t.s[i], c.s[i]);
|
|
174 }
|
|
175 assertEquals(t.i.length, c.i.length);
|
|
176 for (int i = 0; i < t.i.length; i++) {
|
|
177 assertEquals(t.i[i], c.i[i]);
|
|
178 }
|
|
179 assertEquals(t.l.length, c.l.length);
|
|
180 for (int i = 0; i < t.l.length; i++) {
|
|
181 assertEquals(t.l[i], c.l[i]);
|
|
182 }
|
|
183 assertEquals(t.f.length, c.f.length);
|
|
184 for (int i = 0; i < t.f.length; i++) {
|
|
185 assertEquals(t.f[i], c.f[i]);
|
|
186 }
|
|
187 assertEquals(t.d.length, c.d.length);
|
|
188 for (int i = 0; i < t.d.length; i++) {
|
|
189 assertEquals(t.d[i], c.d[i]);
|
|
190 }
|
|
191 assertEquals(t.str.length, c.str.length);
|
|
192 for (int i = 0; i < t.str.length; i++) {
|
|
193 assertEquals(t.str[i], c.str[i]);
|
|
194 }
|
|
195 }
|
|
196
|
|
197 @Message
|
|
198 public static class GenericsTest {
|
|
199 public List<String>[] slist;
|
|
200 public Map<String, Integer>[] imap;
|
|
201
|
|
202 public GenericsTest() {
|
|
203 }
|
|
204 }
|
|
205
|
|
206 @SuppressWarnings({ "unchecked", "rawtypes" })
|
|
207 @Ignore
|
|
208 @Test
|
|
209 public void testGenerics() throws Exception {
|
|
210 MessagePack msgpack = new MessagePack();
|
|
211
|
|
212 GenericsTest t = new GenericsTest();
|
|
213 t.slist = new List[2];
|
|
214 t.slist[0] = new ArrayList();
|
|
215 t.slist[0].add("aa");
|
|
216 t.slist[0].add("bb");
|
|
217 t.slist[1] = new ArrayList();
|
|
218 t.slist[1].add("cc");
|
|
219 t.imap = new Map[2];
|
|
220 t.imap[0] = new HashMap();
|
|
221 t.imap[0].put("aa", 1);
|
|
222 t.imap[0].put("bb", 2);
|
|
223 t.imap[1] = new HashMap();
|
|
224 t.imap[1].put("cc", 3);
|
|
225
|
|
226 BufferPacker packer = msgpack.createBufferPacker();
|
|
227 packer.write(t);
|
|
228 byte[] raw = packer.toByteArray();
|
|
229 BufferUnpacker unpacker = msgpack.createBufferUnpacker(raw);
|
|
230 GenericsTest u = unpacker.read(GenericsTest.class);
|
|
231 assertEquals(t.slist.length, u.slist.length);
|
|
232 for (int i = 0; i < t.slist.length; i++) {
|
|
233 assertEquals(t.slist[i].size(), u.slist[i].size());
|
|
234 for (int j = 0; j < t.slist[i].size(); j++) {
|
|
235 assertEquals(t.slist[i].get(j), u.slist[i].get(j));
|
|
236 }
|
|
237 }
|
|
238 for (int i = 0; i < t.imap.length; i++) {
|
|
239 assertEquals(t.imap[i].size(), u.imap[i].size());
|
|
240 for (String j : t.imap[i].keySet()) {
|
|
241 assertEquals(t.imap[i].get(j), u.imap[i].get(j));
|
|
242 }
|
|
243 }
|
|
244
|
|
245 Unconverter unconverter = new Unconverter(msgpack);
|
|
246 unconverter.write(t);
|
|
247 Value value = unconverter.getResult();
|
|
248 Converter converter = new Converter(msgpack, value);
|
|
249 GenericsTest c = converter.read(GenericsTest.class);
|
|
250 assertEquals(t.slist.length, c.slist.length);
|
|
251 for (int i = 0; i < t.slist.length; i++) {
|
|
252 assertEquals(t.slist[i].size(), c.slist[i].size());
|
|
253 for (int j = 0; j < t.slist[i].size(); j++) {
|
|
254 assertEquals(t.slist[i].get(j), c.slist[i].get(j));
|
|
255 }
|
|
256 }
|
|
257 for (int i = 0; i < t.imap.length; i++) {
|
|
258 assertEquals(t.imap[i].size(), c.imap[i].size());
|
|
259 for (String j : t.imap[i].keySet()) {
|
|
260 assertEquals(t.imap[i].get(j), c.imap[i].get(j));
|
|
261 }
|
|
262 }
|
|
263 }
|
|
264
|
|
265 @Message
|
|
266 public static class Dim2Test {
|
|
267 public int[][] i;
|
|
268 public byte[][] b;
|
|
269 public String[][] str;
|
|
270 //public List<String>[][] slist;
|
|
271
|
|
272 public Dim2Test() {
|
|
273 }
|
|
274 }
|
|
275
|
|
276 @SuppressWarnings({ "unchecked", "rawtypes" })
|
|
277 @Test
|
|
278 public void testDim2() throws Exception {
|
|
279 MessagePack msgpack = new MessagePack();
|
|
280 Dim2Test t = new Dim2Test();
|
|
281 t.i = new int[2][];
|
|
282 t.i[0] = new int[] { 0, 1 };
|
|
283 t.i[1] = new int[] { 2, 3, 4 };
|
|
284 t.b = new byte[2][];
|
|
285 t.b[0] = new byte[] { 5, 6 };
|
|
286 t.b[1] = new byte[] { 7, 8, 9 };
|
|
287 t.str = new String[2][];
|
|
288 t.str[0] = new String[] { "aa", "bb" };
|
|
289 t.str[1] = new String[] { "cc", "dd", "ee" };
|
|
290 /**
|
|
291 t.slist = new List[2][];
|
|
292 t.slist[0] = new List[1];
|
|
293 t.slist[0][0] = new ArrayList();
|
|
294 t.slist[0][0].add("ff");
|
|
295 t.slist[0][0].add("gg");
|
|
296 t.slist[1] = new List[2];
|
|
297 t.slist[1][0] = new ArrayList();
|
|
298 t.slist[1][0].add("hh");
|
|
299 t.slist[1][0].add("ii");
|
|
300 t.slist[1][1] = new ArrayList();
|
|
301 t.slist[1][1].add("jj");
|
|
302 t.slist[1][1].add("kk");
|
|
303 */
|
|
304
|
|
305 BufferPacker packer = msgpack.createBufferPacker();
|
|
306 packer.write(t);
|
|
307 byte[] raw = packer.toByteArray();
|
|
308 BufferUnpacker unpacker = msgpack.createBufferUnpacker(raw);
|
|
309 Dim2Test u = unpacker.read(Dim2Test.class);
|
|
310 assertEquals(t.i.length, u.i.length);
|
|
311 for (int i = 0; i < t.i.length; i++) {
|
|
312 assertEquals(t.i[i].length, u.i[i].length);
|
|
313 for (int j = 0; j < t.i[i].length; j++) {
|
|
314 assertEquals(t.i[i][j], u.i[i][j]);
|
|
315 }
|
|
316 }
|
|
317 assertEquals(t.b.length, u.b.length);
|
|
318 for (int i = 0; i < t.b.length; i++) {
|
|
319 assertEquals(t.b[i].length, u.b[i].length);
|
|
320 for (int j = 0; j < t.i[i].length; j++) {
|
|
321 assertEquals(t.b[i][j], u.b[i][j]);
|
|
322 }
|
|
323 }
|
|
324 assertEquals(t.str.length, u.str.length);
|
|
325 for (int i = 0; i < t.str.length; i++) {
|
|
326 assertEquals(t.str[i].length, u.str[i].length);
|
|
327 for (int j = 0; j < t.str[i].length; j++) {
|
|
328 assertEquals(t.str[i][j], u.str[i][j]);
|
|
329 }
|
|
330 }
|
|
331 /**
|
|
332 assertEquals(t.slist.length, u.slist.length);
|
|
333 for (int i = 0; i < t.slist.length; i++) {
|
|
334 assertEquals(t.slist[i].length, u.slist[i].length);
|
|
335 for (int j = 0; j < t.slist[i].length; j++) {
|
|
336 assertEquals(t.slist[i][j].size(), u.slist[i][j].size());
|
|
337 for (int k = 0; k < t.slist[i][j].size(); k++) {
|
|
338 assertEquals(t.slist[i][j].get(k), u.slist[i][j].get(k));
|
|
339 }
|
|
340 }
|
|
341 }
|
|
342 */
|
|
343 }
|
|
344
|
|
345 @Message
|
|
346 public static class Dim3Test {
|
|
347 public int[][][] i;
|
|
348 public String[][][] str;
|
|
349 public List<String>[][][] slist;
|
|
350
|
|
351 public Dim3Test() {
|
|
352 }
|
|
353 }
|
|
354
|
|
355 @SuppressWarnings({ "unchecked", "rawtypes" })
|
|
356 @Ignore
|
|
357 @Test
|
|
358 public void testDim3() throws Exception {
|
|
359 MessagePack msgpack = new MessagePack();
|
|
360
|
|
361 Dim3Test t = new Dim3Test();
|
|
362 t.i = new int[2][][];
|
|
363 t.i[0] = new int[2][];
|
|
364 t.i[0][0] = new int[] { 0, 1 };
|
|
365 t.i[0][1] = new int[] { 2, 3, 4 };
|
|
366 t.i[1] = new int[1][];
|
|
367 t.i[1][0] = new int[] { 5 };
|
|
368 t.str = new String[2][][];
|
|
369 t.str[0] = new String[1][];
|
|
370 t.str[0][0] = new String[] { "aa", "bb" };
|
|
371 t.str[1] = new String[2][];
|
|
372 t.str[1][0] = new String[] { "cc", "dd", "ee" };
|
|
373 t.str[1][1] = new String[] { "ff" };
|
|
374 t.slist = new List[2][][];
|
|
375 t.slist[0] = new List[2][];
|
|
376 t.slist[0][0] = new List[1];
|
|
377 t.slist[0][0][0] = new ArrayList();
|
|
378 t.slist[0][0][0].add("ff");
|
|
379 t.slist[0][0][0].add("gg");
|
|
380 t.slist[0][1] = new List[2];
|
|
381 t.slist[0][1][0] = new ArrayList();
|
|
382 t.slist[0][1][0].add("hh");
|
|
383 t.slist[0][1][0].add("ii");
|
|
384 t.slist[0][1][1] = new ArrayList();
|
|
385 t.slist[0][1][1].add("jj");
|
|
386 t.slist[0][1][1].add("kk");
|
|
387 t.slist[1] = new List[1][];
|
|
388 t.slist[1][0] = new List[0];
|
|
389
|
|
390 BufferPacker packer = msgpack.createBufferPacker();
|
|
391 packer.write(t);
|
|
392 byte[] raw = packer.toByteArray();
|
|
393 BufferUnpacker unpacker = msgpack.createBufferUnpacker(raw);
|
|
394 Dim3Test u = unpacker.read(Dim3Test.class);
|
|
395 assertEquals(t.i.length, t.i.length);
|
|
396 for (int i = 0; i < t.i.length; i++) {
|
|
397 assertEquals(t.i[i].length, u.i[i].length);
|
|
398 for (int j = 0; j < t.i[i].length; j++) {
|
|
399 for (int k = 0; k < t.i[i].length; k++) {
|
|
400 assertEquals(t.i[i][j][k], u.i[i][j][k]);
|
|
401 }
|
|
402 }
|
|
403 }
|
|
404 assertEquals(t.str.length, t.str.length);
|
|
405 for (int i = 0; i < t.str.length; i++) {
|
|
406 assertEquals(t.str[i].length, u.str[i].length);
|
|
407 for (int j = 0; j < t.str[i].length; j++) {
|
|
408 assertEquals(t.str[i][j].length, u.str[i][j].length);
|
|
409 for (int k = 0; k < t.str[i][j].length; k++) {
|
|
410 assertEquals(t.str[i][j][k], u.str[i][j][k]);
|
|
411 }
|
|
412 }
|
|
413 }
|
|
414 assertEquals(t.slist.length, t.slist.length);
|
|
415 for (int i = 0; i < t.slist.length; i++) {
|
|
416 assertEquals(t.slist[i].length, u.slist[i].length);
|
|
417 for (int j = 0; j < t.slist[i].length; j++) {
|
|
418 assertEquals(t.slist[i][j].length, u.slist[i][j].length);
|
|
419 for (int k = 0; k < t.slist[i][j].length; k++) {
|
|
420 assertEquals(t.slist[i][j][k].size(),
|
|
421 u.slist[i][j][k].size());
|
|
422 for (int l = 0; l < t.slist[i][j][k].size(); l++) {
|
|
423 assertEquals(t.slist[i][j][k].get(l),
|
|
424 u.slist[i][j][k].get(l));
|
|
425 }
|
|
426 }
|
|
427 }
|
|
428 }
|
|
429 }
|
|
430
|
|
431 @Test
|
|
432 public void testLocal() throws IOException {
|
|
433 MessagePack msgpack = new MessagePack();
|
|
434
|
|
435 int[][][] src = new int[10][20][30];
|
|
436 for (int i = 0; i < 10; ++i) {
|
|
437 for (int j = 0; j < 20; ++j) {
|
|
438 for (int k = 0; k < 30; ++k) {
|
|
439 src[i][j][k] = (int) (Math.random() * 100);
|
|
440 }
|
|
441 }
|
|
442 }
|
|
443
|
|
444 BufferPacker packer = msgpack.createBufferPacker();
|
|
445 packer.write(src);
|
|
446 byte[] raw = packer.toByteArray();
|
|
447 BufferUnpacker unpacker = msgpack.createBufferUnpacker(raw);
|
|
448 int[][][] u = unpacker.read(int[][][].class);
|
|
449 assertEquals(src.length, u.length);
|
|
450 for (int i = 0; i < src.length; ++i) {
|
|
451 assertEquals(src[i].length, u[i].length);
|
|
452 for (int j = 0; j < src[i].length; ++j) {
|
|
453 assertEquals(src[i][j].length, u[i][j].length);
|
|
454 for (int k = 0; k < src[i][j].length; ++k) {
|
|
455 assertEquals(src[i][j][k], u[i][j][k]);
|
|
456 }
|
|
457 }
|
|
458 }
|
|
459
|
|
460 Unconverter unconverter = new Unconverter(msgpack);
|
|
461 unconverter.write(src);
|
|
462 Value value = unconverter.getResult();
|
|
463 Converter converter = new Converter(msgpack, value);
|
|
464 int[][][] c = converter.read(int[][][].class);
|
|
465 assertEquals(src.length, c.length);
|
|
466 for (int i = 0; i < src.length; ++i) {
|
|
467 assertEquals(src[i].length, c[i].length);
|
|
468 for (int j = 0; j < src[i].length; ++j) {
|
|
469 assertEquals(src[i][j].length, c[i][j].length);
|
|
470 for (int k = 0; k < src[i][j].length; ++k) {
|
|
471 assertEquals(src[i][j][k], c[i][j][k]);
|
|
472 }
|
|
473 }
|
|
474 }
|
|
475 }
|
|
476 }
|