@Test
 public void testListToCommaDelimitedStringMixedSpaceChars() {
   String[] actual =
       RemoteIpFilter.commaDelimitedListToStringArray("element1  , element2,\t element3");
   String[] expected = new String[] {"element1", "element2", "element3"};
   assertEquals(expected.length, actual.length);
   for (int i = 0; i < actual.length; i++) {
     assertEquals(expected[i], actual[i]);
   }
 }
  private HttpServletRequest testRemoteIpFilter(FilterDef filterDef, Request request)
      throws LifecycleException, IOException, ServletException {
    Tomcat tomcat = getTomcatInstance();
    Context root = tomcat.addContext("", TEMP_DIR);

    RemoteIpFilter remoteIpFilter = new RemoteIpFilter();
    filterDef.setFilterClass(RemoteIpFilter.class.getName());
    filterDef.setFilter(remoteIpFilter);
    filterDef.setFilterName(RemoteIpFilter.class.getName());
    root.addFilterDef(filterDef);

    FilterMap filterMap = new FilterMap();
    filterMap.setFilterName(RemoteIpFilter.class.getName());
    filterMap.addURLPattern("*");
    root.addFilterMap(filterMap);

    getTomcatInstance().start();

    MockFilterChain filterChain = new MockFilterChain();

    // TEST
    remoteIpFilter.doFilter(request, new Response(), filterChain);
    return filterChain.getRequest();
  }
 @Test
 public void testCommaDelimitedListToStringArrayEmptyList() {
   List<String> elements = new ArrayList<>();
   String actual = RemoteIpFilter.listToCommaDelimitedString(elements);
   assertEquals("", actual);
 }
 @Test
 public void testCommaDelimitedListToStringArrayNullList() {
   String actual = RemoteIpFilter.listToCommaDelimitedString(null);
   assertEquals("", actual);
 }
 @Test
 public void testCommaDelimitedListToStringArray() {
   List<String> elements = Arrays.asList("element1", "element2", "element3");
   String actual = RemoteIpFilter.listToCommaDelimitedString(elements);
   assertEquals("element1, element2, element3", actual);
 }