Mercurial > hg > Members > sugi > MessagePack-java
diff src/test/java/org/msgpack/TestNestedList.java @ 0:cb825acd883a
first commit
author | sugi |
---|---|
date | Sat, 18 Oct 2014 15:06:15 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/test/java/org/msgpack/TestNestedList.java Sat Oct 18 15:06:15 2014 +0900 @@ -0,0 +1,96 @@ +package org.msgpack; + +import junit.framework.Assert; +import org.junit.Before; +import org.junit.Test; +import org.msgpack.annotation.Message; +import org.msgpack.type.ArrayValue; +import org.msgpack.type.Value; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * User: takeshita + * Create: 11/10/17 23:17 + */ +public class TestNestedList { + + MessagePack messagePack; + + @Before + public void before(){ + messagePack = new MessagePack(); + } + + @Test + public void testTestNestedList() throws IOException { + NestedList obj = new NestedList(); + obj.list.add(list("aaa", "bbb")); + obj.list.add(list(new MyClass("obj1"), new MyClass("obj2"))); + obj.list2.add((List<MyClass>)list(new MyClass("obj3"))); + + byte[] bytes = messagePack.write(obj); + + // Can't unpack as NestedList + Value unpacked = messagePack.read(bytes); + ArrayValue root = unpacked.asArrayValue().getElementArray()[0].asArrayValue(); + ArrayValue list1 = root.getElementArray()[0].asArrayValue(); + ArrayValue list2 = root.getElementArray()[1].asArrayValue(); + ArrayValue list3 = unpacked.asArrayValue().getElementArray()[1].asArrayValue(); + list3 = list3.getElementArray()[0].asArrayValue(); + + Assert.assertEquals("aaa",list1.getElementArray()[0].asRawValue().getString()); + Assert.assertEquals("bbb",list1.getElementArray()[1].asRawValue().getString()); + Assert.assertEquals("obj1",messagePack.convert(list2.getElementArray()[0],MyClass.class).name); + Assert.assertEquals("obj2",messagePack.convert(list2.getElementArray()[1],MyClass.class).name); + Assert.assertEquals("obj3",messagePack.convert(list3.getElementArray()[0],MyClass.class).name); + + } + + @Test + public void testNestedListToValue() throws IOException { + + List values = list( list("hoge",4) , list(list(2,"aaa"),list("bbb"))); + + Value value = messagePack.unconvert(values); + + Value[] rootArray = value.asArrayValue().getElementArray(); + Value[] list1 = rootArray[0].asArrayValue().getElementArray(); + Value[] list2 = rootArray[1].asArrayValue().getElementArray(); + Value[] list3 = list2[0].asArrayValue().getElementArray(); + Value[] list4 = list2[1].asArrayValue().getElementArray(); + Assert.assertEquals("hoge",list1[0].asRawValue().getString()); + Assert.assertEquals(4,list1[1].asIntegerValue().getInt()); + Assert.assertEquals(2,list3[0].asIntegerValue().getInt()); + Assert.assertEquals("aaa",list3[1].asRawValue().getString()); + Assert.assertEquals("bbb",list4[0].asRawValue().getString()); + + } + + private List<?> list( Object ... elements){ + List<Object> list = new ArrayList(); + for(Object o : elements){ + list.add(o); + } + return list; + } + + @Message + public static class NestedList{ + public List<List> list = new ArrayList<List>(); + + public List<List<MyClass>> list2 = new ArrayList<List<MyClass>>(); + + } + + @Message + public static class MyClass{ + String name; + + public MyClass(){} + public MyClass(String n ){ name = n;} + } + +}