### Question:
FilterWhereBuilder { public void join(final String operator, final FilterWhereBuilder l, final FilterWhereBuilder r) { this.in = true; if (l.isIn()) { where.append("( "); } where.append(l.getWhere()); if (l.isIn()) { where.append(" )"); } where.append(" "); where.append(operator); where.append(" "); if (r.isIn()) { where.append("( "); } where.append(r.getWhere()); if (r.isIn()) { where.append(" )"); } params.addAll(l.getParams()); params.addAll(r.getParams()); }  void join(final String operator, final FilterWhereBuilder l, final FilterWhereBuilder r); List<SQLParam> getParams(); StringBuilder getWhere(); void addBind(final SQLParam param, final String operator); void addNull(final String name); boolean isIn(); String getWhereClause();  }### Answer:
@Test public void testJoin() { FilterWhereBuilder l = new FilterWhereBuilder(); final SQLParam param = new SQLParam(NAME, VALUE); l.addBind(param, OPERATOR); FilterWhereBuilder r = new FilterWhereBuilder(); r.addBind(param, OPERATOR); FilterWhereBuilder actual = new FilterWhereBuilder(); actual.join("AND", l, r); assertNotNull(actual); assertNotNull(actual.getParams()); assertTrue(actual.getParams().contains(param)); assertEquals("number for binding", 2, actual.getParams().size()); assertEquals("name = ? AND name = ?", actual.getWhereClause()); }