package de.javakaffee.kryoserializers.guava;
import com.google.common.collect.Lists;
import com.esotericsoftware.kryo.Kryo;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static de.javakaffee.kryoserializers.KryoTest.deserialize;
import static de.javakaffee.kryoserializers.KryoTest.serialize;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
/**
* Test for {@link ReverseListSerializer}.
*/
public class ReverseListSerializerTest {
private Kryo _kryo;
@BeforeTest
public void setUp() throws Exception {
_kryo = new Kryo();
ReverseListSerializer.registerSerializers(_kryo);
}
@Test( enabled = true )
public void testEmptyReverseList() {
testEmpty(Lists.reverse(Lists.newLinkedList()));
}
@Test( enabled = true )
public void testEmptyRandomAccessReverseList() {
testEmpty(Lists.reverse(Lists.newArrayList()));
}
private void testEmpty(final List<?> reverseList) {
final byte[] serialized = serialize( _kryo, reverseList );
final List<?> deserialized = deserialize(_kryo, serialized, reverseList.getClass());
assertEquals(deserialized.getClass(), reverseList.getClass());
assertTrue(deserialized.isEmpty());
assertEquals(deserialized.size(), reverseList.size());
}
@Test( enabled = true )
public void testSingletonReverseList() {
testSingleton(Lists.reverse(Lists.newLinkedList(Collections.singleton(3))));
}
@Test( enabled = true )
public void testSingletonRandomAccessReverseList() {
testSingleton(Lists.reverse(Lists.newArrayList(Collections.singleton(3))));
}
private void testSingleton(final List<?> reverseList) {
final byte[] serialized = serialize( _kryo, reverseList );
final List<?> deserialized = deserialize(_kryo, serialized, reverseList.getClass());
assertEquals(deserialized.getClass(), reverseList.getClass());
assertEquals(deserialized, reverseList);
}
@Test( enabled = true )
public void testRegularReverseList() {
testRegular(Lists.reverse(Lists.newLinkedList(Arrays.asList(3, 4, 5, 6))));
}
@Test( enabled = true )
public void testRegularRandomAccessReverseList() {
testRegular(Lists.reverse(Lists.newArrayList(3, 4, 5, 6)));
}
private void testRegular(final List<?> reverseList) {
final byte[] serialized = serialize( _kryo, reverseList );
final List<?> deserialized = deserialize(_kryo, serialized, reverseList.getClass());
assertEquals(deserialized.getClass(), reverseList.getClass());
assertEquals(deserialized, reverseList);
}
// Kryo#copy tests
@Test( enabled = true )
public void testCopyEmptyReverseList() {
testCopy(Lists.reverse(Lists.newLinkedList()));
}
@Test( enabled = true )
public void testCopyEmptyRandomAccessReverseList() {
testCopy(Lists.reverse(Lists.newArrayList()));
}
@Test( enabled = true )
public void testCopySingletonReverseList() {
testCopy(Lists.reverse(Lists.newLinkedList(Collections.singleton(3))));
}
@Test( enabled = true )
public void testCopySingletonRandomAccessReverseList() {
testCopy(Lists.reverse(Lists.newArrayList(Collections.singleton(3))));
}
@Test( enabled = true )
public void testCopyRegularReverseList() {
testCopy(Lists.reverse(Lists.newLinkedList(Arrays.asList(3, 4, 5, 6))));
}
@Test( enabled = true )
public void testCopyRegularRandomAccessReverseList() {
testCopy(Lists.reverse(Lists.newArrayList(3, 4, 5, 6)));
}
private void testCopy(List<?> obj) {
final List<?> copied = _kryo.copy(obj);
assertEquals(copied.getClass(), obj.getClass());
assertEquals(copied, obj);
}
}