X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Futils%2FDefaultOptionTest.kt;fp=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Futils%2FDefaultOptionTest.kt;h=f7f4a491776150c7b7f8e919eaae50e1569e7041;hp=0000000000000000000000000000000000000000;hb=150dafbd9a3f63ca06e6b53002723b56ec7f3d05;hpb=5e7cd469678244403a5ca884736261b6d8217f16 diff --git a/src/test/kotlin/net/pterodactylus/sone/utils/DefaultOptionTest.kt b/src/test/kotlin/net/pterodactylus/sone/utils/DefaultOptionTest.kt new file mode 100644 index 0000000..f7f4a49 --- /dev/null +++ b/src/test/kotlin/net/pterodactylus/sone/utils/DefaultOptionTest.kt @@ -0,0 +1,78 @@ +package net.pterodactylus.sone.utils + +import com.google.common.base.Predicate +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.nullValue +import org.hamcrest.Matchers.sameInstance +import org.junit.Test + +/** + * Unit test for [DefaultOption]. + */ +class DefaultOptionTest { + + private val defaultValue = Any() + private val acceptedValue = Any() + private val matchesAcceptedValue = Predicate { it == acceptedValue } + + @Test + fun `default option returns default value when unset`() { + val defaultOption = DefaultOption(defaultValue) + assertThat(defaultOption.get(), sameInstance(defaultValue)) + } + + @Test + fun `default option returns null for real when unset`() { + val defaultOption = DefaultOption(defaultValue) + assertThat(defaultOption.real, nullValue()) + } + + @Test + fun `default option will return set value`() { + val defaultOption = DefaultOption(defaultValue) + val newValue = Any() + defaultOption.set(newValue) + assertThat(defaultOption.get(), sameInstance(newValue)) + } + + @Test + fun `default option with validator accepts valid values`() { + val defaultOption = DefaultOption(defaultValue, matchesAcceptedValue) + defaultOption.set(acceptedValue) + assertThat(defaultOption.get(), sameInstance(acceptedValue)) + } + + @Test(expected = IllegalArgumentException::class) + fun `default option with validator rejects invalid values`() { + val defaultOption = DefaultOption(defaultValue, matchesAcceptedValue) + defaultOption.set(Any()) + } + + @Test + fun `default option validates objects correctly`() { + val defaultOption = DefaultOption(defaultValue, matchesAcceptedValue) + assertThat(defaultOption.validate(acceptedValue), equalTo(true)) + assertThat(defaultOption.validate(Any()), equalTo(false)) + } + + @Test + fun `setting to null will restore default value`() { + val defaultOption = DefaultOption(defaultValue) + defaultOption.set(null) + assertThat(defaultOption.get(), sameInstance(defaultValue)) + } + + @Test + fun `validate without validator will validate null`() { + val defaultOption = DefaultOption(defaultValue) + assertThat(defaultOption.validate(null), equalTo(true)) + } + + @Test + fun `validate with validator will validate null`() { + val defaultOption = DefaultOption(defaultValue, matchesAcceptedValue) + assertThat(defaultOption.validate(null), equalTo(true)) + } + +}