### Question:
ChangesCommand { @Override public String toString() { if (queryString == null) { URI uri = URI.of("_changes"); if (continuous) { uri.param("feed", "continuous"); } if (since != null) { uri.param("since", since); } if (filter != null) { uri.param("filter", filter); } if (includeDocs) { uri.param("include_docs", "true"); } if (heartbeat > 0) { uri.param("heartbeat", heartbeat); } if (limit > -1){ uri.param("limit", limit); } if (extraQueryParams != null) { uri.params(extraQueryParams); } queryString = uri.toString(); } return queryString; } private  ChangesCommand(Builder b); @Override String toString(); final String since; final boolean continuous; final String filter; final boolean includeDocs; final int heartbeat; final int limit; final Map<String,String> extraQueryParams; }### Answer:
@Test public void noParams_should_produce_a_valid_partial_URI() { assertEquals("_changes", new ChangesCommand.Builder().build().toString()); }
@Test public void allParams_should_produce_a_valid_partial_URI() { assertEquals("_changes?feed=continuous&since=10&filter=mydesigndoc%2Fmyfilter&include_docs=true&limit=1000&paramName=paramValue", new ChangesCommand.Builder() .continuous(true) .since(10) .filter("mydesigndoc/myfilter") .includeDocs(true) .limit(1000) .param("paramName", "paramValue") .build().toString()); }