package de.javakaffee.kryoserializers.guava; import com.esotericsoftware.kryo.Kryo; import com.google.common.collect.ImmutableMap; import static org.testng.Assert.*; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import java.util.EnumMap; import static de.javakaffee.kryoserializers.KryoTest.deserialize; import static de.javakaffee.kryoserializers.KryoTest.serialize; /** * Created by pmarcos on 29/06/15. */ public class ImmutableMapSerializerTest { private enum Planet { MERCURY, VENUS, EARTH, MARS; } private Kryo _kryo; @BeforeTest public void setUp() throws Exception { _kryo = new Kryo(); ImmutableMapSerializer.registerSerializers(_kryo); } @Test public void testEmpty() { final ImmutableMap<?, ?> obj = ImmutableMap.of(); final byte[] serialized = serialize(_kryo, obj); final ImmutableMap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableMap.class); assertTrue(deserialized.isEmpty()); assertEquals(deserialized.size(), obj.size()); } @Test public void testSingleton() { final ImmutableMap<?, ?> obj = ImmutableMap.of(3, "k"); final byte[] serialized = serialize(_kryo, obj); final ImmutableMap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableMap.class); assertEquals(deserialized, obj); } @Test public void testRegular() { final ImmutableMap<?, ?> obj = ImmutableMap.of(3, "k", 5, "r", 6, "y"); final byte[] serialized = serialize(_kryo, obj); final ImmutableMap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableMap.class); assertEquals(deserialized, obj); } @Test public void testEnum() { final EnumMap<Planet, String> obj = new EnumMap<Planet, String>(Planet.class); for (Planet p : Planet.values()) { obj.put(p, p.name()); } final ImmutableMap<?, ?> immutableObj = ImmutableMap.copyOf(obj); final byte[] serialized = serialize(_kryo, immutableObj); final ImmutableMap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableMap.class); assertEquals(deserialized, immutableObj); } // Kryo#copy tests @Test public void testCopyEmpty() { final ImmutableMap<?, ?> obj = ImmutableMap.of(); final ImmutableMap<?, ?> copied = _kryo.copy(obj); assertSame(copied, obj); } @Test public void testCopySingleton() { final ImmutableMap<?, ?> obj = ImmutableMap.of(1, 1); final ImmutableMap<?, ?> copied = _kryo.copy(obj); assertSame(copied, obj); } @Test public void testCopyRegular() { final ImmutableMap<?, ?> obj = ImmutableMap.of(1, 2, 3, 4); final ImmutableMap<?, ?> copied = _kryo.copy(obj); assertSame(copied, obj); } }