package jsettlers.common.utils.collections.map; import static org.junit.Assert.assertArrayEquals; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.util.LinkedHashMap; import org.junit.Test; import jsettlers.testutils.TestUtils; /** * Created by Andreas Eberle on 16.05.2016. */ public class ArrayListMapTest { @Test public void testSerializationAndDeserialization() throws IOException, ClassNotFoundException { ArrayListMap<String, String> map = new ArrayListMap<>(); for (int i = 0; i < 17; i++) { // add more than default capacity of 16 to cause an increase in capacity map.put("key_" + i, "value_" + i); } for (int i = 0; i < 12; i++) { // remove most of the elements, to make sure a newly created map wouldn't increase its capacity. map.remove("key_" + i); } ArrayListMap<String, String> readMap = TestUtils.serializeAndDeserialize(map); ByteArrayOutputStream byteOutStream1 = new ByteArrayOutputStream(); ObjectOutputStream oos1 = new ObjectOutputStream(byteOutStream1); oos1.writeObject(map); oos1.close(); ByteArrayOutputStream byteOutStream2 = new ByteArrayOutputStream(); ObjectOutputStream oos2 = new ObjectOutputStream(byteOutStream2); oos2.writeObject(readMap); oos2.close(); byte[] bytes1 = byteOutStream1.toByteArray(); byte[] bytes2 = byteOutStream2.toByteArray(); assertArrayEquals(bytes1, bytes2); } }