public void testAdditionalParameters() {
    TestRequest original = new TestRequest();
    String p0 = "p0";
    String v0 = "v0";
    original.setParameter(p0, v0);
    String p1 = "p1";
    String v1a = "v1a";
    String v1b = "v1b";
    original.addParameter(p1, v1a);
    original.addParameter(p1, v1b);

    Map<String, String[]> paramMap = new HashMap<String, String[]>();
    String p2 = "p2";
    String v2 = "v2";
    String p3 = "p3";
    String v3a = "v3a";
    String v3b = "v3b";
    paramMap.put(p2, new String[] {v2});
    paramMap.put(p3, new String[] {v3a, v3b});
    WrappedRequest wrapper = new WrappedRequest(original, paramMap);

    assertEquals(v0, wrapper.getParameter(p0));
    assertEquals(v1a, wrapper.getParameter(p1));
    assertEquals(v2, wrapper.getParameter(p2));
    assertEquals(v3a, wrapper.getParameter(p3));

    Enumeration parameterNames = wrapper.getParameterNames();
    Set<Object> names = new HashSet<Object>();
    while (parameterNames.hasMoreElements()) {
      names.add(parameterNames.nextElement());
    }
    assertTrue(names.contains(p0));
    assertTrue(names.contains(p1));
    assertTrue(names.contains(p2));
    assertTrue(names.contains(p3));

    assertEquals(v0, wrapper.getParameterValues(p0)[0]);
    assertEquals(v1a, wrapper.getParameterValues(p1)[0]);
    assertEquals(v1b, wrapper.getParameterValues(p1)[1]);
    assertEquals(v2, wrapper.getParameterValues(p2)[0]);
    assertEquals(v3a, wrapper.getParameterValues(p3)[0]);
    assertEquals(v3b, wrapper.getParameterValues(p3)[1]);

    Map parameterMap = wrapper.getParameterMap();
    assertEquals(v0, ((String[]) parameterMap.get(p0))[0]);
    assertEquals(v1a, ((String[]) parameterMap.get(p1))[0]);
    assertEquals(v1b, ((String[]) parameterMap.get(p1))[1]);
    assertEquals(v2, ((String[]) parameterMap.get(p2))[0]);
    assertEquals(v3a, ((String[]) parameterMap.get(p3))[0]);
    assertEquals(v3b, ((String[]) parameterMap.get(p3))[1]);

    try {
      parameterMap.clear();
      fail();
    } catch (UnsupportedOperationException usoe) {
    }
  }
 private static void fakeServletPath(String string) {
   TestRequest request = (TestRequest) ContextProvider.getRequest();
   request.setServletPath(string);
 }