import net.pterodactylus.sone.core.Options.DefaultOption;
import net.pterodactylus.sone.core.Options.Option;
-import net.pterodactylus.sone.core.Options.OptionWatcher;
import com.google.common.base.Predicate;
import org.junit.Test;
}
@Test
- 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));
+ public void defaultOptionValidatesObjectsCorrectly() {
+ DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
+ assertThat(defaultOption.validate(acceptedValue), is(true));
+ assertThat(defaultOption.validate(new Object()), is(false));
}
@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));
+ public void settingToNullWillRestoreDefaultValue() {
+ DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
+ defaultOption.set(null);
+ assertThat(defaultOption.get(), is(defaultValue));
}
@Test
- public void defaultOptionValidatesObjectsCorrectly() {
+ public void validateWithoutValidatorWillValidateNull() {
+ DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
+ assertThat(defaultOption.validate(null), is(true));
+ }
+
+ @Test
+ public void validateWithValidatorWillValidateNull() {
DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
- assertThat(defaultOption.validate(acceptedValue), is(true));
- assertThat(defaultOption.validate(new Object()), is(false));
+ assertThat(defaultOption.validate(null), is(true));
}
}