From 17148ca5e91a79f9cce9177f098c887751091da0 Mon Sep 17 00:00:00 2001 From: Tomasz Lelek Date: Mon, 2 Jan 2017 16:22:27 +0100 Subject: [PATCH] BAEL-382 Add extension function that works on list --- kotlin/src/main/kotlin/com/baeldung/Item.kt | 2 +- .../main/kotlin/com/baeldung/ListExtension.kt | 15 +++++++++++++++ .../kotlin/com/baeldung/ListExtensionTest.kt | 18 ++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 kotlin/src/main/kotlin/com/baeldung/ListExtension.kt create mode 100644 kotlin/src/test/kotlin/com/baeldung/ListExtensionTest.kt diff --git a/kotlin/src/main/kotlin/com/baeldung/Item.kt b/kotlin/src/main/kotlin/com/baeldung/Item.kt index c0b6dd7631..642b7d6274 100644 --- a/kotlin/src/main/kotlin/com/baeldung/Item.kt +++ b/kotlin/src/main/kotlin/com/baeldung/Item.kt @@ -1,4 +1,4 @@ package com.baeldung -data class Item(val id: String, val name: String) \ No newline at end of file +data class Item(val id: String, val name: String = "unknown_name") \ No newline at end of file diff --git a/kotlin/src/main/kotlin/com/baeldung/ListExtension.kt b/kotlin/src/main/kotlin/com/baeldung/ListExtension.kt new file mode 100644 index 0000000000..79d2daa1dc --- /dev/null +++ b/kotlin/src/main/kotlin/com/baeldung/ListExtension.kt @@ -0,0 +1,15 @@ +package com.baeldung + +import java.util.concurrent.ThreadLocalRandom + + +class ListExtension { + fun List.random(): T? { + if (this.isEmpty()) return null + return get(ThreadLocalRandom.current().nextInt(count())) + } + + fun getRandomElementOfList(list: List): T? { + return list.random() + } +} \ No newline at end of file diff --git a/kotlin/src/test/kotlin/com/baeldung/ListExtensionTest.kt b/kotlin/src/test/kotlin/com/baeldung/ListExtensionTest.kt new file mode 100644 index 0000000000..42453f2057 --- /dev/null +++ b/kotlin/src/test/kotlin/com/baeldung/ListExtensionTest.kt @@ -0,0 +1,18 @@ +package com.baeldung + +import org.junit.Test +import kotlin.test.assertTrue + +class ListExtensionTest { + @Test + fun givenList_whenExecuteExtensionFunctionOnList_shouldReturnRandomElementOfList(){ + //given + val elements = listOf("a", "b", "c") + + //when + val result = ListExtension().getRandomElementOfList(elements) + + //then + assertTrue(elements.contains(result)) + } +} \ No newline at end of file