1 package net.pterodactylus.sone.utils
3 import org.hamcrest.MatcherAssert.assertThat
4 import org.hamcrest.Matchers.equalTo
5 import org.hamcrest.Matchers.nullValue
6 import org.hamcrest.Matchers.sameInstance
10 * Unit test for [DefaultOption].
12 class DefaultOptionTest {
14 private val defaultValue = Any()
15 private val acceptedValue = Any()
16 private val matchesAcceptedValue = { it: Any -> it == acceptedValue }
19 fun `default option returns default value when unset`() {
20 val defaultOption = DefaultOption(defaultValue)
21 assertThat(defaultOption.get(), sameInstance(defaultValue))
25 fun `default option returns null for real when unset`() {
26 val defaultOption = DefaultOption(defaultValue)
27 assertThat(defaultOption.real, nullValue())
31 fun `default option will return set value`() {
32 val defaultOption = DefaultOption(defaultValue)
34 defaultOption.set(newValue)
35 assertThat(defaultOption.get(), sameInstance(newValue))
39 fun `default option with validator accepts valid values`() {
40 val defaultOption = DefaultOption(defaultValue, matchesAcceptedValue)
41 defaultOption.set(acceptedValue)
42 assertThat(defaultOption.get(), sameInstance(acceptedValue))
45 @Test(expected = IllegalArgumentException::class)
46 fun `default option with validator rejects invalid values`() {
47 val defaultOption = DefaultOption(defaultValue, matchesAcceptedValue)
48 defaultOption.set(Any())
52 fun `default option validates objects correctly`() {
53 val defaultOption = DefaultOption(defaultValue, matchesAcceptedValue)
54 assertThat(defaultOption.validate(acceptedValue), equalTo(true))
55 assertThat(defaultOption.validate(Any()), equalTo(false))
59 fun `setting to null will restore default value`() {
60 val defaultOption = DefaultOption(defaultValue)
61 defaultOption.set(null)
62 assertThat(defaultOption.get(), sameInstance(defaultValue))
66 fun `validate without validator will validate null`() {
67 val defaultOption = DefaultOption(defaultValue)
68 assertThat(defaultOption.validate(null), equalTo(true))
72 fun `validate with validator will validate null`() {
73 val defaultOption = DefaultOption(defaultValue, matchesAcceptedValue)
74 assertThat(defaultOption.validate(null), equalTo(true))