package test.prefuse.data.util;
import java.util.Arrays;
import java.util.NoSuchElementException;
import junit.framework.TestCase;
import prefuse.util.collections.LiteralIterator;
import prefuse.util.collections.LongIntTreeMap;
public class LongIntTreeMapTest extends TestCase {
LongIntTreeMap map = new LongIntTreeMap(true);
int[] keys = { 1, 2, 5, 3, 4, 5, 10 };
int[] sort;
public LongIntTreeMapTest() {
sort = (int[])keys.clone();
Arrays.sort(sort);
}
protected void setUp() throws Exception {
super.setUp();
for ( int i=0; i<keys.length; ++i ) {
map.put(keys[i],keys[i]);
}
}
protected void tearDown() throws Exception {
super.tearDown();
map.clear();
}
/*
* Test method for 'edu.berkeley.guir.prefuse.data.util.IntIntTreeMap.clear()'
*/
public void testClear() {
map.clear();
assertTrue(map.isEmpty());
try {
map.keyIterator().next();
fail("Iterator should be empty");
} catch ( NoSuchElementException success ) {
}
assertEquals(map.get(1),Integer.MIN_VALUE);
}
/*
* Test method for 'edu.berkeley.guir.prefuse.data.util.IntIntTreeMap.get(int)'
*/
public void testGet() {
for ( int i=0; i<map.size(); ++i ) {
assertEquals(map.get(keys[i]),keys[i]);
}
}
/*
* Test method for 'edu.berkeley.guir.prefuse.data.util.IntIntTreeMap.put(int, int)'
*/
public void testPut() {
map.clear();
int size = 0;
for ( int i=0; i<keys.length; ++i ) {
map.put(keys[i],keys[i]);
assertEquals(++size, map.size());
assertEquals(map.get(keys[i]), keys[i]);
}
}
/*
* Test method for 'edu.berkeley.guir.prefuse.data.util.IntIntTreeMap.remove(int)'
*/
public void testRemoveInt() {
int size = map.size();
for ( int i=0; i<keys.length; ++i ) {
int val = map.remove(keys[i]);
assertEquals(keys[i], val);
assertEquals(--size, map.size());
}
for ( int i=0; i<keys.length; ++i ) {
assertEquals(map.get(keys[i]), Integer.MIN_VALUE);
}
}
/*
* Test method for 'edu.berkeley.guir.prefuse.data.util.IntIntTreeMap.firstKey()'
*/
public void testFirstKey() {
assertEquals(map.firstKey(), sort[0]);
}
/*
* Test method for 'edu.berkeley.guir.prefuse.data.util.IntIntTreeMap.lastKey()'
*/
public void testLastKey() {
assertEquals(map.lastKey(), sort[sort.length-1]);
}
/*
* Test method for 'edu.berkeley.guir.prefuse.data.util.IntIntTreeMap.keyIterator()'
*/
public void testKeyIterator() {
LiteralIterator iter = map.keyIterator();
for ( int i=0; iter.hasNext(); ++i ) {
long key = iter.nextLong();
assertEquals(sort[i], key);
}
}
/*
* Test method for 'edu.berkeley.guir.prefuse.data.util.IntIntTreeMap.subMap(int, int)'
*/
public void testSubMap() {
int k1, i1, i2, i, k, len = sort.length-1;
for ( i=0, k=sort[0]; k==sort[0]; ++i, k=sort[i] );
k1 = k; i1 = i;
for ( i=len, k=sort[len]; i>=0 && k==sort[len]; --i, k=sort[i] );
i2 = i;
LiteralIterator iter = map.keyRangeIterator(k1, true, sort[len], false);
for ( i=i1; iter.hasNext() && i <= i2; ++i ) {
assertEquals(iter.nextLong(), sort[i]);
}
assertTrue(!iter.hasNext() && i == i2+1);
iter = map.valueRangeIterator(k1, true, sort[len], false);
for ( i=i1; iter.hasNext() && i <= i2; ++i ) {
assertEquals(iter.nextInt(), sort[i]);
}
assertTrue(!iter.hasNext() && i == i2+1);
}
/*
* Test method for 'edu.berkeley.guir.prefuse.data.util.AbstractTreeMap.size()'
*/
public void testSize() {
assertEquals(map.size(), keys.length);
}
/*
* Test method for 'edu.berkeley.guir.prefuse.data.util.AbstractTreeMap.isEmpty()'
*/
public void testIsEmpty() {
assertFalse(map.isEmpty());
}
/*
* Test method for 'edu.berkeley.guir.prefuse.data.util.AbstractTreeMap.valueIterator()'
*/
public void testValueIterator() {
LiteralIterator iter = map.valueIterator(true);
for ( int i=0; iter.hasNext(); ++i ) {
int val = iter.nextInt();
assertEquals(sort[i], val);
}
}
}