annotate src/test/java/org/msgpack/unpacker/TestBufferUnpacker.java @ 0:cb825acd883a

first commit
author sugi
date Sat, 18 Oct 2014 15:06:15 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cb825acd883a first commit
sugi
parents:
diff changeset
1 package org.msgpack.unpacker;
cb825acd883a first commit
sugi
parents:
diff changeset
2
cb825acd883a first commit
sugi
parents:
diff changeset
3 import static org.junit.Assert.assertEquals;
cb825acd883a first commit
sugi
parents:
diff changeset
4 import static org.junit.Assert.assertTrue;
cb825acd883a first commit
sugi
parents:
diff changeset
5
cb825acd883a first commit
sugi
parents:
diff changeset
6 import java.util.ArrayList;
cb825acd883a first commit
sugi
parents:
diff changeset
7 import java.util.List;
cb825acd883a first commit
sugi
parents:
diff changeset
8 import java.util.Random;
cb825acd883a first commit
sugi
parents:
diff changeset
9
cb825acd883a first commit
sugi
parents:
diff changeset
10 import org.msgpack.MessagePack;
cb825acd883a first commit
sugi
parents:
diff changeset
11 import org.msgpack.type.Value;
cb825acd883a first commit
sugi
parents:
diff changeset
12 import org.msgpack.type.ValueFactory;
cb825acd883a first commit
sugi
parents:
diff changeset
13 import org.msgpack.packer.BufferPacker;
cb825acd883a first commit
sugi
parents:
diff changeset
14 import org.msgpack.unpacker.BufferUnpacker;
cb825acd883a first commit
sugi
parents:
diff changeset
15 import org.msgpack.unpacker.UnpackerIterator;
cb825acd883a first commit
sugi
parents:
diff changeset
16
cb825acd883a first commit
sugi
parents:
diff changeset
17 import org.junit.Test;
cb825acd883a first commit
sugi
parents:
diff changeset
18
cb825acd883a first commit
sugi
parents:
diff changeset
19 public class TestBufferUnpacker {
cb825acd883a first commit
sugi
parents:
diff changeset
20 @Test
cb825acd883a first commit
sugi
parents:
diff changeset
21 public void testEachByte() throws Exception {
cb825acd883a first commit
sugi
parents:
diff changeset
22 List<Value> vs = new ArrayList<Value>();
cb825acd883a first commit
sugi
parents:
diff changeset
23
cb825acd883a first commit
sugi
parents:
diff changeset
24 BufferPacker pk = new MessagePack().createBufferPacker();
cb825acd883a first commit
sugi
parents:
diff changeset
25 for (int i = 0; i < 50; i++) {
cb825acd883a first commit
sugi
parents:
diff changeset
26 Value v = createComplexType();
cb825acd883a first commit
sugi
parents:
diff changeset
27 vs.add(v);
cb825acd883a first commit
sugi
parents:
diff changeset
28 pk.write(v);
cb825acd883a first commit
sugi
parents:
diff changeset
29 }
cb825acd883a first commit
sugi
parents:
diff changeset
30 byte[] raw = pk.toByteArray();
cb825acd883a first commit
sugi
parents:
diff changeset
31
cb825acd883a first commit
sugi
parents:
diff changeset
32 int n = 0;
cb825acd883a first commit
sugi
parents:
diff changeset
33 BufferUnpacker u = new MessagePack().createBufferUnpacker();
cb825acd883a first commit
sugi
parents:
diff changeset
34 UnpackerIterator it = u.iterator();
cb825acd883a first commit
sugi
parents:
diff changeset
35
cb825acd883a first commit
sugi
parents:
diff changeset
36 for (int i = 0; i < raw.length; i++) {
cb825acd883a first commit
sugi
parents:
diff changeset
37 u.feed(raw, i, 1);
cb825acd883a first commit
sugi
parents:
diff changeset
38 while (it.hasNext()) {
cb825acd883a first commit
sugi
parents:
diff changeset
39 Value v = it.next();
cb825acd883a first commit
sugi
parents:
diff changeset
40 assertEquals(vs.get(n), v);
cb825acd883a first commit
sugi
parents:
diff changeset
41 n++;
cb825acd883a first commit
sugi
parents:
diff changeset
42 }
cb825acd883a first commit
sugi
parents:
diff changeset
43 }
cb825acd883a first commit
sugi
parents:
diff changeset
44 assertEquals(50, n);
cb825acd883a first commit
sugi
parents:
diff changeset
45 }
cb825acd883a first commit
sugi
parents:
diff changeset
46
cb825acd883a first commit
sugi
parents:
diff changeset
47 @Test
cb825acd883a first commit
sugi
parents:
diff changeset
48 public void testElevenBytes() throws Exception {
cb825acd883a first commit
sugi
parents:
diff changeset
49 List<Value> vs = new ArrayList<Value>();
cb825acd883a first commit
sugi
parents:
diff changeset
50
cb825acd883a first commit
sugi
parents:
diff changeset
51 BufferPacker pk = new MessagePack().createBufferPacker();
cb825acd883a first commit
sugi
parents:
diff changeset
52 for (int i = 0; i < 55; i++) {
cb825acd883a first commit
sugi
parents:
diff changeset
53 Value v = createComplexType();
cb825acd883a first commit
sugi
parents:
diff changeset
54 vs.add(v);
cb825acd883a first commit
sugi
parents:
diff changeset
55 pk.write(v);
cb825acd883a first commit
sugi
parents:
diff changeset
56 }
cb825acd883a first commit
sugi
parents:
diff changeset
57 byte[] raw = pk.toByteArray();
cb825acd883a first commit
sugi
parents:
diff changeset
58
cb825acd883a first commit
sugi
parents:
diff changeset
59 int n = 0;
cb825acd883a first commit
sugi
parents:
diff changeset
60 BufferUnpacker u = new MessagePack().createBufferUnpacker();
cb825acd883a first commit
sugi
parents:
diff changeset
61 UnpackerIterator it = u.iterator();
cb825acd883a first commit
sugi
parents:
diff changeset
62
cb825acd883a first commit
sugi
parents:
diff changeset
63 for (int i = 0; i < raw.length; i += 11) {
cb825acd883a first commit
sugi
parents:
diff changeset
64 u.feed(raw, i, 11);
cb825acd883a first commit
sugi
parents:
diff changeset
65 while (it.hasNext()) {
cb825acd883a first commit
sugi
parents:
diff changeset
66 Value v = it.next();
cb825acd883a first commit
sugi
parents:
diff changeset
67 assertEquals(vs.get(n), v);
cb825acd883a first commit
sugi
parents:
diff changeset
68 n++;
cb825acd883a first commit
sugi
parents:
diff changeset
69 }
cb825acd883a first commit
sugi
parents:
diff changeset
70 }
cb825acd883a first commit
sugi
parents:
diff changeset
71 assertEquals(55, n);
cb825acd883a first commit
sugi
parents:
diff changeset
72 }
cb825acd883a first commit
sugi
parents:
diff changeset
73
cb825acd883a first commit
sugi
parents:
diff changeset
74 @Test
cb825acd883a first commit
sugi
parents:
diff changeset
75 public void testEachObject() throws Exception {
cb825acd883a first commit
sugi
parents:
diff changeset
76 BufferUnpacker u = new MessagePack().createBufferUnpacker();
cb825acd883a first commit
sugi
parents:
diff changeset
77 UnpackerIterator it = u.iterator();
cb825acd883a first commit
sugi
parents:
diff changeset
78
cb825acd883a first commit
sugi
parents:
diff changeset
79 for (int i = 0; i < 50; i++) {
cb825acd883a first commit
sugi
parents:
diff changeset
80 Value v = createComplexType();
cb825acd883a first commit
sugi
parents:
diff changeset
81 BufferPacker pk = new MessagePack().createBufferPacker();
cb825acd883a first commit
sugi
parents:
diff changeset
82 pk.write(v);
cb825acd883a first commit
sugi
parents:
diff changeset
83 byte[] raw = pk.toByteArray();
cb825acd883a first commit
sugi
parents:
diff changeset
84 // pk.reset();
cb825acd883a first commit
sugi
parents:
diff changeset
85
cb825acd883a first commit
sugi
parents:
diff changeset
86 u.feed(raw, 0, raw.length);
cb825acd883a first commit
sugi
parents:
diff changeset
87
cb825acd883a first commit
sugi
parents:
diff changeset
88 assertTrue(it.hasNext());
cb825acd883a first commit
sugi
parents:
diff changeset
89 Value ov = it.next();
cb825acd883a first commit
sugi
parents:
diff changeset
90 assertEquals(v, ov);
cb825acd883a first commit
sugi
parents:
diff changeset
91 // assertFalse(it.hasNext());
cb825acd883a first commit
sugi
parents:
diff changeset
92 }
cb825acd883a first commit
sugi
parents:
diff changeset
93 }
cb825acd883a first commit
sugi
parents:
diff changeset
94
cb825acd883a first commit
sugi
parents:
diff changeset
95 public Value createComplexType() throws Exception {
cb825acd883a first commit
sugi
parents:
diff changeset
96 Random rand = new Random(System.currentTimeMillis());
cb825acd883a first commit
sugi
parents:
diff changeset
97 byte[] b0 = new byte[0];
cb825acd883a first commit
sugi
parents:
diff changeset
98 byte[] b1 = new byte[10];
cb825acd883a first commit
sugi
parents:
diff changeset
99 rand.nextBytes(b1);
cb825acd883a first commit
sugi
parents:
diff changeset
100 byte[] b2 = new byte[1024];
cb825acd883a first commit
sugi
parents:
diff changeset
101 rand.nextBytes(b2);
cb825acd883a first commit
sugi
parents:
diff changeset
102
cb825acd883a first commit
sugi
parents:
diff changeset
103 Value list = ValueFactory.createArrayValue(new Value[] {
cb825acd883a first commit
sugi
parents:
diff changeset
104 ValueFactory.createRawValue(b0),
cb825acd883a first commit
sugi
parents:
diff changeset
105 ValueFactory.createRawValue(b1),
cb825acd883a first commit
sugi
parents:
diff changeset
106 ValueFactory.createRawValue(b2), });
cb825acd883a first commit
sugi
parents:
diff changeset
107
cb825acd883a first commit
sugi
parents:
diff changeset
108 Value map = ValueFactory.createMapValue(new Value[] {
cb825acd883a first commit
sugi
parents:
diff changeset
109 ValueFactory.createIntegerValue(0),
cb825acd883a first commit
sugi
parents:
diff changeset
110 ValueFactory.createIntegerValue(Integer.MIN_VALUE),
cb825acd883a first commit
sugi
parents:
diff changeset
111 ValueFactory.createIntegerValue(rand.nextInt()),
cb825acd883a first commit
sugi
parents:
diff changeset
112 ValueFactory.createIntegerValue(Integer.MAX_VALUE),
cb825acd883a first commit
sugi
parents:
diff changeset
113 ValueFactory.createFloatValue(rand.nextFloat()),
cb825acd883a first commit
sugi
parents:
diff changeset
114 ValueFactory.createBooleanValue(true),
cb825acd883a first commit
sugi
parents:
diff changeset
115 ValueFactory.createFloatValue(rand.nextDouble()),
cb825acd883a first commit
sugi
parents:
diff changeset
116 ValueFactory.createNilValue(), });
cb825acd883a first commit
sugi
parents:
diff changeset
117
cb825acd883a first commit
sugi
parents:
diff changeset
118 List<Value> values = new ArrayList<Value>();
cb825acd883a first commit
sugi
parents:
diff changeset
119
cb825acd883a first commit
sugi
parents:
diff changeset
120 for (int i = 0; i < 2; i++) {
cb825acd883a first commit
sugi
parents:
diff changeset
121 values.add(list);
cb825acd883a first commit
sugi
parents:
diff changeset
122 for (int j = 0; j < 100; j++) {
cb825acd883a first commit
sugi
parents:
diff changeset
123 values.add(map);
cb825acd883a first commit
sugi
parents:
diff changeset
124 }
cb825acd883a first commit
sugi
parents:
diff changeset
125 }
cb825acd883a first commit
sugi
parents:
diff changeset
126
cb825acd883a first commit
sugi
parents:
diff changeset
127 Value complex = ValueFactory.createArrayValue(values
cb825acd883a first commit
sugi
parents:
diff changeset
128 .toArray(new Value[values.size()]));
cb825acd883a first commit
sugi
parents:
diff changeset
129 return complex;
cb825acd883a first commit
sugi
parents:
diff changeset
130 }
cb825acd883a first commit
sugi
parents:
diff changeset
131 }