blob: 24c81df1fada984857d68b7655826d27da1e1949 [file] [log] [blame]
/*
* 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;
/**
* Test case for {@link StringArray}.
*/
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;
}
/**
* Test for {@link StringArrayMap#getMap()}.
*/
public void testGetMap() {
final Map map = getSampleMap().getMap();
final List keys = new ArrayList(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 = (String[]) map.get("foo");
assertEquals("bAr", foo[0]);
final String[] xs = (String[]) map.get("xs");
assertEquals("1", xs[0]);
assertEquals("2", xs[1]);
final String[] xyz = (String[]) map.get("xyz");
assertEquals(3, xyz.length);
assertEquals("a", xyz[0]);
assertEquals("B", xyz[1]);
assertEquals("c", xyz[2]);
}
/**
* Test case for {@link StringArrayMap#getNameArray()}.
*/
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]);
}
/**
* Test case for {@link StringArrayMap#getNames()}.
*/
public void testGetNames() {
final Enumeration names = getSampleMap().getNames();
assertEquals(new String[]{"foo", "xs", "xyz"}, names);
}
/**
* Test case for {@link StringArrayMap#getValue(String)}.
*/
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"));
}
/**
* Test case for {@link StringArrayMap#getValue(String)}.
*/
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 pEnum) {
final List list = new ArrayList();
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));
}
}
/**
* Test case for {@link StringArrayMap#getValueEnum(String)}.
*/
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"));
}
}