Mercurial > hg > Members > sugi > MessagePack-java
view 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 |
line wrap: on
line source
package org.msgpack.unpacker; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; import java.util.Random; import org.msgpack.MessagePack; import org.msgpack.type.Value; import org.msgpack.type.ValueFactory; import org.msgpack.packer.BufferPacker; import org.msgpack.unpacker.BufferUnpacker; import org.msgpack.unpacker.UnpackerIterator; import org.junit.Test; public class TestBufferUnpacker { @Test public void testEachByte() throws Exception { List<Value> vs = new ArrayList<Value>(); BufferPacker pk = new MessagePack().createBufferPacker(); for (int i = 0; i < 50; i++) { Value v = createComplexType(); vs.add(v); pk.write(v); } byte[] raw = pk.toByteArray(); int n = 0; BufferUnpacker u = new MessagePack().createBufferUnpacker(); UnpackerIterator it = u.iterator(); for (int i = 0; i < raw.length; i++) { u.feed(raw, i, 1); while (it.hasNext()) { Value v = it.next(); assertEquals(vs.get(n), v); n++; } } assertEquals(50, n); } @Test public void testElevenBytes() throws Exception { List<Value> vs = new ArrayList<Value>(); BufferPacker pk = new MessagePack().createBufferPacker(); for (int i = 0; i < 55; i++) { Value v = createComplexType(); vs.add(v); pk.write(v); } byte[] raw = pk.toByteArray(); int n = 0; BufferUnpacker u = new MessagePack().createBufferUnpacker(); UnpackerIterator it = u.iterator(); for (int i = 0; i < raw.length; i += 11) { u.feed(raw, i, 11); while (it.hasNext()) { Value v = it.next(); assertEquals(vs.get(n), v); n++; } } assertEquals(55, n); } @Test public void testEachObject() throws Exception { BufferUnpacker u = new MessagePack().createBufferUnpacker(); UnpackerIterator it = u.iterator(); for (int i = 0; i < 50; i++) { Value v = createComplexType(); BufferPacker pk = new MessagePack().createBufferPacker(); pk.write(v); byte[] raw = pk.toByteArray(); // pk.reset(); u.feed(raw, 0, raw.length); assertTrue(it.hasNext()); Value ov = it.next(); assertEquals(v, ov); // assertFalse(it.hasNext()); } } public Value createComplexType() throws Exception { Random rand = new Random(System.currentTimeMillis()); byte[] b0 = new byte[0]; byte[] b1 = new byte[10]; rand.nextBytes(b1); byte[] b2 = new byte[1024]; rand.nextBytes(b2); Value list = ValueFactory.createArrayValue(new Value[] { ValueFactory.createRawValue(b0), ValueFactory.createRawValue(b1), ValueFactory.createRawValue(b2), }); Value map = ValueFactory.createMapValue(new Value[] { ValueFactory.createIntegerValue(0), ValueFactory.createIntegerValue(Integer.MIN_VALUE), ValueFactory.createIntegerValue(rand.nextInt()), ValueFactory.createIntegerValue(Integer.MAX_VALUE), ValueFactory.createFloatValue(rand.nextFloat()), ValueFactory.createBooleanValue(true), ValueFactory.createFloatValue(rand.nextDouble()), ValueFactory.createNilValue(), }); List<Value> values = new ArrayList<Value>(); for (int i = 0; i < 2; i++) { values.add(list); for (int j = 0; j < 100; j++) { values.add(map); } } Value complex = ValueFactory.createArrayValue(values .toArray(new Value[values.size()])); return complex; } }