1 package net.pterodactylus.sone.utils
3 import com.google.common.base.Predicate
4 import org.hamcrest.MatcherAssert.assertThat
5 import org.hamcrest.Matchers.equalTo
6 import org.hamcrest.Matchers.nullValue
7 import org.hamcrest.Matchers.sameInstance
11 * Unit test for [DefaultOption].
13 class DefaultOptionTest {
15 private val defaultValue = Any()
16 private val acceptedValue = Any()
17 private val matchesAcceptedValue = Predicate<Any?> { it == acceptedValue }
20 fun `default option returns default value when unset`() {
21 val defaultOption = DefaultOption(defaultValue)
22 assertThat(defaultOption.get(), sameInstance(defaultValue))
26 fun `default option returns null for real when unset`() {
27 val defaultOption = DefaultOption(defaultValue)
28 assertThat(defaultOption.real, nullValue())
32 fun `default option will return set value`() {
33 val defaultOption = DefaultOption(defaultValue)
35 defaultOption.set(newValue)
36 assertThat(defaultOption.get(), sameInstance(newValue))
40 fun `default option with validator accepts valid values`() {
41 val defaultOption = DefaultOption(defaultValue, matchesAcceptedValue)
42 defaultOption.set(acceptedValue)
43 assertThat(defaultOption.get(), sameInstance(acceptedValue))
46 @Test(expected = IllegalArgumentException::class)
47 fun `default option with validator rejects invalid values`() {
48 val defaultOption = DefaultOption(defaultValue, matchesAcceptedValue)
49 defaultOption.set(Any())
53 fun `default option validates objects correctly`() {
54 val defaultOption = DefaultOption(defaultValue, matchesAcceptedValue)
55 assertThat(defaultOption.validate(acceptedValue), equalTo(true))
56 assertThat(defaultOption.validate(Any()), equalTo(false))
60 fun `setting to null will restore default value`() {
61 val defaultOption = DefaultOption(defaultValue)
62 defaultOption.set(null)
63 assertThat(defaultOption.get(), sameInstance(defaultValue))
67 fun `validate without validator will validate null`() {
68 val defaultOption = DefaultOption(defaultValue)
69 assertThat(defaultOption.validate(null), equalTo(true))
73 fun `validate with validator will validate null`() {
74 val defaultOption = DefaultOption(defaultValue, matchesAcceptedValue)
75 assertThat(defaultOption.validate(null), equalTo(true))