aboutsummaryrefslogtreecommitdiff
path: root/tests/src/test/kotlin/test/MatchersTest.kt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/test/kotlin/test/MatchersTest.kt')
-rw-r--r--tests/src/test/kotlin/test/MatchersTest.kt27
1 files changed, 19 insertions, 8 deletions
diff --git a/tests/src/test/kotlin/test/MatchersTest.kt b/tests/src/test/kotlin/test/MatchersTest.kt
index afed69f..ac3021a 100644
--- a/tests/src/test/kotlin/test/MatchersTest.kt
+++ b/tests/src/test/kotlin/test/MatchersTest.kt
@@ -4,12 +4,11 @@ import com.nhaarman.expect.expect
import com.nhaarman.expect.expectErrorWithMessage
import org.junit.Test
import org.mockito.ArgumentMatcher
-import org.mockito.internal.matchers.VarargMatcher
import org.mockito.invocation.InvocationOnMock
import org.mockito.kotlin.*
import org.mockito.stubbing.Answer
import java.io.IOException
-import kotlin.check
+import kotlin.reflect.KClass
class MatchersTest : TestBase() {
@@ -70,6 +69,14 @@ class MatchersTest : TestBase() {
}
@Test
+ fun anyVarargMatching() {
+ mock<Methods>().apply {
+ whenever(varargBooleanResult(anyVararg())).thenReturn(true)
+ expect(varargBooleanResult()).toBe(true)
+ }
+ }
+
+ @Test
fun anyNull_neverVerifiesAny() {
mock<Methods>().apply {
nullableString(null)
@@ -277,7 +284,7 @@ class MatchersTest : TestBase() {
/* Given */
val t = mock<Methods>()
// a matcher to check if any of the varargs was equals to "b"
- val matcher = VarargAnyMatcher<String, Boolean>({ "b" == it }, true, false)
+ val matcher = VarargAnyMatcher({ "b" == it }, String::class.java, true, false)
/* When */
whenever(t.varargBooleanResult(argThat(matcher))).thenAnswer(matcher)
@@ -291,7 +298,7 @@ class MatchersTest : TestBase() {
/* Given */
val t = mock<Methods>()
// a matcher to check if any of the varargs was equals to "d"
- val matcher = VarargAnyMatcher<String, Boolean>({ "d" == it }, true, false)
+ val matcher = VarargAnyMatcher({ "d" == it }, String::class.java, true, false)
/* When */
whenever(t.varargBooleanResult(argThat(matcher))).thenAnswer(matcher)
@@ -319,16 +326,20 @@ class MatchersTest : TestBase() {
*/
private class VarargAnyMatcher<T, R>(
private val match: ((T) -> Boolean),
+ private val clazz: Class<T>,
private val success: R,
private val failure: R
- ) : ArgumentMatcher<T>, VarargMatcher, Answer<R> {
+ ) : ArgumentMatcher<T>, Answer<R> {
private var anyMatched = false
override fun matches(t: T): Boolean {
- anyMatched = anyMatched or match(t)
- return true
+ @Suppress("UNCHECKED_CAST") // No idea how to solve this better
+ anyMatched = (t as Array<T>).any(match)
+ return anyMatched
}
override fun answer(i: InvocationOnMock) = if (anyMatched) success else failure
+
+ override fun type(): Class<*> = java.lang.reflect.Array.newInstance(clazz, 0).javaClass
}
-} \ No newline at end of file
+}