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 com.google.common.base.Predicate;
10 import org.junit.Test;
13 * Unit test for {@link DefaultOption}.
15 public class DefaultOptionTest {
17 private final Object defaultValue = new Object();
18 private final Object acceptedValue = new Object();
19 private final Predicate<Object> matchesAcceptedValue = new Predicate<Object>() {
21 public boolean apply(@Nullable Object object) {
22 return acceptedValue.equals(object);
27 public void defaultOptionReturnsDefaultValueWhenUnset() {
28 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue);
29 assertThat(defaultOption.get(), is(defaultValue));
33 public void defaultOptionReturnsNullForRealWhenUnset() {
34 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue);
35 assertThat(defaultOption.getReal(), nullValue());
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));
47 public void defaultOptionWithValidatorAcceptsValidValues() {
48 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue, matchesAcceptedValue);
49 defaultOption.set(acceptedValue);
50 assertThat(defaultOption.get(), is(acceptedValue));
53 @Test(expected = IllegalArgumentException.class)
54 public void defaultOptionWithValidatorRejectsInvalidValues() {
55 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue, matchesAcceptedValue);
56 defaultOption.set(new Object());
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));
67 public void settingToNullWillRestoreDefaultValue() {
68 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue);
69 defaultOption.set(null);
70 assertThat(defaultOption.get(), is(defaultValue));
74 public void validateWithoutValidatorWillValidateNull() {
75 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue);
76 assertThat(defaultOption.validate(null), is(true));
80 public void validateWithValidatorWillValidateNull() {
81 DefaultOption<Object> defaultOption = new DefaultOption<>(defaultValue, matchesAcceptedValue);
82 assertThat(defaultOption.validate(null), is(true));