### Question:
ExtraColumnsMetaDataProvider implements MetaDataProvider { @Override public Object getValue(String key) { Object value = null; if (myExtraColumns.containsKey(key)) { value = myExtraColumns.get(key); } else { value = myOriginal.getValue(key); } return value; } 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 testGetValue() { EasyMockSupport support = new EasyMockSupport(); MetaDataProvider original = createProvider(support); Map<String, Object> extras = createExtraColumns(); support.replayAll(); ExtraColumnsMetaDataProvider provider = new ExtraColumnsMetaDataProvider(original, extras); assertEquals("val1", provider.getValue(ourOriginalColumns[0])); assertEquals("val4", provider.getValue("col4")); assertEquals("val", provider.getValue(ourOriginalColumns[1])); support.verifyAll(); }