### Question:
Utils { public static String join(String delimiter, String wrap, Iterable<?> objs) { Iterator<?> iter = objs.iterator(); if (!iter.hasNext()) { return ""; } StringBuilder buffer = new StringBuilder(); buffer.append(wrap).append(iter.next()).append(wrap); while (iter.hasNext()) { buffer.append(delimiter).append(wrap).append(iter.next()).append(wrap); } return buffer.toString(); } private  Utils(); static String join(String delimiter, String wrap, Iterable<?> objs); static String join(String delimiter, Iterable<?> objs); static String concat(CharSequence... strings); static void closeQuietly(Closeable closeable); static String escape(String str, boolean escapeSingleQuote); static String unescape(String str); static String hex(char ch); static boolean isEmpty(CharSequence cs); static T notNull(T object, String message, Object... values); static void isTrue(boolean expression, String message); static void onlyOneIsTrue(final String message, final boolean... expressions); static boolean onlyOneIsTrueNonThrow(final boolean... expressions); static T notEmpty(T chars, String message, Object... values); static String toString(Object o);  }### Answer:
@Test public void testJoin() { ArrayList<String> strings = new ArrayList<String>(); strings.add("foo"); strings.add("bar"); strings.add("baz"); Assert.assertEquals("foo,bar,baz", Utils.join(",", strings)); Assert.assertEquals("", Utils.join(",", new ArrayList<String>())); }