### Question:
Strings { public static <T> String join(Iterable<? extends T> objects, String separator) { return StringUtils.join(materialize(objects), separator); } private  Strings(); static String join(Iterable<? extends T> objects, String separator); static String join(Iterable<? extends T> objects); static String join(T o1, T o2); static String join(T o1, T o2, T o3); static String join(T o1, T o2, T o3, T o4); static String join(T o1, T o2, T o3, T o4, T o5); static String join(T o1, T o2, T o3, T o4, T o5, T o6); static String join(T o1, T o2, T o3, T o4, T o5, T o6, T o7); static String join(T o1, T o2, T o3, T o4, T o5, T o6, T o7, T o8); static String join(T o1, T o2, T o3, T o4, T o5, T o6, T o7, T o8, T o9); static String join(T o1, T o2, T o3, T o4, T o5, T o6, T o7, T o8, T o9, T o10); static String join(T o1, T o2, T o3, T o4, T o5, T o6, T o7, T o8, T o9, T o10, T... o11on); static String toStringOrNull(Object value); static String toStringOrNull(BigDecimal value); static String toStringOrEmpty(Object value); static String toStringOrEmpty(BigDecimal value); static String toStringOr(String alternative, Object value); static String toStringOr(String alternative, BigDecimal value); static boolean isNullOrBlank(String value); static Predicate<String> whereNullOrBlank(); static Predicate<String> whereBlank();  }### Answer:
@Test public void joinsAllStringsInTheCollectionUsingTheSeparator() { Collection<String> strings = collectionWith("First", "Second", "Third"); String separator = ", "; String joinedStrings = join(strings, separator); assertThat(joinedStrings, is("First, Second, Third")); }
@Test(expected = NullPointerException.class) public void throwsANullPointerExceptionIfIterablePassedToJoinWithSeparatorIsNull() throws Exception { Iterable<String> input = null; String separator = "."; join(input, separator); }
@Test public void joinsAllStringsInTheCollectionWithNoSeparator() { Collection<String> strings = collectionWith("He", "ll", "o"); String joinedStrings = join(strings); assertThat(joinedStrings, is("Hello")); }
@Test(expected = NullPointerException.class) public void throwsANullPointerExceptionIfIterablePassedToJoinIsNull() throws Exception { Iterable<String> input = null; join(input); }
@Test public void joinsAllPassedStringWithNoSeparator() { String joinedStrings = join("Goo", "db", "ye"); assertThat(joinedStrings, is("Goodbye")); }
@Test public void rendersNullsAsEmptyStrings() throws Exception { Collection<String> strings = collectionWith("He", null, "o"); String joinedStrings = join(strings); assertThat(joinedStrings, is("Heo")); }