/**************************************************************** * 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.james.mime4j.util; import java.text.Collator; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Enumeration; import java.util.List; import java.util.Locale; import java.util.Map; import junit.framework.TestCase; public class StringArrayMapTest extends TestCase { private StringArrayMap getSampleMap() { final StringArrayMap map = new StringArrayMap(); map.addValue("xYz", "a"); map.addValue("Xyz", "B"); map.addValue("xyz", "c"); map.addValue("xs", "1"); map.addValue("XS", "2"); map.addValue("foo", "bAr"); return map; } public void testGetMap() { final Map<String, String[]> map = getSampleMap().getMap(); final List<String> keys = new ArrayList<String>(map.keySet()); assertEquals(keys.size(), 3); Collections.sort(keys); assertEquals("foo", keys.get(0)); assertEquals("xs", keys.get(1)); assertEquals("xyz", keys.get(2)); final String[] foo = map.get("foo"); assertEquals("bAr", foo[0]); final String[] xs = map.get("xs"); assertEquals("1", xs[0]); assertEquals("2", xs[1]); final String[] xyz = map.get("xyz"); assertEquals(3, xyz.length); assertEquals("a", xyz[0]); assertEquals("B", xyz[1]); assertEquals("c", xyz[2]); } public void testGetNameArray() { final String[] names = getSampleMap().getNameArray(); assertEquals(3, names.length); Arrays.sort(names); assertEquals("foo", names[0]); assertEquals("xs", names[1]); assertEquals("xyz", names[2]); } public void testGetNames() { final Enumeration<String> names = getSampleMap().getNames(); assertEquals(new String[]{"foo", "xs", "xyz"}, names); } public void testGetValue() { final StringArrayMap map = getSampleMap(); assertEquals("bAr", map.getValue("foo")); assertEquals("bAr", map.getValue("FOO")); assertEquals("1", map.getValue("xs")); assertEquals("a", map.getValue("xyz")); assertEquals("a", map.getValue("xyZ")); assertNull(map.getValue("xz")); } public void testGetValues() { final StringArrayMap map = getSampleMap(); final String[] foo = map.getValues("foo"); assertEquals(1, foo.length); assertEquals("bAr", foo[0]); final String[] FOO = map.getValues("FOO"); assertEquals(1, FOO.length); assertEquals("bAr", FOO[0]); final String[] xs = map.getValues("xs"); assertEquals(2, xs.length); assertEquals("1", xs[0]); assertEquals("2", xs[1]); final String[] XS = map.getValues("XS"); assertEquals(2, XS.length); assertEquals("1", XS[0]); assertEquals("2", XS[1]); final String[] xyz = map.getValues("xyz"); assertEquals("a", xyz[0]); assertEquals("B", xyz[1]); assertEquals("c", xyz[2]); final String[] XYZ = map.getValues("XYZ"); assertEquals("a", XYZ[0]); assertEquals("B", XYZ[1]); assertEquals("c", XYZ[2]); assertNull(map.getValues("xz")); } private void assertEquals(String[] pArray, Enumeration<String> pEnum) { final List<String> list = new ArrayList<String>(); while (pEnum.hasMoreElements()) { list.add(pEnum.nextElement()); } Collections.sort(list, Collator.getInstance(Locale.US)); assertEquals(pArray.length, list.size()); for (int i = 0; i < pArray.length; i++) { assertEquals(pArray[i], list.get(i)); } } public void testGetValueEnum() { final StringArrayMap map = getSampleMap(); assertEquals(new String[]{"bAr"}, map.getValueEnum("foo")); assertEquals(new String[]{"bAr"}, map.getValueEnum("FOO")); assertEquals(new String[]{"1", "2"}, map.getValueEnum("xs")); assertEquals(new String[]{"1", "2"}, map.getValueEnum("Xs")); assertEquals(new String[]{"a", "B", "c"}, map.getValueEnum("xyz")); assertEquals(new String[]{"a", "B", "c"}, map.getValueEnum("XYZ")); assertNull(map.getValues("xz")); } }