package de.javakaffee.kryoserializers.guava; import com.esotericsoftware.kryo.Kryo; import com.google.common.collect.ImmutableListMultimap; import com.google.common.collect.ImmutableMultimap; import static org.testng.Assert.*; import com.google.common.collect.ImmutableSetMultimap; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import static de.javakaffee.kryoserializers.KryoTest.deserialize; import static de.javakaffee.kryoserializers.KryoTest.serialize; public class ImmutableMultimapSerializerTest { private Kryo _kryo; @BeforeTest public void setUp() throws Exception { _kryo = new Kryo(); ImmutableMultimapSerializer.registerSerializers(_kryo); } @Test public void testRegularEmpty() { final ImmutableMultimap<?, ?> obj = ImmutableMultimap.of(); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableMultimap.class); assertTrue(deserialized.isEmpty()); assertEquals(deserialized, obj); } @Test public void testImmutableListMultimapEmpty() { final ImmutableMultimap<?, ?> obj = ImmutableListMultimap.of(); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableListMultimap.class); assertTrue(deserialized.isEmpty()); assertEquals(deserialized, obj); } @Test public void testImmutableSetMultimapEmpty() { final ImmutableMultimap<?, ?> obj = ImmutableSetMultimap.of(); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableSetMultimap.class); assertTrue(deserialized.isEmpty()); assertEquals(deserialized, obj); } @Test public void testRegularSingleton() { final ImmutableMultimap<?, ?> obj = ImmutableMultimap.of(3, "k"); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableMultimap.class); assertEquals(deserialized, obj); } @Test public void testImmutableListMultimapSingleton() { final ImmutableMultimap<?, ?> obj = ImmutableListMultimap.of(3, "k"); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableListMultimap.class); assertEquals(deserialized, obj); } @Test public void testImmutableSetMultimapSingleton() { final ImmutableMultimap<?, ?> obj = ImmutableSetMultimap.of(3, "k"); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableSetMultimap.class); assertEquals(deserialized.getClass(), obj.getClass()); assertEquals(deserialized, obj); } @Test public void testRegular() { final ImmutableMultimap<?, ?> obj = ImmutableMultimap.of(3, "k", 5, "r", 6, "y"); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableMultimap.class); assertEquals(deserialized, obj); } @Test public void testImmutableListMultimap() { final ImmutableMultimap<?, ?> obj = ImmutableListMultimap.of(3, "k", 5, "r", 6, "y"); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableListMultimap.class); assertEquals(deserialized, obj); } @Test public void testImmutableSetMultimap() { final ImmutableMultimap<?, ?> obj = ImmutableSetMultimap.of(3, "k", 5, "r", 6, "y"); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableSetMultimap.class); assertEquals(deserialized.getClass(), obj.getClass()); assertEquals(deserialized, obj); } @Test public void testRegularMultipleElementsPerKey() { final ImmutableMultimap<?, ?> obj = ImmutableMultimap.of(3, "k", 3, "r", 4, "y", 4, "o"); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableMultimap.class); assertEquals(deserialized, obj); } @Test public void testImmutableListMultimapMultipleElementsPerKey() { final ImmutableMultimap<?, ?> obj = ImmutableListMultimap.of(3, "k", 3, "r", 4, "y", 4, "o"); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableListMultimap.class); assertEquals(deserialized, obj); } @Test public void testImmutableSetMultimapMultipleElementsPerKey() { final ImmutableMultimap<?, ?> obj = ImmutableSetMultimap.of(3, "k", 3, "r", 4, "y", 4, "o"); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableSetMultimap.class); assertEquals(deserialized, obj); } @Test public void testImmutableMapSerializerAlreadyRegistered() { ImmutableMapSerializer.registerSerializers(_kryo); final ImmutableMultimap<?, ?> obj = ImmutableMultimap.of(); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableMultimap.class); assertTrue(deserialized.isEmpty()); assertEquals(deserialized, obj); } @Test public void testImmutableListSerializerAlreadyRegistered() { ImmutableListSerializer.registerSerializers(_kryo); final ImmutableMultimap<?, ?> obj = ImmutableListMultimap.of(); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableListMultimap.class); assertTrue(deserialized.isEmpty()); assertEquals(deserialized, obj); } @Test public void testImmutableSetSerializerAlreadyRegistered() { ImmutableSetSerializer.registerSerializers(_kryo); final ImmutableMultimap<?, ?> obj = ImmutableSetMultimap.of(); final byte[] serialized = serialize(_kryo, obj); final ImmutableMultimap<?, ?> deserialized = deserialize(_kryo, serialized, ImmutableSetMultimap.class); assertTrue(deserialized.isEmpty()); assertEquals(deserialized, obj); } // Kryo#copy tests @Test public void testCopyEmpty() { final ImmutableMultimap<?, ?> obj = ImmutableMultimap.of(); final ImmutableMultimap<?, ?> copied = _kryo.copy(obj); assertSame(copied, obj); } @Test public void testCopySingleton() { final ImmutableMultimap<?, ?> obj = ImmutableMultimap.of(1, "k"); final ImmutableMultimap<?, ?> copied = _kryo.copy(obj); assertSame(copied, obj); } @Test public void testCopyRegular() { final ImmutableMultimap<?, ?> obj = ImmutableMultimap.of(1, "k", 2, "r", 3, "y"); final ImmutableMultimap<?, ?> copied = _kryo.copy(obj); assertSame(copied, obj); } @Test public void testCopyImmutableListMultimap() { final ImmutableMultimap<?, ?> obj = ImmutableListMultimap.of(1, "k", 2, "r", 3, "y"); final ImmutableMultimap<?, ?> copied = _kryo.copy(obj); assertSame(copied, obj); } @Test public void testCopyImmutableListMultimapEmpty() { final ImmutableMultimap<?, ?> obj = ImmutableListMultimap.of(); final ImmutableMultimap<?, ?> copied = _kryo.copy(obj); assertSame(copied, obj); } @Test public void testCopyImmutableSetMultimap() { final ImmutableMultimap<?, ?> obj = ImmutableSetMultimap.of(1, "k", 2, "r", 3, "y"); final ImmutableMultimap<?, ?> copied = _kryo.copy(obj); assertSame(copied, obj); } @Test public void testCopyImmutableSetMultimapEmpty() { final ImmutableMultimap<?, ?> obj = ImmutableSetMultimap.of(); final ImmutableMultimap<?, ?> copied = _kryo.copy(obj); assertSame(copied, obj); } }