@Test
public void testExtractURIQueryParameters() throws Exception {
String host = "http://www.fool.com/errors.log";
internalExtractURIQueryParams("foo", host + "?foo=x&foo=y&foo=z", Arrays.asList("x", "y", "z"));
internalExtractURIQueryParams("foo", host + "?foo=x&foo=y&foo=z#fragment", Arrays.asList("x", "y", "z"));
internalExtractURIQueryParams("foo", host + "?boo=x&foo=y&boo=z", Arrays.asList("y"));
internalExtractURIQueryParams("foo", host + "?boo=x&bar=y&baz=z", Lists.newArrayList());
internalExtractURIQueryParams("foo", host + "?foo=x&foo=y&foo=z", Arrays.asList("x"), 1);
internalExtractURIQueryParams("foo", host + "?foo=x&foo=y&foo=z", Lists.newArrayList(), 0);
internalExtractURIQueryParams("foo", "", Lists.newArrayList());
internalExtractURIQueryParams("foo", "?", Lists.newArrayList());
internalExtractURIQueryParams("foo", "::", Lists.newArrayList());
internalExtractURIQueryParams("foo", new String(new byte[10], "ASCII"), Lists.newArrayList());
internalExtractURIQueryParams("foo", host + "", Lists.newArrayList());
internalExtractURIQueryParams("foo", host + "?", Lists.newArrayList());
internalExtractURIQueryParams("foo", host + "?foo=hello%26%3D%23&bar=world", Arrays.asList("hello&=#"));
internalExtractURIQueryParams("foo&=#", host + "?foo%26%3D%23=hello%26%3D%23&bar=world", Arrays.asList("hello&=#"));
internalExtractURIQueryParams("foo&=#", host + "?foo&=#=hello%26%3D%23&bar=world", Lists.newArrayList());
internalExtractURIQueryParams("foo%26%3D%23", host + "?foo%26%3D%23=hello%26%3D%23&bar=world", Lists.newArrayList());
internalExtractURIQueryParams("bar", host + "?foo=hello%26%3D%23&bar=world", Arrays.asList("world"));
internalExtractURIQueryParams("bar", host + "?foo%26%3D%23=hello%26%3D%23&bar=world", Arrays.asList("world"));
internalExtractURIQueryParams("bar", host + "?foo&===hello%26%3D%23&bar=world", Arrays.asList("world"));
}