### Question:
BindablePropertyAdapterImpl implements BindablePropertyAdapter<T, R> { @Override public R getValue(T pojo) { return getFieldValue(pojo, valueFields.get(pojo.getClass())); } private  BindablePropertyAdapterImpl(StunnerTranslationService translationService,
                                        BindableAdapterFunctions functions,
                                        Map<Class<?>, String> valueFields); static BindablePropertyAdapterImpl<Object, Object> create(StunnerTranslationService translationService,
                                                                     BindableAdapterFunctions functions); static BindablePropertyAdapterImpl<Object, Object> create(StunnerTranslationService translationService,
                                                                     BindableAdapterFunctions functions,
                                                                     Map<Class<?>, String> valueFields); @Override void addBinding(Class<?> type, String valueField); @Override String getId(T pojo); @Override String getCaption(T pojo); @Override R getValue(T pojo); @Override void setValue(T pojo, R value); @Override int getPriority(); @Override boolean accepts(Class<?> type);  }### Answer:
@Test public void testGetValue() { when(functions.getValue(PROPERTY_1, "value")).thenReturn("p1Value"); when(functions.getValue(PROPERTY_2, "someValue")).thenReturn("p2Value"); Object value1 = tested.getValue(PROPERTY_1); Object value2 = tested.getValue(PROPERTY_2); assertEquals("p1Value", value1); assertEquals("p2Value", value2); }