✨ Add onTrue method for Booleans
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 4 Jan 2020 23:40:52 +0000 (00:40 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 4 Jan 2020 23:40:52 +0000 (00:40 +0100)
src/main/kotlin/net/pterodactylus/sone/utils/Booleans.kt
src/test/kotlin/net/pterodactylus/sone/utils/BooleansTest.kt

index 49deb87..1d3e097 100644 (file)
@@ -11,6 +11,14 @@ fun <R> Boolean.ifTrue(block: () -> R): R? = if (this) block() else null
 fun <R> Boolean.ifFalse(block: () -> R): R? = if (!this) block() else null
 
 /**
+ * Returns `this` but runs the given block if `this`  is `true`.
+ *
+ * @param block The block to run if `this` is `true`
+ * @return `this`
+ */
+fun Boolean.onTrue(block: () -> Unit): Boolean = also { if (this) block() }
+
+/**
  * Returns `this` but runs the given block if `this`  is `false`.
  *
  * @param block The block to run if `this` is `false`
index a1b6da7..bd81f08 100644 (file)
@@ -30,6 +30,26 @@ class BooleansTest {
        }
 
        @Test
+       fun `onTrue returns true on true`() {
+               assertThat(true.onTrue {}, equalTo(true))
+       }
+
+       @Test
+       fun `onTrue returns false on false`() {
+               assertThat(false.onTrue {}, equalTo(false))
+       }
+
+       @Test
+       fun `onTrue is not executed on false`() {
+               assertThat(false.onTrue { throw RuntimeException() }, equalTo(false))
+       }
+
+       @Test(expected = RuntimeException::class)
+       fun `onTrue is executed on true`() {
+               true.onTrue { throw RuntimeException() }
+       }
+
+       @Test
        fun `onFalse returns true on true`() {
                assertThat(true.onFalse {}, equalTo(true))
        }