package org.transgalactica.fwk.domain.bean;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import org.transgalactica.fwk.domain.bean.AbstractBo;
@RunWith(Parameterized.class)
public class AbstractBoTest {
private AbstractBo b1;
private AbstractBo b1Clone;
private AbstractBo b2;
private AbstractBo bIdNull;
private AbstractBo bIdNullClone;
public AbstractBoTest(AbstractBo b1, AbstractBo b1Clone, AbstractBo b2, AbstractBo bIdNull, AbstractBo bIdNullClone) {
this.b1 = b1;
this.b1Clone = b1Clone;
this.b2 = b2;
this.bIdNull = bIdNull;
this.bIdNullClone = bIdNullClone;
}
@Parameters
public static Collection<AbstractBo[]> getBeans() {
Collection<AbstractBo[]> beans = new ArrayList<AbstractBo[]>();
beans.add(new LongIdBo[] { new LongIdBo(1L), new LongIdBo(1L), new LongIdBo(2L), new LongIdBo(), new LongIdBo() });
beans.add(new CompositeIdBo[] { new CompositeIdBo(new CompositeId("cle1", 5), "autre cle", "un champ"),
new CompositeIdBo(new CompositeId("cle1", 5), "autre cle", "un champ"),
new CompositeIdBo(new CompositeId("cle2", 10), "autre cle", "un champ"),
new CompositeIdBo(null, null, null), new CompositeIdBo(null, null, null) });
return beans;
}
@Test
public void testCollection() {
Set<AbstractBo> set = new HashSet<AbstractBo>();
set.add(b1);
assertTrue(set.contains(b1Clone));
}
@Test
public void testEquals() {
assertTrue(b1.equals(b1));
assertTrue(b1.equals(b1Clone));
assertTrue(b1Clone.equals(b1));
assertFalse(b1.equals(b2));
assertFalse(b2.equals(b1));
assertFalse(b1.equals(null));
}
@Test
public void testEqualsBoIdNull() {
assertTrue(bIdNull.equals(bIdNull));
assertTrue(bIdNull.equals(bIdNullClone));
assertTrue(bIdNullClone.equals(bIdNull));
assertFalse(bIdNull.equals(b2));
assertFalse(b2.equals(bIdNull));
assertFalse(b1.equals(null));
}
@Test
public void testSerializable() throws IOException, ClassNotFoundException {
ByteArrayOutputStream bin = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bin);
out.writeObject(b1);
out.flush();
out.close();
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bin.toByteArray()));
assertEquals(b1Clone, in.readObject());
}
}