package org.robobinding.customviewbinding; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.robobinding.viewattribute.property.OneWayPropertyViewAttribute; import org.robobinding.viewattribute.property.OneWayPropertyViewAttributeFactory; import org.robobinding.viewbinding.BindingAttributeMappings; /** * @since 1.0 * @author Cheng Wei * */ @RunWith(MockitoJUnitRunner.class) public class KeepFirstAttributesTest { private String attributeName = "attributeName"; @Mock private BindingAttributeMappings<ViewType> bindingAttributeMappings; private KeepFirstAttributes<ViewType> keepFirstAttributes; @Before public void setUp() { keepFirstAttributes = new KeepFirstAttributes<ViewType>(bindingAttributeMappings); } @Test public void whenMapSameOneWayPropertyAgain_thenMappedOnceOnly() { Class<OneWayPropertyViewAttribute1> viewAttributeClass = null; keepFirstAttributes.mapOneWayProperty(viewAttributeClass, attributeName); keepFirstAttributes.mapOneWayProperty(viewAttributeClass, attributeName); verify(bindingAttributeMappings, times(1)).mapOneWayProperty(viewAttributeClass, attributeName); } @Test public void whenMapSameOneWayPropertyByFactoryAgain_thenMappedOnceOnly() { Class<OneWayPropertyViewAttribute1> viewAttributeClass = null; OneWayPropertyViewAttributeFactory<ViewType> factory = null; keepFirstAttributes.mapOneWayProperty(viewAttributeClass, attributeName); keepFirstAttributes.mapOneWayProperty(factory, attributeName); verify(bindingAttributeMappings, times(1)).mapOneWayProperty(viewAttributeClass, attributeName); } public static interface ViewType {} public static interface OneWayPropertyViewAttribute1 extends OneWayPropertyViewAttribute<ViewType, Object>{} }