package org.mifos.platform.util; import junit.framework.TestCase; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; import static org.mifos.platform.util.CollectionUtils.asMap; import static org.mifos.platform.util.MapEntry.makeEntry; @SuppressWarnings("unchecked") public class CollectionUtilsTest extends TestCase { public void testAsMap() { Map<Integer, String> map = asMap(makeEntry(1, "One"), makeEntry(2, "Two"), makeEntry(3, "Three")); assertTrue(map.containsKey(1) && map.containsValue("One")); assertTrue(map.containsKey(2) && map.containsValue("Two")); assertTrue(map.containsKey(3) && map.containsValue("Three")); } public void testAsOrderedMap() { Map<Integer, String> map = CollectionUtils.asOrderedMap(makeEntry(1, "1"), makeEntry(2, "2"), makeEntry(3, "3")); ArrayList<Map.Entry<Integer, String>> entryList = Collections.list(Collections.enumeration(map.entrySet())); for (int i=1; i<=entryList.size(); i++) { Map.Entry<Integer, String> entry = entryList.get(i - 1); assertEquals(Integer.valueOf(i), entry.getKey()); assertEquals(String.valueOf(i), entry.getValue()); } } public void testCollectionEmpty() { assertEquals(false, CollectionUtils.isEmpty(Arrays.asList("Hi", "Bye", "One"))); assertEquals(true, CollectionUtils.isEmpty(Collections.EMPTY_SET)); assertEquals(true, CollectionUtils.isEmpty(null)); } public void testCollectionNotEmpty() { assertEquals(true, CollectionUtils.isNotEmpty(Arrays.asList("Hi", "Bye", "One"))); assertEquals(false, CollectionUtils.isNotEmpty(Collections.EMPTY_SET)); assertEquals(false, CollectionUtils.isNotEmpty(null)); } public void testCollectionToString() { assertEquals("", CollectionUtils.toString(null)); assertEquals("", CollectionUtils.toString(Collections.EMPTY_LIST)); assertEquals("Hi", CollectionUtils.toString(Arrays.asList("Hi"))); assertEquals("Hi, Bye", CollectionUtils.toString(Arrays.asList("Hi", "Bye"))); } public void testAddKeyValue() { Map<Integer, List<String>> multiMap = asMap( makeEntry(1, asStringList("One")), makeEntry(2, asStringList("Two")), makeEntry(3, asStringList("Three"))); CollectionUtils.addKeyValue(multiMap, 2, "Deuce"); CollectionUtils.addKeyValue(multiMap, 2, "Double"); CollectionUtils.addKeyValue(multiMap, 3, "Triple"); assertThat(multiMap.get(1).get(0),is("One")); assertThat(multiMap.get(2).get(0),is("Two")); assertThat(multiMap.get(2).get(1),is("Deuce")); assertThat(multiMap.get(2).get(2),is("Double")); assertThat(multiMap.get(3).get(0),is("Three")); assertThat(multiMap.get(3).get(1),is("Triple")); } private List<String> asStringList(String str) { ArrayList<String> strings = new ArrayList<String>(); strings.add(str); return strings; } }