}
@Test
public void SerializeNestedComposite() throws Exception
{
OSDArray llsdNested = new OSDArray();
OSDMap llsdMap = new OSDMap();
OSDArray llsdArray = new OSDArray();
llsdArray.add(OSD.FromInteger(1));
llsdArray.add(OSD.FromInteger(2));
llsdMap.put("t0st", llsdArray);
llsdMap.put("test", OSD.FromString("what"));
llsdNested.add(llsdMap);
llsdNested.add(OSD.FromInteger(124));
llsdNested.add(OSD.FromInteger(987));
byte[] binaryNestedSerialized = BinaryLLSDOSDParser.SerializeLLSDBinary(llsdNested);
// Because maps don't preserve order, we compare here to a deserialized value.
OSDArray llsdNestedDeserialized = (OSDArray)BinaryLLSDOSDParser.DeserializeLLSDBinary(binaryNestedSerialized);
Assert.assertEquals(OSDType.Array, llsdNestedDeserialized.getType());
Assert.assertEquals(3, llsdNestedDeserialized.count());
OSDMap llsdMapDeserialized = (OSDMap)llsdNestedDeserialized.get(0);
Assert.assertEquals(OSDType.Map, llsdMapDeserialized.getType());
Assert.assertEquals(2, llsdMapDeserialized.count());
Assert.assertEquals(OSDType.Array, llsdMapDeserialized.get("t0st").getType());
OSDArray llsdNestedArray = (OSDArray)llsdMapDeserialized.get("t0st");
Assert.assertEquals(OSDType.Array, llsdNestedArray.getType());
Assert.assertEquals(2, llsdNestedArray.count());
Assert.assertEquals(OSDType.Integer, llsdNestedArray.get(0).getType());
Assert.assertEquals(1, llsdNestedArray.get(0).asInteger());
Assert.assertEquals(OSDType.Integer, llsdNestedArray.get(1).getType());
Assert.assertEquals(2, llsdNestedArray.get(1).asInteger());
Assert.assertEquals(OSDType.String, llsdMapDeserialized.get("test").getType());
Assert.assertEquals("what", llsdMapDeserialized.get("test").asString());
Assert.assertEquals(OSDType.Integer, llsdNestedDeserialized.get(1).getType());