- public void watcherIsNotifiedOnChange() {
- final AtomicReference<Object> changedObject = new AtomicReference<Object>();
- Object newValue = new Object();
- DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, new OptionWatcher<Object>() {
- @Override
- public void optionChanged(Option<Object> option, Object oldValue, Object newValue) {
- assertThat(oldValue, nullValue());
- changedObject.set(newValue);
- }
- });
- defaultOption.set(newValue);
- assertThat(defaultOption.get(), is(newValue));
- assertThat(changedObject.get(), is(newValue));
- }
-
- @Test
- public void watcherIsNotNotifiedIfValueIsSetTwice() {
- final AtomicInteger changeCounter = new AtomicInteger();
- Object newValue = new Object();
- DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, new OptionWatcher<Object>() {
- @Override
- public void optionChanged(Option<Object> option, Object oldValue, Object newValue) {
- changeCounter.incrementAndGet();
- }
- });
- defaultOption.set(newValue);
- defaultOption.set(newValue);
- assertThat(changeCounter.get(), is(1));
- }
-
- @Test