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=e445b39dcd1b8a21f64871b2977eb56741f2ca0c;hp=0000000000000000000000000000000000000000;hb=5c5bee980f9cab5792e34d1c9840f73b8b191830;hpb=faf66247a34f64946990a985d2ea3003465969cb 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..e445b39 --- /dev/null +++ b/src/test/kotlin/net/pterodactylus/sone/utils/DefaultOptionTest.kt @@ -0,0 +1,77 @@ +package net.pterodactylus.sone.utils + +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 = { it: Any -> 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)) + } + +}