public void testArrays() throws Exception {
marshallAndAssertArrayEquality(new Object[] { });
marshallAndAssertArrayEquality(new String[] { null, "foo" });
marshallAndAssertArrayEquality(new String[] { "foo", "bar" });
marshallAndAssertArrayEquality(new Object[] { 1.2, 3.4 });
marshallAndAssertArrayEquality(new Pojo[] { });
marshallAndAssertArrayEquality(new Pojo[] { null });
marshallAndAssertArrayEquality(new Pojo[] { null, null });
marshallAndAssertArrayEquality(new Pojo[] { new Pojo(1, false), new Pojo(2, true) });
marshallAndAssertArrayEquality(new Pojo[] { new Pojo(3, false), null });
marshallAndAssertArrayEquality(new Pojo[] { new Pojo(4, false), new PojoExtended(5, true) });
marshallAndAssertArrayEquality(new I[] { new Pojo(6, false), new Pojo(7, true) });
marshallAndAssertArrayEquality(new I[] { new Pojo(8, false), new PojoExtended(9, true) });
marshallAndAssertArrayEquality(new I[] { new Pojo(10, false), new PojoWithExternalizer(11, false) });
marshallAndAssertArrayEquality(new PojoWithExternalizer[] {
new PojoWithExternalizer(12, true), new PojoWithExternalizer(13, false) });
marshallAndAssertArrayEquality(new I[] { new PojoWithExternalizer(14, false), new PojoWithExternalizer(15, true)});
marshallAndAssertArrayEquality(new PojoWithMultiExternalizer[] {
new PojoWithMultiExternalizer(16, true), new PojoWithMultiExternalizer(17, false) });
marshallAndAssertArrayEquality(new I[] { new PojoWithMultiExternalizer(18, false), new PojoWithExternalizer(19, true)});
marshallAndAssertArrayEquality(new I[] { new PojoWithMultiExternalizer(20, false), new PojoWithMultiExternalizer(21, true)});
marshallAndAssertArrayEquality(new Object[] { new PojoWithMultiExternalizer(22, false), new PojoWithMultiExternalizer(23, true)});
marshallAndAssertArrayEquality(new Object[] { new PojoWithExternalizer(24, false), new PojoWithExternalizer(25, true)});
marshallAndAssertArrayEquality(new Object[] { new PojoAnnotated(26, false), "foo"});
marshallAndAssertArrayEquality(new Object[] { new PojoAnnotated(27, false), new PojoAnnotated(28, true)});
marshallAndAssertArrayEquality(new PojoAnnotated[] { new PojoAnnotated(27, false), new PojoAnnotated(28, true)});
marshallAndAssertArrayEquality(new PojoAnnotated[] { null, null });
}