🔀 Merge “release/v81” into “master”
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / utils / ObjectsTest.kt
index 9e96bfe..76cc723 100644 (file)
@@ -1,8 +1,9 @@
 package net.pterodactylus.sone.utils
 
-import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.MatcherAssert.*
 import org.hamcrest.Matchers.*
-import org.junit.Test
+import java.util.concurrent.*
+import kotlin.test.*
 
 /**
  * Unit test for Object utils.
@@ -19,9 +20,11 @@ class ObjectsTest {
                assertThat(null.asList(), empty())
        }
 
-       @Test(expected = IllegalArgumentException::class)
+       @Test
        fun `exception is thrown for null and true condition`() {
-               null.throwOnNullIf(true) { IllegalArgumentException() }
+               assertFailsWith(IllegalArgumentException::class) {
+                       null.throwOnNullIf(true) { IllegalArgumentException() }
+               }
        }
 
        @Test
@@ -41,4 +44,29 @@ class ObjectsTest {
                assertThat(any.throwOnNullIf(false) { IllegalArgumentException() }, equalTo(any))
        }
 
+       @Test
+       fun `onNull is executed on null`() {
+               val called = CountDownLatch(1)
+               null.onNull { called.countDown() }
+               assertThat(called.count, equalTo(0L))
+       }
+
+       @Test
+       fun `onNull returns null when called on null`() {
+               assertThat(null.onNull {}, nullValue())
+       }
+
+       @Test
+       fun `onNull is not executed on non-null`() {
+               val called = CountDownLatch(1)
+               Any().onNull { called.countDown() }
+               assertThat(called.count, equalTo(1L))
+       }
+
+       @Test
+       fun `onNull returns object when called on non-null`() {
+               val any = Any()
+               assertThat(any.onNull {}, sameInstance(any))
+       }
+
 }