### Question:
ExtraColumnsMetaDataProvider implements MetaDataProvider { @Override public boolean setValue(String key, Serializable value) { boolean valueSet; if (myExtraColumns.containsKey(key)) { valueSet = myExtraColumns.put(key, value) == value; } else { valueSet = myOriginal.setValue(key, value); } return valueSet; } protected  ExtraColumnsMetaDataProvider(ExtraColumnsMetaDataProvider source);  ExtraColumnsMetaDataProvider(MetaDataProvider original, Map<String, Object> extraColumns); @Override List<String> getKeys(); @Override Object getValue(String key); @Override List<Object> getValues(); @Override boolean hasKey(String key); @Override boolean keysMutable(); @Override void removeKey(String key); @Override boolean setValue(String key, Serializable value); @Override boolean valuesMutable(); Map<String, Object> getExtraColumns(); MetaDataProvider getOriginal(); @Override MetaDataProvider createCopy(DataTypeInfo newDatatype);  }### Answer:
@Test public void testSetValue() { EasyMockSupport support = new EasyMockSupport(); MetaDataProvider original = support.createMock(MetaDataProvider.class); EasyMock.expect(original.setValue(EasyMock.cmpEq(ourOriginalColumns[0]), EasyMock.cmpEq("newVal1"))).andReturn(true); Map<String, Object> extras = createExtraColumns(); support.replayAll(); ExtraColumnsMetaDataProvider provider = new ExtraColumnsMetaDataProvider(original, extras); provider.setValue(ourOriginalColumns[0], "newVal1"); provider.setValue(ourOriginalColumns[1], "newVal2"); provider.setValue(ourExtraColumns[2], "newVal5"); assertEquals("newVal2", provider.getValue(ourOriginalColumns[1])); assertEquals("newVal5", provider.getValue(ourExtraColumns[2])); support.verifyAll(); }