X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Futils%2FDefaultOptionTest.java;fp=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Futils%2FDefaultOptionTest.java;h=b02d5300ac4aa1271ddca0f19641af874386a363;hb=754925ca491d60ddf92b3cb21fb38f0666169348;hp=0000000000000000000000000000000000000000;hpb=3f91e22e512f81a2e11fa584e30f83da74e62177;p=Sone.git diff --git a/src/test/java/net/pterodactylus/sone/utils/DefaultOptionTest.java b/src/test/java/net/pterodactylus/sone/utils/DefaultOptionTest.java new file mode 100644 index 0000000..b02d530 --- /dev/null +++ b/src/test/java/net/pterodactylus/sone/utils/DefaultOptionTest.java @@ -0,0 +1,89 @@ +package net.pterodactylus.sone.utils; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.nullValue; + +import javax.annotation.Nullable; + +import net.pterodactylus.sone.utils.DefaultOption; + +import com.google.common.base.Predicate; +import org.junit.Test; + +/** + * Unit test for {@link DefaultOption}. + * + * @author David ‘Bombe’ Roden + */ +public class DefaultOptionTest { + + private final Object defaultValue = new Object(); + private final Object acceptedValue = new Object(); + private final Predicate matchesAcceptedValue = new Predicate() { + @Override + public boolean apply(@Nullable Object object) { + return acceptedValue.equals(object); + } + }; + + @Test + public void defaultOptionReturnsDefaultValueWhenUnset() { + DefaultOption defaultOption = new DefaultOption(defaultValue); + assertThat(defaultOption.get(), is(defaultValue)); + } + + @Test + public void defaultOptionReturnsNullForRealWhenUnset() { + DefaultOption defaultOption = new DefaultOption(defaultValue); + assertThat(defaultOption.getReal(), nullValue()); + } + + @Test + public void defaultOptionWillReturnSetValue() { + DefaultOption defaultOption = new DefaultOption(defaultValue); + Object newValue = new Object(); + defaultOption.set(newValue); + assertThat(defaultOption.get(), is(newValue)); + } + + @Test + public void defaultOptionWithValidatorAcceptsValidValues() { + DefaultOption defaultOption = new DefaultOption(defaultValue, matchesAcceptedValue); + defaultOption.set(acceptedValue); + assertThat(defaultOption.get(), is(acceptedValue)); + } + + @Test(expected = IllegalArgumentException.class) + public void defaultOptionWithValidatorRejectsInvalidValues() { + DefaultOption defaultOption = new DefaultOption(defaultValue, matchesAcceptedValue); + defaultOption.set(new Object()); + } + + @Test + public void defaultOptionValidatesObjectsCorrectly() { + DefaultOption defaultOption = new DefaultOption(defaultValue, matchesAcceptedValue); + assertThat(defaultOption.validate(acceptedValue), is(true)); + assertThat(defaultOption.validate(new Object()), is(false)); + } + + @Test + public void settingToNullWillRestoreDefaultValue() { + DefaultOption defaultOption = new DefaultOption(defaultValue); + defaultOption.set(null); + assertThat(defaultOption.get(), is(defaultValue)); + } + + @Test + public void validateWithoutValidatorWillValidateNull() { + DefaultOption defaultOption = new DefaultOption(defaultValue); + assertThat(defaultOption.validate(null), is(true)); + } + + @Test + public void validateWithValidatorWillValidateNull() { + DefaultOption defaultOption = new DefaultOption(defaultValue, matchesAcceptedValue); + assertThat(defaultOption.validate(null), is(true)); + } + +}