1 package net.pterodactylus.sone.core;
3 import static org.hamcrest.MatcherAssert.assertThat;
4 import static org.hamcrest.Matchers.is;
5 import static org.hamcrest.Matchers.nullValue;
7 import java.util.concurrent.atomic.AtomicInteger;
8 import java.util.concurrent.atomic.AtomicReference;
10 import javax.annotation.Nullable;
12 import net.pterodactylus.sone.core.Options.DefaultOption;
13 import net.pterodactylus.sone.core.Options.Option;
15 import com.google.common.base.Predicate;
16 import org.junit.Test;
19 * Unit test for {@link DefaultOption}.
21 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
23 public class DefaultOptionTest {
25 private final Object defaultValue = new Object();
26 private final Object acceptedValue = new Object();
27 private final Predicate<Object> matchesAcceptedValue = new Predicate<Object>() {
29 public boolean apply(@Nullable Object object) {
30 return acceptedValue.equals(object);
35 public void defaultOptionReturnsDefaultValueWhenUnset() {
36 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
37 assertThat(defaultOption.get(), is(defaultValue));
41 public void defaultOptionReturnsNullForRealWhenUnset() {
42 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
43 assertThat(defaultOption.getReal(), nullValue());
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));
55 public void defaultOptionWithValidatorAcceptsValidValues() {
56 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
57 defaultOption.set(acceptedValue);
58 assertThat(defaultOption.get(), is(acceptedValue));
61 @Test(expected = IllegalArgumentException.class)
62 public void defaultOptionWithValidatorRejectsInvalidValues() {
63 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
64 defaultOption.set(new Object());
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));
75 public void settingToNullWillRestoreDefaultValue() {
76 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
77 defaultOption.set(null);
78 assertThat(defaultOption.get(), is(defaultValue));
82 public void validateWithoutValidatorWillValidateNull() {
83 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue);
84 assertThat(defaultOption.validate(null), is(true));
88 public void validateWithValidatorWillValidateNull() {
89 DefaultOption<Object> defaultOption = new DefaultOption<Object>(defaultValue, matchesAcceptedValue);
90 assertThat(defaultOption.validate(null), is(true));