package org.oscim.utils; import java.util.ArrayList; import org.junit.Assert; import org.junit.Test; import org.oscim.utils.KeyMap.HashItem; public class KeyMapTest { static class Item extends HashItem { int key; public Item(int i) { key = i; } @Override public boolean equals(Object obj) { Item it = (Item) obj; return it.key == key; } @Override public int hashCode() { return key; } } @Test public void shouldWork1() { KeyMap<Item> map = new KeyMap<Item>(512); KeyMap<Item> map2 = new KeyMap<Item>(512); ArrayList<Item> items = new ArrayList<Item>(1024); for (int i = 0; i < 10000; i++) { Item it = new Item(i); items.add(it); Assert.assertNull(map.put(it)); } for (Item it : items) { Item it2 = map.remove(it); Assert.assertTrue(it == it2); map2.put(it2); } for (Item it : items) { Item it2 = map2.get(it); Assert.assertTrue(it == it2); } /* replace the items with itself */ for (Item it : items) { Item it2 = map2.put(it); Assert.assertTrue(it == it2); } } @Test public void shouldWork2() { for (int i = 0; i < 100; i++) { long start = System.currentTimeMillis(); shouldWork1(); System.out.println("time: " + ((System.currentTimeMillis() - start))); } } }