/*
* @@COPYRIGHT@@
*/
package com.cosylab.acs.maci.test;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import com.cosylab.acs.maci.IntArray;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* JUnit Test for IntArray.
*
* @author Matej Sekoranja (matej.sekoranja@cosylab.com)
* @version @@VERSION@@
*/
public class IntArrayTest extends TestCase
{
/**
*/
public IntArrayTest(String name)
{
super(name);
}
/**
*/
public static TestSuite suite()
{
return new TestSuite(IntArrayTest.class);
}
/**
*/
public void testAllocation()
{
IntArray ia = new IntArray();
int i = 0;
for (; i <= 10000; i++)
{
ia.add(i);
assertEquals(i, ia.get(i));
}
assertEquals(i, ia.size());
}
/**
*/
public void testRemoval()
{
IntArray ia = new IntArray();
int i = 0;
for (; i <= 12345; i++)
{
ia.add(i);
assertEquals(i, ia.get(i));
}
for (--i; i >= 0; i--)
{
ia.removeAt(i);
}
assertEquals(0, ia.size());
}
/**
*/
public void testContainment()
{
IntArray ia = new IntArray();
int i = 0;
for (; i <= 12; i++)
{
ia.add(i);
assertEquals(i, ia.get(i));
}
// remove odd
for (i = 0; i < ia.size();)
if (ia.get(i)%2==1)
ia.removeAt(i);
else
i++;
for (i = 0; i < ia.size(); i++)
assertEquals(i*2, ia.get(i));
System.out.println(ia.toString());
}
/**
*/
public void testAddRemoveContains()
{
IntArray ia = new IntArray();
ia.add(1);
assertTrue(ia.contains(1));
ia.add(3);
assertTrue(ia.contains(1));
assertTrue(ia.contains(3));
ia.add(5);
assertTrue(ia.contains(1));
assertTrue(ia.contains(3));
assertTrue(ia.contains(5));
ia.remove(3);
assertTrue(!ia.contains(3));
ia.remove(1);
assertTrue(!ia.contains(1));
ia.remove(5);
assertTrue(!ia.contains(5));
}
/**
* Test serialization of the object.
* @param testObject object whose serialization will be tested.
*/
private void testSerialization(Object testObject)
{
try
{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
// serialize object
objectOutputStream.writeObject(testObject);
ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
// deserialize object
Object obj = objectInputStream.readObject();
// compare
assertEquals(testObject, obj);
}
catch (Exception ex)
{
fail(ex.toString());
}
}
/**
*/
public void testIntArraySerialization()
{
IntArray ia = new IntArray();
final int TEST_LEN = 12;
for (int i = 0; i < TEST_LEN; i++)
ia.add(i);
testSerialization(ia);
}
}