🔖 Set version to 81
[Sone.git] / src / test / java / net / pterodactylus / sone / utils / DefaultOptionTest.java
1 package net.pterodactylus.sone.utils;
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 javax.annotation.Nullable;
8
9 import com.google.common.base.Predicate;
10 import org.junit.Test;
11
12 /**
13  * Unit test for {@link DefaultOption}.
14  */
15 public class DefaultOptionTest {
16
17         private final Object defaultValue = new Object();
18         private final Object acceptedValue = new Object();
19         private final Predicate<Object> matchesAcceptedValue = new Predicate<Object>() {
20                 @Override
21                 public boolean apply(@Nullable Object object) {
22                         return acceptedValue.equals(object);
23                 }
24         };
25
26         @Test
27         public void defaultOptionReturnsDefaultValueWhenUnset() {
28                 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue);
29                 assertThat(defaultOption.get(), is(defaultValue));
30         }
31
32         @Test
33         public void defaultOptionReturnsNullForRealWhenUnset() {
34                 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue);
35                 assertThat(defaultOption.getReal(), nullValue());
36         }
37
38         @Test
39         public void defaultOptionWillReturnSetValue() {
40                 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue);
41                 Object newValue = new Object();
42                 defaultOption.set(newValue);
43                 assertThat(defaultOption.get(), is(newValue));
44         }
45
46         @Test
47         public void defaultOptionWithValidatorAcceptsValidValues() {
48                 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue, matchesAcceptedValue);
49                 defaultOption.set(acceptedValue);
50                 assertThat(defaultOption.get(), is(acceptedValue));
51         }
52
53         @Test(expected = IllegalArgumentException.class)
54         public void defaultOptionWithValidatorRejectsInvalidValues() {
55                 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue, matchesAcceptedValue);
56                 defaultOption.set(new Object());
57         }
58
59         @Test
60         public void defaultOptionValidatesObjectsCorrectly() {
61                 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue, matchesAcceptedValue);
62                 assertThat(defaultOption.validate(acceptedValue), is(true));
63                 assertThat(defaultOption.validate(new Object()), is(false));
64         }
65
66         @Test
67         public void settingToNullWillRestoreDefaultValue() {
68                 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue);
69                 defaultOption.set(null);
70                 assertThat(defaultOption.get(), is(defaultValue));
71         }
72
73         @Test
74         public void validateWithoutValidatorWillValidateNull() {
75                 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue);
76                 assertThat(defaultOption.validate(null), is(true));
77         }
78
79         @Test
80         public void validateWithValidatorWillValidateNull() {
81                 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue, matchesAcceptedValue);
82                 assertThat(defaultOption.validate(null), is(true));
83         }
84
85 }