/*
* ArraySetTest.java
* JUnit based test
*
* Created on August 25, 2007, 12:02 AM
*/
package org.texai.util;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Iterator;
import org.apache.log4j.Logger;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.junit.Test;
/**
*
* @author reed
*/
public class ArraySetTest {
/** the logger */
private static final Logger LOGGER = Logger.getLogger(ArraySetTest.class);
public ArraySetTest() {
}
/**
* Test of iterator method, of class org.texai.util.ArraySet.
*/
@Test
public void testIterator() {
LOGGER.info("iterator");
ArraySet<Integer> instance = new ArraySet<>();
instance.add(1);
instance.add(2);
Iterator<Integer> result = instance.iterator();
assertTrue(result.hasNext());
assertTrue(1 == result.next());
assertTrue(result.hasNext());
assertTrue(2 == result.next());
assertTrue(!result.hasNext());
}
/**
* Test of size method, of class org.texai.util.ArraySet.
*/
@Test
public void testSize() {
LOGGER.info("size");
ArraySet<Integer> instance = new ArraySet<>();
instance.add(1);
instance.add(2);
int result = instance.size();
assertEquals(2, result);
}
/**
* Test of add method, of class org.texai.util.ArraySet.
*/
@SuppressWarnings("unchecked")
@Test
public void testAdd() {
LOGGER.info("add");
ArraySet<Integer> instance = new ArraySet<>();
instance.add(1);
assertEquals("[1]", instance.toString());
instance.add(1);
assertEquals("[1]", instance.toString());
instance.add(2);
assertEquals("[1, 2]", instance.toString());
}
/**
* Test of remove method, of class org.texai.util.ArraySet.
*/
@Test
public void testRemove() {
LOGGER.info("remove");
ArraySet<Integer> instance = new ArraySet<>();
instance.add(1);
instance.add(2);
assertEquals("[1, 2]", instance.toString());
instance.remove(1);
assertEquals("[2]", instance.toString());
}
/**
* Test of isEmpty method, of class org.texai.util.ArraySet.
*/
@Test
public void testIsEmpty() {
LOGGER.info("isEmpty");
ArraySet<Integer> instance = new ArraySet<>();
assertTrue(instance.isEmpty());
instance.add(1);
assertTrue(!instance.isEmpty());
instance.remove(1);
assertTrue(instance.isEmpty());
}
/**
* Test of contains method, of class org.texai.util.ArraySet.
*/
@Test
public void testContains() {
LOGGER.info("contains");
ArraySet<Integer> instance = new ArraySet<>();
assertTrue(!instance.contains(1));
instance.add(1);
assertTrue(instance.contains(1));
instance.add(2);
assertTrue(instance.contains(1));
assertTrue(instance.contains(2));
}
/**
* Test of clear method, of class org.texai.util.ArraySet.
*/
@Test
public void testClear() {
LOGGER.info("clear");
ArraySet<Integer> instance = new ArraySet<>();
instance.add(1);
instance.add(2);
assertTrue(!instance.isEmpty());
instance.clear();
assertTrue(instance.isEmpty());
}
/**
* Test of clone method, of class org.texai.util.ArraySet.
*/
@SuppressWarnings({"unchecked", "null"})
@Test
public void testClone() {
LOGGER.info("clone");
ArraySet<Integer> instance = new ArraySet<>();
instance.add(1);
instance.add(2);
Object clone = null;
try {
clone = (ArraySet<Integer>) instance.clone();
} catch (CloneNotSupportedException ex) {
fail(ex.getMessage());
}
assertTrue(clone instanceof ArraySet<?>);
assertEquals(instance.toString(), clone.toString());
}
/**
* Test serialization.
*/
@Test
public void testSerialization() {
LOGGER.info("serialization");
ObjectOutputStream objectOutputStream = null;
try {
ArraySet<Integer> instance = new ArraySet<>();
instance.add(1);
instance.add(2);
// serialize
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(instance);
objectOutputStream.close();
assertTrue(byteArrayOutputStream.toByteArray().length > 0);
// deserialize
byte[] pickled = byteArrayOutputStream.toByteArray();
InputStream in = new ByteArrayInputStream(pickled);
ObjectInputStream objectInputStream = new ObjectInputStream(in);
Object result = objectInputStream.readObject();
assertEquals("[1, 2]", result.toString());
assertEquals(result, instance);
} catch (IOException | ClassNotFoundException ex) {
fail(ex.getMessage());
} finally {
try {
if (objectOutputStream != null) {
objectOutputStream.close();
}
} catch (IOException ex) {
fail(ex.getMessage());
}
}
}
}