/*
* Copyright 2006-2008 Sxip Identity Corporation
*/
package org.openid4java.message;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.framework.TestCase;
import java.util.List;
/**
* @author Marius Scurtescu, Johnny Bufu
*/
public class ParameterListTest extends TestCase
{
private ParameterList _parameterList;
public ParameterListTest(String name)
{
super(name);
}
public void setUp() throws Exception
{
_parameterList = new ParameterList();
_parameterList.set(new Parameter("key1", "value1"));
_parameterList.set(new Parameter("key1", "value2"));
_parameterList.set(new Parameter("key2", "value1"));
}
public void tearDown() throws Exception
{
_parameterList = null;
}
public void testEquals() throws Exception
{
ParameterList parameterList2 = new ParameterList();
parameterList2.set(new Parameter("key1", "value1"));
parameterList2.set(new Parameter("key1", "value2"));
parameterList2.set(new Parameter("key2", "value1"));
assertEquals(_parameterList, parameterList2);
assertNotSame(_parameterList, parameterList2);
parameterList2 = new ParameterList();
parameterList2.set(new Parameter("key2", "value1"));
parameterList2.set(new Parameter("key1", "value1"));
parameterList2.set(new Parameter("key1", "value2"));
parameterList2.set(new Parameter("key3", "value1"));
parameterList2.set(new Parameter("key3", "value2"));
parameterList2.set(new Parameter("key3", "value1"));
parameterList2.removeParameters("key3");
assertEquals(_parameterList, parameterList2);
assertNotSame(_parameterList, parameterList2);
parameterList2 = new ParameterList();
// null not supported in compareTo()
//parameterList2.set(new Parameter(null, null));
//parameterList2.set(new Parameter(null, ""));
//parameterList2.set(new Parameter("", null));
parameterList2.set(new Parameter("", ""));
}
public void testHashCode() throws Exception
{
ParameterList parameterList2 = new ParameterList();
parameterList2.set(new Parameter("key1", "value1"));
parameterList2.set(new Parameter("key1", "value2"));
parameterList2.set(new Parameter("key2", "value1"));
assertEquals(_parameterList.hashCode(), parameterList2.hashCode());
assertNotSame(_parameterList, parameterList2);
parameterList2 = new ParameterList();
parameterList2.set(new Parameter("key2", "value1"));
parameterList2.set(new Parameter("key1", "value1"));
parameterList2.set(new Parameter("key1", "value2"));
parameterList2.set(new Parameter("key3", "value1"));
parameterList2.set(new Parameter("key3", "value2"));
parameterList2.set(new Parameter("key3", "value1"));
parameterList2.removeParameters("key3");
assertEquals(_parameterList.hashCode(), parameterList2.hashCode());
assertNotSame(_parameterList, parameterList2);
}
public void testCopyConstructor()
{
ParameterList parameterList2 = new ParameterList(_parameterList);
assertEquals(2, _parameterList.getParameters().size());
assertEquals(2, parameterList2.getParameters().size());
_parameterList.removeParameters("key1");
assertEquals(1, _parameterList.getParameters().size());
assertEquals(2, parameterList2.getParameters().size());
}
public void testAdd() throws Exception
{
assertEquals(2, _parameterList.getParameters().size());
_parameterList.set(new Parameter("key3", "value1"));
assertEquals(3, _parameterList.getParameters().size());
}
public void testGetParameter() throws Exception
{
Parameter parameter = _parameterList.getParameter("key2");
assertNotNull(parameter);
assertEquals("value1", parameter.getValue());
}
public void testGetParameterNull() throws Exception
{
Parameter parameter = _parameterList.getParameter("key3");
assertNull(parameter);
}
public void testGetParameterValue() throws Exception
{
String value = _parameterList.getParameterValue("key2");
assertNotNull(value);
assertEquals("value1", value);
}
public void testGetParameters() throws Exception
{
List parameters = _parameterList.getParameters();
assertEquals(2, parameters.size());
}
public void testGetParameters1Null() throws Exception
{
assertNull(_parameterList.getParameterValue("key3"));
}
public void testRemoveParameters() throws Exception
{
_parameterList.removeParameters("key1");
assertEquals(1, _parameterList.getParameters().size());
_parameterList.removeParameters("key2");
assertEquals(0, _parameterList.getParameters().size());
}
public void testReplaceParameters() throws Exception
{
_parameterList.set(new Parameter("key2", "value3"));
assertEquals("value3", _parameterList.getParameter("key2").getValue());
}
public void testHasParameter() throws Exception
{
assertTrue(_parameterList.hasParameter("key1"));
assertTrue(_parameterList.hasParameter("key2"));
assertFalse(_parameterList.hasParameter("key3"));
}
public void testCreateFromQueryString() throws Exception
{
ParameterList createdParameterList = ParameterList.createFromQueryString("key1=value%31&key1=value2&key2=value1");
assertEquals(_parameterList, createdParameterList);
createdParameterList = ParameterList.createFromQueryString("key1=value%31&key1=&key2=value1");
assertEquals("", ((Parameter) createdParameterList.getParameters()
.get(0)).getValue() );
createdParameterList = ParameterList.createFromQueryString("key1=value%31&key1=&key2=");
assertEquals("", createdParameterList.getParameterValue("key2"));
}
public void testCreateFromKeyValueForm() throws Exception
{
ParameterList createdParameterList = ParameterList.createFromKeyValueForm("key1:value1\nkey1:value2\nkey2:value1");
assertEquals(_parameterList, createdParameterList);
createdParameterList = ParameterList.createFromKeyValueForm("key1:value1\nkey1:\nkey2:value1");
assertEquals("", ((Parameter) createdParameterList.getParameters().get(0)).getValue() );
createdParameterList = ParameterList.createFromKeyValueForm("key1:value1\nkey1:\nkey2:");
assertEquals("", createdParameterList.getParameterValue("key2"));
createdParameterList = ParameterList.createFromKeyValueForm("key1:value1\nkey2:value:2");
assertEquals("value:2", createdParameterList.getParameterValue("key2"));
createdParameterList = ParameterList.createFromKeyValueForm("key1:value1\nkey2:value2\n");
assertEquals("value2", createdParameterList.getParameterValue("key2"));
}
public static Test suite()
{
return new TestSuite(ParameterListTest.class);
}
}