/*
* Rapid Beans Framework: ReadonlyListCollectionTest.java
*
* Copyright Martin Bluemel, 2008
*
* created 13.02.2008
*/
package org.rapidbeans.core.common;
import java.util.HashSet;
import java.util.LinkedHashSet;
import junit.framework.TestCase;
import org.rapidbeans.core.basic.Property;
import org.rapidbeans.core.type.TypePropertyCollection;
import org.rapidbeans.test.codegen.Address;
import org.rapidbeans.test.codegen.Person;
/**
* @author Martin Bluemel
*/
public class ReadonlyListCollectionTest extends TestCase {
/**
* Test method for {@link org.rapidbeans.core.common.ReadonlyListCollection#toArray()}.
*/
public void testToArray() {
ReadonlyListCollection<Person> persons = createPersonROCollection();
Object[] pa = persons.toArray();
assertEquals(4, pa.length);
assertEquals("Bluemel_Martin_19641014", pa[0].toString());
assertEquals("Bluemel_Melanie_20020831", pa[3].toString());
}
/**
* Test method for {@link org.rapidbeans.core.common.ReadonlyListCollection#toArray(java.lang.Object[])} .
*/
public void testToArrayObjectArray() {
ReadonlyListCollection<Person> persons = createPersonROCollection();
Person[] pa = persons.toArray(new Person[4]);
assertEquals(4, pa.length);
assertEquals("Martin", pa[0].getPrename());
assertEquals("Melanie", pa[3].getPrename());
}
/**
* Test method for {@link org.rapidbeans.core.common.ReadonlyListCollection#toArray(java.lang.Object[])} .
*/
public void testToArrayObjectArrayWrongType() {
ReadonlyListCollection<Person> persons = createPersonROCollection();
try {
persons.toArray(new String[4]);
} catch (ArrayStoreException e) {
assertTrue(true);
}
}
/**
* Test method for {@link org.rapidbeans.core.common.ReadonlyListCollection#get(int)}.
*/
public void testGetList() {
ReadonlyListCollection<Person> persons = createPersonROCollection();
assertEquals("Daniela", persons.get(2).getPrename());
}
/**
* Test method for {@link org.rapidbeans.core.common.ReadonlyListCollection#get(int)}.
*/
public void testGetListSet() {
ReadonlyListCollection<Person> persons = createPersonROCollectionSet();
assertEquals("Ulrike", persons.get(2).getPrename());
}
/**
* Test method for {@link org.rapidbeans.core.common.ReadonlyListCollection#indexOf(java.lang.Object)} .
*/
public void testIndexOf() {
ReadonlyListCollection<Person> persons = createPersonROCollection();
assertEquals(0, persons.indexOf(persons.get(0)));
assertEquals(1, persons.indexOf(persons.get(1)));
assertEquals(3, persons.indexOf(persons.get(3)));
}
/**
* Test method for {@link org.rapidbeans.core.common.ReadonlyListCollection#indexOf(java.lang.Object)} .
*/
public void testIndexOfSet() {
ReadonlyListCollection<Person> persons = createPersonROCollectionSet();
assertEquals(0, persons.indexOf(persons.get(0)));
assertEquals(1, persons.indexOf(persons.get(1)));
assertEquals(3, persons.indexOf(persons.get(3)));
}
/**
* Test method for {@link org.rapidbeans.core.common.ReadonlyListCollection#lastIndexOf(java.lang.Object)} .
*/
public void testLastIndexOf() {
ReadonlyListCollection<Person> persons = createPersonROCollection();
assertEquals(0, persons.lastIndexOf(persons.get(0)));
assertEquals(1, persons.lastIndexOf(persons.get(1)));
assertEquals(3, persons.lastIndexOf(persons.get(3)));
}
/**
* Test method for {@link org.rapidbeans.core.common.ReadonlyListCollection#lastIndexOf(java.lang.Object)} .
*/
public void testLastIndexOfSet() {
ReadonlyListCollection<Person> persons = createPersonROCollectionSet();
assertEquals(0, persons.lastIndexOf(persons.get(0)));
assertEquals(1, persons.lastIndexOf(persons.get(1)));
assertEquals(3, persons.lastIndexOf(persons.get(3)));
}
private ReadonlyListCollection<Person> createPersonROCollection() {
Address adr = new Address();
adr.addInhabitant(new Person(new String[] { "Bluemel", "Martin", "19641014" }));
adr.addInhabitant(new Person(new String[] { "Bluemel", "Ulrike", "19620802" }));
adr.addInhabitant(new Person(new String[] { "Bluemel", "Daniela", "19991212" }));
adr.addInhabitant(new Person(new String[] { "Bluemel", "Melanie", "20020831" }));
return (ReadonlyListCollection<Person>) adr.getInhabitants();
}
private ReadonlyListCollection<Person> createPersonROCollectionSet() {
Address adr = new Address();
Property prop = adr.getProperty("inhabitants");
TypePropertyCollection proptype = (TypePropertyCollection) prop.getType();
Class<?> prevClass = proptype.getCollectionClass();
assertSame(LinkedHashSet.class, prevClass);
try {
proptype.setCollectionClass(HashSet.class);
adr.addInhabitant(new Person(new String[] { "Bluemel", "Martin", "19641014" }));
adr.addInhabitant(new Person(new String[] { "Bluemel", "Ulrike", "19620802" }));
adr.addInhabitant(new Person(new String[] { "Bluemel", "Daniela", "19991212" }));
adr.addInhabitant(new Person(new String[] { "Bluemel", "Melanie", "20020831" }));
return (ReadonlyListCollection<Person>) adr.getInhabitants();
} finally {
proptype.setCollectionClass(prevClass);
}
}
}