### Question:
PropertiesHolder implements IHasProperties { @Override public void setProperties( Map<String, Object> props ) { dirty = true; properties.putAll( props ); } PropertiesHolder(); @Override Object getProperty( String key ); String getPropertyAsString( String key ); @Override void setProperty( String key, Object value ); @Override Object removeProperty( String key ); @Override Set<String> getPropertyKeys(); @Override Map<String, Object> getProperties(); @Override void setProperties( Map<String, Object> props ); @Override void removeProperties( Set<String> keys ); @Override void clearProperties(); @Override boolean containsKey( String key ); @Override boolean isDirty(); @Override void setDirty( boolean dirty ); @Override String toString();  }### Answer:
@Test public void testSetProperties() throws Exception { Map<String, Object> getProps = props.getProperties(); assertNotNull( getProps ); assertTrue( getProps.isEmpty() ); Map<String, Object> setProps = new HashMap<String, Object>( 3 ); setProps.put( "a", 1 ); setProps.put( "b", 2 ); props.setProperties( setProps ); assertEquals( getProps.size(), 2 ); setProps.put( "c", 3 ); props.setProperties( setProps ); assertEquals( getProps.size(), 3 ); }