Remove option watcher, it’s not used anymore.
[Sone.git] / src / test / java / net / pterodactylus / sone / core / DefaultOptionTest.java
1 package net.pterodactylus.sone.core;
2
3 import static org.hamcrest.MatcherAssert.assertThat;
4 import static org.hamcrest.Matchers.is;
5 import static org.hamcrest.Matchers.nullValue;
6
7 import java.util.concurrent.atomic.AtomicInteger;
8 import java.util.concurrent.atomic.AtomicReference;
9
10 import javax.annotation.Nullable;
11
12 import net.pterodactylus.sone.core.Options.DefaultOption;
13 import net.pterodactylus.sone.core.Options.Option;
14
15 import com.google.common.base.Predicate;
16 import org.junit.Test;
17
18 /**
19  * Unit test for {@link DefaultOption}.
20  *
21  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
22  */
23 public class DefaultOptionTest {
24
25         private final Object defaultValue = new Object();
26         private final Object acceptedValue = new Object();
27         private final Predicate<Object> matchesAcceptedValue = new Predicate<Object>() {
28                 @Override
29                 public boolean apply(@Nullable Object object) {
30                         return acceptedValue.equals(object);
31                 }
32         };
33
34         @Test
35         public void defaultOptionReturnsDefaultValueWhenUnset() {
36                 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
37                 assertThat(defaultOption.get(), is(defaultValue));
38         }
39
40         @Test
41         public void defaultOptionReturnsNullForRealWhenUnset() {
42                 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
43                 assertThat(defaultOption.getReal(), nullValue());
44         }
45
46         @Test
47         public void defaultOptionWillReturnSetValue() {
48                 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
49                 Object newValue = new Object();
50                 defaultOption.set(newValue);
51                 assertThat(defaultOption.get(), is(newValue));
52         }
53
54         @Test
55         public void defaultOptionWithValidatorAcceptsValidValues() {
56                 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
57                 defaultOption.set(acceptedValue);
58                 assertThat(defaultOption.get(), is(acceptedValue));
59         }
60
61         @Test(expected = IllegalArgumentException.class)
62         public void defaultOptionWithValidatorRejectsInvalidValues() {
63                 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
64                 defaultOption.set(new Object());
65         }
66
67         @Test
68         public void defaultOptionValidatesObjectsCorrectly() {
69                 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
70                 assertThat(defaultOption.validate(acceptedValue), is(true));
71                 assertThat(defaultOption.validate(new Object()), is(false));
72         }
73
74         @Test
75         public void settingToNullWillRestoreDefaultValue() {
76                 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
77                 defaultOption.set(null);
78                 assertThat(defaultOption.get(), is(defaultValue));
79         }
80
81         @Test
82         public void validateWithoutValidatorWillValidateNull() {
83                 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
84                 assertThat(defaultOption.validate(null), is(true));
85         }
86
87         @Test
88         public void validateWithValidatorWillValidateNull() {
89                 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
90                 assertThat(defaultOption.validate(null), is(true));
91         }
92
93 }