package org.javersion.object; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.Matchers.nullValue; import static org.junit.Assert.assertThat; import java.util.Collection; import java.util.Iterator; import java.util.Map; import org.javersion.object.PolymorphismTest.Pet; import org.javersion.path.PropertyPath; import org.junit.Test; import com.google.common.collect.Lists; public class CollectionTest { @Versionable public static class Owner { private Collection<Pet> pets; } private final ObjectSerializer<Owner> serializer = new ObjectSerializer<>(Owner.class, TypeMappings.builder() .withClass(Pet.class).build()); @Test public void Write_And_Read_Owner_With_Pets() { Owner owner = new Owner(); owner.pets = Lists.newArrayList(new Pet("Mirri"), null, new Pet("Musti")); Map<PropertyPath, Object> map = serializer.toPropertyMap(owner); owner = serializer.fromPropertyMap(map); assertThat(owner.pets, hasSize(3)); Iterator<Pet> iter = owner.pets.iterator(); assertThat(iter.next().name, equalTo("Mirri")); assertThat(iter.next(), nullValue()); assertThat(iter.next().name, equalTo("Musti")); } }