@Override public Object getProperty(final String name) { return lazyProperties.get(name); }
@Override public Object getProperty(final String name) { return lazyProperties.get(name); }
@Override public Object get(final Object name) { return get(name.toString()); }
@Test public void shouldRemovePropertyNameFromLoadedPropertiesAndMapWhenRemoveIsCalled() { // Given final ElementValueLoader elementLoader = mock(ElementValueLoader.class); final Properties properties = new Properties(); final String propertyName = "property name"; final String propertyValue = "property value"; final LazyProperties lazyProperties = new LazyProperties(properties, elementLoader); given(elementLoader.getProperty(propertyName, lazyProperties)).willReturn(propertyValue); lazyProperties.get(propertyName); // call it to load the value. // When lazyProperties.remove(propertyName); lazyProperties.get(propertyName); // Then verify(elementLoader, times(2)).getProperty(propertyName, lazyProperties); // should be called twice before and after removeProperty() assertEquals(propertyValue, properties.get(propertyName)); }
@Test public void shouldClearLoadedPropertiesAndMapWhenClearIsCalled() { // Given final ElementValueLoader elementLoader = mock(ElementValueLoader.class); final Properties properties = new Properties(); final String propertyName = "property name"; final String propertyValue = "property value"; final LazyProperties lazyProperties = new LazyProperties(properties, elementLoader); given(elementLoader.getProperty(propertyName, lazyProperties)).willReturn(propertyValue); lazyProperties.get(propertyName); // call it to load the value. // When lazyProperties.clear(); lazyProperties.get(propertyName); // Then verify(elementLoader, times(2)).getProperty(propertyName, lazyProperties); // should be called twice before and after clear() assertEquals(propertyValue, properties.get(propertyName)); }
@Test public void shouldNotLoadPropertyWhenLoaded() { // Given final ElementValueLoader elementLoader = mock(ElementValueLoader.class); final String propertyName = "property name"; final String exceptedPropertyValue = "property value"; final Properties properties = new Properties(propertyName, exceptedPropertyValue); final LazyProperties lazyProperties = new LazyProperties(properties, elementLoader); given(elementLoader.getProperty(propertyName, lazyProperties)).willReturn(exceptedPropertyValue); // When final Object propertyValue = lazyProperties.get(propertyName); // Then assertEquals(exceptedPropertyValue, propertyValue); verify(elementLoader, never()).getProperty(propertyName, lazyProperties); }
@Test public void shouldRemovePropertyNameFromLoadedPropertiesAndMapWhenKeepOnlyThesePropertiesIsCalled() { // Given final ElementValueLoader elementLoader = mock(ElementValueLoader.class); final Properties properties = new Properties(); final String propertyName1 = "property name1"; final String propertyName2 = "property name2"; final String propertyValue1 = "property value1"; final String propertyValue2 = "property value2"; final LazyProperties lazyProperties = new LazyProperties(properties, elementLoader); given(elementLoader.getProperty(propertyName1, lazyProperties)).willReturn(propertyValue1); given(elementLoader.getProperty(propertyName2, lazyProperties)).willReturn(propertyValue2); lazyProperties.get(propertyName1); // call it to load value 1. lazyProperties.get(propertyName2); // call it to load value 2. // When lazyProperties.keepOnly(Sets.newSet(propertyName2)); lazyProperties.get(propertyName1); lazyProperties.get(propertyName2); // Then verify(elementLoader, times(2)).getProperty(propertyName1, lazyProperties); verify(elementLoader, times(1)).getProperty(propertyName2, lazyProperties); assertEquals(propertyValue1, properties.get(propertyName1)); assertEquals(propertyValue2, properties.get(propertyName2)); }
@Test public void shouldRemovePropertyNamesFromLoadedPropertiesAndMapWhenRemovePropertiesIsCalled() { // Given final ElementValueLoader elementLoader = mock(ElementValueLoader.class); final Properties properties = new Properties(); final String propertyName1 = "property name1"; final String propertyName2 = "property name2"; final String propertyValue1 = "property value1"; final String propertyValue2 = "property value2"; final LazyProperties lazyProperties = new LazyProperties(properties, elementLoader); given(elementLoader.getProperty(propertyName1, lazyProperties)).willReturn(propertyValue1); given(elementLoader.getProperty(propertyName2, lazyProperties)).willReturn(propertyValue2); lazyProperties.get(propertyName1); // call it to load value 1. lazyProperties.get(propertyName2); // call it to load value 2. // When lazyProperties.remove(Sets.newSet(propertyName1)); lazyProperties.get(propertyName1); lazyProperties.get(propertyName2); // Then verify(elementLoader, times(2)).getProperty(propertyName1, lazyProperties); verify(elementLoader, times(1)).getProperty(propertyName2, lazyProperties); assertEquals(propertyValue1, properties.get(propertyName1)); assertEquals(propertyValue2, properties.get(propertyName2)); }
@Test public void shouldLoadPropertyWhenNotLoaded() { // Given final ElementValueLoader elementLoader = mock(ElementValueLoader.class); final Properties properties = new Properties(); final String propertyName = "property name"; final String exceptedPropertyValue = "property value"; final LazyProperties lazyProperties = new LazyProperties(properties, elementLoader); given(elementLoader.getProperty(propertyName, lazyProperties)).willReturn(exceptedPropertyValue); // When final Object propertyValue = lazyProperties.get(propertyName); // Then assertEquals(exceptedPropertyValue, propertyValue); assertEquals(propertyValue, properties.get(propertyName)); }
@Override public Object getProperty(final String name) { return lazyProperties.get(name); }
@Override public Object getProperty(final String name) { return lazyProperties.get(name); }
@Override public Object get(final Object name) { return get(name.toString()); }