/******************************************************************************* * Copyright (c) 2012-2016 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.everrest.core.util; import org.everrest.core.ExtMultivaluedMap; import org.junit.Before; import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Map.Entry; import java.util.Set; import static com.google.common.collect.Lists.newArrayList; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; /** * @author andrew00x */ public class CaselessMultivaluedMapTest { private ExtMultivaluedMap<String, String> map; @Before public void setUp() throws Exception { map = new CaselessMultivaluedMap<>(); } @Test public void testPut() { List<String> list = newArrayList("a", "b", "c"); map.put("kEy1", list); assertEquals(1, map.size()); assertEquals(list, map.get("key1")); } @Test public void testAdd() { map.add("KeY1", "a"); assertEquals(1, map.size()); assertEquals("a", map.getFirst("key1")); assertEquals(1, map.get("KEY1").size()); } @Test public void testPutSingle() { map.put("kEy1", newArrayList("a", "b", "c")); map.putSingle("key1", "value"); assertEquals(1, map.size()); assertEquals("value", map.getFirst("key1")); assertEquals(1, map.get("KEY1").size()); } @Test public void testContainsKey() { map.put("kEy1", newArrayList("a", "b", "c")); map.put("KEy2", newArrayList("e", "f")); assertEquals(2, map.size()); assertTrue(map.containsKey("KEY1")); assertTrue(map.containsKey("key2")); } @Test public void testRemove() { map.put("kEy1", newArrayList("a", "b", "c")); map.put("KEy2", newArrayList("e", "f")); assertEquals(2, map.size()); assertEquals(new ArrayList<>(Arrays.asList("e", "f")), map.remove("KEY2")); assertEquals(1, map.size()); assertTrue(map.containsKey("key1")); assertFalse(map.containsKey("kEy2")); } @Test public void testGetList() { assertEquals(0, map.size()); List<String> list = map.getList("key1"); assertNotNull(list); assertEquals(0, list.size()); assertEquals(1, map.size()); } @Test public void testEntrySet() { Set<Entry<String, List<String>>> entries = map.entrySet(); map.put("k", newArrayList("a", "b")); map.put("e", newArrayList("c", "d")); map.put("Y", newArrayList("e", "f")); assertEquals(3, map.size()); assertEquals(3, entries.size()); assertTrue(entries.remove(new java.util.Map.Entry<String, List<String>>() { public String getKey() { return "E"; } public List<String> getValue() { return Arrays.asList("c", "d"); } public List<String> setValue(List<String> value) { return Arrays.asList("c", "d"); } })); assertEquals(2, map.size()); assertEquals(2, entries.size()); assertTrue(map.containsKey("K")); assertTrue(map.containsKey("y")); assertFalse(map.containsKey("e")); entries.clear(); assertEquals(0, map.size()); assertEquals(0, entries.size()); } @Test public void testKeySet() { Set<String> keys = map.keySet(); map.put("k", newArrayList("a", "b")); map.put("e", newArrayList("c", "d")); map.put("Y", newArrayList("e", "f")); assertEquals(3, map.size()); assertEquals(3, keys.size()); assertTrue(keys.contains("K")); assertTrue(keys.contains("Y")); assertTrue(keys.contains("e")); assertTrue(keys.remove("Y")); assertEquals(2, map.size()); assertEquals(2, keys.size()); assertTrue(keys.contains("K")); assertTrue(keys.contains("e")); assertFalse(keys.contains("Y")); for (Iterator<String> iterator = keys.iterator(); iterator.hasNext(); ) { iterator.next(); iterator.remove(); } assertEquals(0, map.size()); assertEquals(0, keys.size()); } }