prop.setProperty("testProp1", "testProp1-value");
Assert.assertTrue(prop.hasProperty());
Assert.assertEquals(prop.getProperty("testProp1", String.class), "testProp1-value");
ExtendedProperties newProp = new ExtendedProperties();
newProp.setProperties(prop);
Assert.assertEquals(newProp.getProperty("testProp1", String.class), prop.getProperty("testProp1", String.class));
prop.setProperty("testProp2", "testProp2-value");
Assert.assertEquals(prop.getProperty("testProp2", String.class), "testProp2-value");
Assert.assertNull(newProp.getProperty("testProp2", String.class));
Object cloned = prop.clone();
Assert.assertTrue(ExtendedProperties.class.isAssignableFrom(cloned.getClass()));
ExtendedProperties clonedProperties = ExtendedProperties.class.cast(cloned);
Assert.assertEquals(clonedProperties.getProperty("testProp1", String.class), "testProp1-value");
Assert.assertEquals(clonedProperties.getProperty("testProp2", String.class), "testProp2-value");
}