package net.sf.katta.util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Iterator; import java.util.Set; import org.junit.Test; public class ConcurrentOne2ManyListMapTest { @Test public void testMap() throws Exception { ConcurrentOne2ManyListMap<String, Integer> multiMap = new ConcurrentOne2ManyListMap<String, Integer>(); assertEquals(0, multiMap.size()); assertEquals(0, multiMap.asMap().size()); assertTrue(multiMap.getValues("notExistentKey").isEmpty()); multiMap.add("a", 1); assertEquals(1, multiMap.size()); assertEquals(1, multiMap.asMap().size()); assertFalse(multiMap.getValues("a").isEmpty()); assertEquals(new Integer(1), multiMap.getValues("a").get(0)); } @Test public void testConcurrentAdd() throws InterruptedException { final ConcurrentOne2ManyListMap<Integer, Integer> multiMap = new ConcurrentOne2ManyListMap<Integer, Integer>(); multiMap.add(1); Set<Integer> keys = multiMap.keySet(); Iterator<Integer> iterator = keys.iterator(); multiMap.add(2); iterator.next(); } @Test public void testConcurrentAddEntry() throws InterruptedException { final ConcurrentOne2ManyListMap<Integer, Integer> multiMap = new ConcurrentOne2ManyListMap<Integer, Integer>(); for (int i = 0; i < 10; i++) { multiMap.add(1, i); } Iterator<Integer> iterator = multiMap.getValues(1).iterator(); for (int i = 0; i < 10; i++) { multiMap.add(1, i); } iterator.next(); } }