/*
* Copyright 2004-2012 the original author or authors.
*
* Licensed 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.springframework.webflow.core.collection;
import java.util.HashMap;
import java.util.Map;
import junit.framework.TestCase;
import org.easymock.EasyMock;
import org.springframework.web.multipart.MultipartFile;
/**
* Unit tests for {@link LocalParameterMap}.
*/
public class LocalParameterMapTests extends TestCase {
private LocalParameterMap parameterMap;
public void setUp() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("string", "A string");
map.put("integer", "12345");
map.put("boolean", "true");
map.put("stringArray", new String[] { "1", "2", "3" });
map.put("emptyArray", new String[0]);
map.put("multipartFile", EasyMock.createMock(MultipartFile.class));
parameterMap = new LocalParameterMap(map);
}
public void testSize() {
assertTrue(!parameterMap.isEmpty());
assertEquals(6, parameterMap.size());
}
public void testGet() {
String value = parameterMap.get("string");
assertEquals("A string", value);
}
public void testGetNull() {
String value = parameterMap.get("bogus");
assertNull(value);
}
public void testGetRequired() {
String value = parameterMap.getRequired("string");
assertEquals("A string", value);
}
public void testGetRequiredWithConversion() {
Integer value = parameterMap.getRequired("integer", Integer.class);
assertEquals(new Integer(12345), value);
}
public void testGetRequiredNotPresent() {
try {
parameterMap.getRequired("bogus");
} catch (IllegalArgumentException e) {
}
}
public void testGetWithDefaultOption() {
String value = parameterMap.get("string", "default");
assertEquals("A string", value);
}
public void testGetWithDefault() {
String value = parameterMap.get("bogus", "default");
assertEquals("default", value);
}
public void testGetWithDefaultAndConversion() {
Object value = parameterMap.get("bogus", Integer.class, 1);
assertEquals(new Integer(1), value);
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public void testGetWithDefaultAndConversionNotAssignable() {
try {
parameterMap.get("bogus", (Class) Integer.class, "1");
fail("'1' isn't a integer");
} catch (IllegalArgumentException e) {
}
}
public void testGetArray() {
String[] value = parameterMap.getArray("stringArray");
assertEquals(3, value.length);
}
public void testGetEmptyArray() {
String[] array = parameterMap.getArray("emptyArray");
assertEquals(0, array.length);
}
public void testGetArrayNull() {
String[] value = parameterMap.getArray("bogus");
assertNull(value);
}
public void testGetArrayRequired() {
String[] value = parameterMap.getRequiredArray("stringArray");
assertEquals(3, value.length);
}
public void getArrayWithConversion() {
Integer[] values = parameterMap.getArray("stringArray", Integer.class);
assertEquals(new Integer(1), values[0]);
assertEquals(new Integer(2), values[1]);
assertEquals(new Integer(3), values[2]);
}
public void testGetRequiredArrayNotPresent() {
try {
parameterMap.getRequiredArray("bogus");
} catch (IllegalArgumentException e) {
}
}
public void testGetSingleValueAsArray() {
String[] value = parameterMap.getArray("string");
assertEquals(1, value.length);
assertEquals("A string", value[0]);
}
public void testGetArrayAsSingleVaue() {
String value = parameterMap.get("stringArray");
assertEquals("1", value);
}
public void testGetEmptyArrayAsSingleVaue() {
String value = parameterMap.get("emptyArray");
assertEquals(null, value);
}
public void testGetConversion() {
Integer i = parameterMap.getInteger("integer");
assertEquals(new Integer(12345), i);
}
public void testGetArrayConversion() {
Integer[] i = parameterMap.getArray("stringArray", Integer.class);
assertEquals(i.length, 3);
assertEquals(new Integer(1), i[0]);
assertEquals(new Integer(2), i[1]);
assertEquals(new Integer(3), i[2]);
}
public void getRequiredArrayWithConversion() {
Integer[] values = parameterMap.getRequiredArray("stringArray", Integer.class);
assertEquals(new Integer(1), values[0]);
assertEquals(new Integer(2), values[1]);
assertEquals(new Integer(3), values[2]);
}
public void testGetNumber() {
Integer value = parameterMap.getNumber("integer", Integer.class);
assertEquals(new Integer(12345), value);
}
public void testGetRequiredNumber() {
Integer value = parameterMap.getRequiredNumber("integer", Integer.class);
assertEquals(new Integer(12345), value);
}
public void testGetNumberWithDefault() {
Integer value = parameterMap.getNumber("bogus", Integer.class, new Integer(12345));
assertEquals(new Integer(12345), value);
}
public void testGetInteger() {
Integer value = parameterMap.getInteger("integer");
assertEquals(new Integer(12345), value);
}
public void testGetRequiredInteger() {
Integer value = parameterMap.getRequiredInteger("integer");
assertEquals(new Integer(12345), value);
}
public void testGetIntegerWithDefault() {
Integer value = parameterMap.getInteger("bogus", new Integer(12345));
assertEquals(new Integer(12345), value);
}
public void testGetLong() {
Long value = parameterMap.getLong("integer");
assertEquals(new Long(12345), value);
}
public void testGetRequiredLong() {
Long value = parameterMap.getRequiredLong("integer");
assertEquals(new Long(12345), value);
}
public void testGetLongWithDefault() {
Long value = parameterMap.getLong("bogus", new Long(12345));
assertEquals(new Long(12345), value);
}
public void testGetBoolean() {
Boolean value = parameterMap.getBoolean("boolean");
assertEquals(Boolean.TRUE, value);
}
public void testGetRequiredBoolean() {
Boolean value = parameterMap.getRequiredBoolean("boolean");
assertEquals(Boolean.TRUE, value);
}
public void testGetBooleanWithDefault() {
Boolean value = parameterMap.getBoolean("bogus", true);
assertEquals(Boolean.TRUE, value);
}
public void testGetMultipart() {
MultipartFile file = parameterMap.getMultipartFile("multipartFile");
assertNotNull(file);
}
public void testGetRequiredMultipart() {
MultipartFile file = parameterMap.getRequiredMultipartFile("multipartFile");
assertNotNull(file);
}
public void testEquality() {
LocalParameterMap map1 = new LocalParameterMap(new HashMap<String, Object>(parameterMap.asMap()));
assertEquals(parameterMap, map1);
}
public void testAsAttributeMap() {
AttributeMap<Object> map = parameterMap.asAttributeMap();
assertEquals(map.asMap(), parameterMap.asMap());
}
}