1 package net.pterodactylus.sone.utils;
3 import static org.hamcrest.MatcherAssert.assertThat;
4 import static org.hamcrest.Matchers.is;
5 import static org.hamcrest.Matchers.nullValue;
7 import javax.annotation.Nullable;
9 import net.pterodactylus.sone.utils.DefaultOption;
11 import com.google.common.base.Predicate;
12 import org.junit.Test;
15 * Unit test for {@link DefaultOption}.
17 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
19 public class DefaultOptionTest {
21 private final Object defaultValue = new Object();
22 private final Object acceptedValue = new Object();
23 private final Predicate<Object> matchesAcceptedValue = new Predicate<Object>() {
25 public boolean apply(@Nullable Object object) {
26 return acceptedValue.equals(object);
31 public void defaultOptionReturnsDefaultValueWhenUnset() {
32 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
33 assertThat(defaultOption.get(), is(defaultValue));
37 public void defaultOptionReturnsNullForRealWhenUnset() {
38 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
39 assertThat(defaultOption.getReal(), nullValue());
43 public void defaultOptionWillReturnSetValue() {
44 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
45 Object newValue = new Object();
46 defaultOption.set(newValue);
47 assertThat(defaultOption.get(), is(newValue));
51 public void defaultOptionWithValidatorAcceptsValidValues() {
52 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
53 defaultOption.set(acceptedValue);
54 assertThat(defaultOption.get(), is(acceptedValue));
57 @Test(expected = IllegalArgumentException.class)
58 public void defaultOptionWithValidatorRejectsInvalidValues() {
59 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
60 defaultOption.set(new Object());
64 public void defaultOptionValidatesObjectsCorrectly() {
65 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
66 assertThat(defaultOption.validate(acceptedValue), is(true));
67 assertThat(defaultOption.validate(new Object()), is(false));
71 public void settingToNullWillRestoreDefaultValue() {
72 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
73 defaultOption.set(null);
74 assertThat(defaultOption.get(), is(defaultValue));
78 public void validateWithoutValidatorWillValidateNull() {
79 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
80 assertThat(defaultOption.validate(null), is(true));
84 public void validateWithValidatorWillValidateNull() {
85 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
86 assertThat(defaultOption.validate(null), is(true));