### Question:
ManifestUpdaterImpl implements ManifestUpdater { protected String join( Collection<String> collection, String delimiter ) { StringBuilder sb = new StringBuilder(); for ( String value : collection ) { sb.append( value ); sb.append( delimiter ); } if ( sb.length() > 0 ) { sb.setLength( sb.length() - delimiter.length() ); } return sb.toString(); } ManifestUpdaterImpl(); @Override void setBundleSymbolicName( String name ); @Override String getBundleSymbolicName(); @Override Map<String, String> getImports(); @Override Set<String> getExportServices(); @Override void addEntry( Object key, Object value ); @Override void write( java.util.jar.Manifest originalManifest, OutputStream outputStream, String name,
                               String symbolicName, String version );  }### Answer:
@Test public void testJoinMultiple() { ManifestUpdaterImpl manifest = new ManifestUpdaterImpl(); assertEquals( "test..1..2", manifest.join( Arrays.asList( "test", "1", "2" ), ".." ) ); }
@Test public void testJoinNone() { ManifestUpdaterImpl manifest = new ManifestUpdaterImpl(); assertEquals( "", manifest.join( Arrays.<String>asList(), ".." ) ); }