| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.commons.collections.map; |
| |
| import java.util.HashMap; |
| import java.util.Locale; |
| import java.util.Map; |
| import java.util.Set; |
| |
| import junit.framework.Test; |
| import junit.textui.TestRunner; |
| |
| import org.apache.commons.collections.BulkTest; |
| |
| /** |
| * Tests for the {@link CaseInsensitiveMap} implementation. |
| * |
| * @version $Revision$ $Date$ |
| * |
| * @author Commons-Collections team |
| */ |
| public class TestCaseInsensitiveMap extends AbstractTestIterableMap { |
| |
| public TestCaseInsensitiveMap(String testName) { |
| super(testName); |
| } |
| |
| public static void main(String[] args) { |
| TestRunner.run(suite()); |
| } |
| |
| public static Test suite() { |
| return BulkTest.makeSuite(TestCaseInsensitiveMap.class); |
| } |
| |
| public Map makeEmptyMap() { |
| return new CaseInsensitiveMap(); |
| } |
| |
| public String getCompatibilityVersion() { |
| return "3"; |
| } |
| |
| //------------------------------------------------------------------------- |
| |
| public void testCaseInsensitive() { |
| Map map = new CaseInsensitiveMap(); |
| map.put("One", "One"); |
| map.put("Two", "Two"); |
| assertEquals("One", (String) map.get("one")); |
| assertEquals("One", (String) map.get("oNe")); |
| map.put("two", "Three"); |
| assertEquals("Three", (String) map.get("Two")); |
| } |
| |
| public void testNullHandling() { |
| Map map = new CaseInsensitiveMap(); |
| map.put("One", "One"); |
| map.put("Two", "Two"); |
| map.put(null, "Three"); |
| assertEquals("Three", (String) map.get(null)); |
| map.put(null, "Four"); |
| assertEquals("Four", (String) map.get(null)); |
| Set keys = map.keySet(); |
| assertTrue(keys.contains("one")); |
| assertTrue(keys.contains("two")); |
| assertTrue(keys.contains(null)); |
| assertTrue(keys.size() == 3); |
| } |
| |
| public void testPutAll() { |
| Map map = new HashMap(); |
| map.put("One", "One"); |
| map.put("Two", "Two"); |
| map.put("one", "Three"); |
| map.put(null, "Four"); |
| map.put(new Integer(20), "Five"); |
| Map caseInsensitiveMap = new CaseInsensitiveMap(map); |
| assertTrue(caseInsensitiveMap.size() == 4); // ones collapsed |
| Set keys = caseInsensitiveMap.keySet(); |
| assertTrue(keys.contains("one")); |
| assertTrue(keys.contains("two")); |
| assertTrue(keys.contains(null)); |
| assertTrue(keys.contains(Integer.toString(20))); |
| assertTrue(keys.size() == 4); |
| assertTrue(!caseInsensitiveMap.containsValue("One") |
| || !caseInsensitiveMap.containsValue("Three")); // ones collaped |
| assertEquals(caseInsensitiveMap.get(null), "Four"); |
| } |
| |
| public void testClone() { |
| CaseInsensitiveMap map = new CaseInsensitiveMap(10); |
| map.put("1", "1"); |
| Map cloned = (Map) map.clone(); |
| assertEquals(map.size(), cloned.size()); |
| assertSame(map.get("1"), cloned.get("1")); |
| } |
| |
| // COLLECTIONS-294 |
| public void testLocaleIndependence() { |
| Locale orig = Locale.getDefault(); |
| Locale[] locales = { Locale.ENGLISH, new Locale("tr", ""), Locale.getDefault() }; |
| String[][] data = { |
| { "i", "I" }, |
| { "\u03C2", "\u03C3" }, |
| { "\u03A3", "\u03C2" }, |
| { "\u03A3", "\u03C3" }, |
| }; |
| try { |
| for (int i = 0; i < locales.length; i++) { |
| Locale.setDefault(locales[i]); |
| for (int j = 0; j < data.length; j++) { |
| assertTrue("Test data corrupt: " + j, data[j][0].equalsIgnoreCase(data[j][1])); |
| CaseInsensitiveMap map = new CaseInsensitiveMap(); |
| map.put(data[j][0], "value"); |
| assertEquals(Locale.getDefault() + ": " + j, "value", map.get(data[j][1])); |
| } |
| } |
| } finally { |
| Locale.setDefault(orig); |
| } |
| } |
| |
| /* |
| public void testCreate() throws Exception { |
| resetEmpty(); |
| writeExternalFormToDisk((java.io.Serializable) map, "/home/phil/jakarta-commons/collections/data/test/CaseInsensitiveMap.emptyCollection.version3.obj"); |
| resetFull(); |
| writeExternalFormToDisk((java.io.Serializable) map, "/home/phil/jakarta-commons/collections/data/test/CaseInsensitiveMap.fullCollection.version3.obj"); |
| } |
| */ |
| } |