package org.sakaiproject.portal.render.portlet.services.state;
import java.util.HashMap;
import java.util.Map;
import javax.portlet.PortletMode;
import javax.portlet.WindowState;
import junit.framework.TestCase;
public class EnhancedPortletStateEncoderTest extends TestCase
{
private EnhancedPortletStateEncoder encoder;
@Override
public void setUp()
{
encoder = new EnhancedPortletStateEncoder();
encoder.setUrlSafeEncoder(new BasicWebRecoder());
}
public void testEncodeDecode()
{
Map parms = new HashMap();
parms.put("one", "oneValue");
parms.put("two", "twoValue");
parms.put("three", new String[] { "threeOne", "threeTwo", null });
PortletState state = new PortletState("id");
state.setAction(true);
state.setSecure(true);
state.setWindowState(WindowState.MAXIMIZED);
state.setPortletMode(PortletMode.EDIT);
state.setParameters(parms);
String uriSafe = encoder.encode(state);
System.err.println("URI is "+uriSafe);
assertNotNull(uriSafe);
assertEquals(-1, uriSafe.indexOf(" "));
assertEquals(-1, uriSafe.indexOf("/"));
assertEquals(-1, uriSafe.indexOf(":"));
assertEquals(-1, uriSafe.indexOf("="));
assertEquals(-1, uriSafe.indexOf("?"));
assertEquals(-1, uriSafe.indexOf("&"));
PortletState read = encoder.decode(uriSafe);
assertEquals(state.getId(), read.getId());
assertEquals(state.isAction(), read.isAction());
assertEquals(state.isSecure(), read.isSecure());
assertEquals(state.getWindowState(), read.getWindowState());
assertEquals(state.getPortletMode(), read.getPortletMode());
assertEquals(3, read.getParameters().size());
String[] one = (String[]) read.getParameters().get("one");
assertEquals(1, one.length);
assertEquals("oneValue", one[0]);
String[] two = (String[]) read.getParameters().get("two");
assertEquals(1, two.length);
assertEquals("twoValue", two[0]);
String[] three = (String[]) read.getParameters().get("three");
assertEquals(2, three.length);
assertEquals("threeOne", three[0]);
assertEquals("threeTwo", three[1]);
}
}