diff options
author | Niek Haarman <haarman.niek@gmail.com> | 2019-06-19 20:19:19 +0200 |
---|---|---|
committer | Niek Haarman <haarman.niek@gmail.com> | 2019-06-19 20:19:19 +0200 |
commit | f4405832a866e7f18cda90796b5c5e593cf68be1 (patch) | |
tree | da1ffe989e9fa5bcc39338353ba03d753473e49c | |
parent | 289f69c22006c146ff342b8c8d9d9f47337cd0e1 (diff) | |
download | mockito-kotlin-f4405832a866e7f18cda90796b5c5e593cf68be1.tar.gz |
Include class parameters to avoid numbers in argumentCaptor signatures
-rw-r--r-- | mockito-kotlin/src/main/kotlin/com/nhaarman/mockitokotlin2/ArgumentCaptor.kt | 69 | ||||
-rw-r--r-- | tests/src/test/kotlin/test/ArgumentCaptorTest.kt | 14 |
2 files changed, 54 insertions, 29 deletions
diff --git a/mockito-kotlin/src/main/kotlin/com/nhaarman/mockitokotlin2/ArgumentCaptor.kt b/mockito-kotlin/src/main/kotlin/com/nhaarman/mockitokotlin2/ArgumentCaptor.kt index 426eb32..ce06975 100644 --- a/mockito-kotlin/src/main/kotlin/com/nhaarman/mockitokotlin2/ArgumentCaptor.kt +++ b/mockito-kotlin/src/main/kotlin/com/nhaarman/mockitokotlin2/ArgumentCaptor.kt @@ -39,51 +39,76 @@ inline fun <reified T : Any> argumentCaptor(): KArgumentCaptor<T> { /** * Creates 2 [KArgumentCaptor]s for given types. */ -inline fun <reified A: Any, reified B: Any> argumentCaptor2(): Pair<KArgumentCaptor<A>, KArgumentCaptor<B>> { - return Pair(KArgumentCaptor(ArgumentCaptor.forClass(A::class.java), A::class), - KArgumentCaptor(ArgumentCaptor.forClass(B::class.java), B::class)) +inline fun <reified A : Any, reified B : Any> argumentCaptor( + a: KClass<A> = A::class, + b: KClass<B> = B::class +): Pair<KArgumentCaptor<A>, KArgumentCaptor<B>> { + return Pair( + KArgumentCaptor(ArgumentCaptor.forClass(a.java), a), + KArgumentCaptor(ArgumentCaptor.forClass(b.java), b) + ) } /** * Creates 3 [KArgumentCaptor]s for given types. */ -inline fun <reified A: Any, reified B: Any, reified C: Any> argumentCaptor3(): Triple<KArgumentCaptor<A>, KArgumentCaptor<B>, KArgumentCaptor<C>> { +inline fun <reified A : Any, reified B : Any, reified C : Any> argumentCaptor( + a: KClass<A> = A::class, + b: KClass<B> = B::class, + c: KClass<C> = C::class +): Triple<KArgumentCaptor<A>, KArgumentCaptor<B>, KArgumentCaptor<C>> { return Triple( - KArgumentCaptor(ArgumentCaptor.forClass(A::class.java), A::class), - KArgumentCaptor(ArgumentCaptor.forClass(B::class.java), B::class), - KArgumentCaptor(ArgumentCaptor.forClass(C::class.java), C::class)) + KArgumentCaptor(ArgumentCaptor.forClass(a.java), a), + KArgumentCaptor(ArgumentCaptor.forClass(b.java), b), + KArgumentCaptor(ArgumentCaptor.forClass(c.java), c) + ) } data class ArgumentCaptorHolder4<out A, out B, out C, out D>( - val first: A, val second: B, val third: C, val fourth: D) + val first: A, val second: B, val third: C, val fourth: D +) + data class ArgumentCaptorHolder5<out A, out B, out C, out D, out E>( - val first: A, val second: B, val third: C, val fourth: D, val fifth: E) + val first: A, val second: B, val third: C, val fourth: D, val fifth: E +) /** * Creates 4 [KArgumentCaptor]s for given types. */ -inline fun <reified A: Any, reified B: Any, reified C: Any, reified D: Any> argumentCaptor4(): ArgumentCaptorHolder4<KArgumentCaptor<A>, KArgumentCaptor<B>, KArgumentCaptor<C>, KArgumentCaptor<D>> { +inline fun <reified A : Any, reified B : Any, reified C : Any, reified D : Any> argumentCaptor( + a: KClass<A> = A::class, + b: KClass<B> = B::class, + c: KClass<C> = C::class, + d: KClass<D> = D::class +): ArgumentCaptorHolder4<KArgumentCaptor<A>, KArgumentCaptor<B>, KArgumentCaptor<C>, KArgumentCaptor<D>> { return ArgumentCaptorHolder4( - KArgumentCaptor(ArgumentCaptor.forClass(A::class.java), A::class), - KArgumentCaptor(ArgumentCaptor.forClass(B::class.java), B::class), - KArgumentCaptor(ArgumentCaptor.forClass(C::class.java), C::class), - KArgumentCaptor(ArgumentCaptor.forClass(D::class.java), D::class)) + KArgumentCaptor(ArgumentCaptor.forClass(a.java), a), + KArgumentCaptor(ArgumentCaptor.forClass(b.java), b), + KArgumentCaptor(ArgumentCaptor.forClass(c.java), c), + KArgumentCaptor(ArgumentCaptor.forClass(d.java), d) + ) } + /** * Creates 4 [KArgumentCaptor]s for given types. */ -inline fun <reified A: Any, reified B: Any, reified C: Any, reified D: Any, reified E: Any> argumentCaptor5(): ArgumentCaptorHolder5<KArgumentCaptor<A>, KArgumentCaptor<B>, KArgumentCaptor<C>, KArgumentCaptor<D>, KArgumentCaptor<E>> { +inline fun <reified A : Any, reified B : Any, reified C : Any, reified D : Any, reified E : Any> argumentCaptor( + a: KClass<A> = A::class, + b: KClass<B> = B::class, + c: KClass<C> = C::class, + d: KClass<D> = D::class, + e: KClass<E> = E::class +): ArgumentCaptorHolder5<KArgumentCaptor<A>, KArgumentCaptor<B>, KArgumentCaptor<C>, KArgumentCaptor<D>, KArgumentCaptor<E>> { return ArgumentCaptorHolder5( - KArgumentCaptor(ArgumentCaptor.forClass(A::class.java), A::class), - KArgumentCaptor(ArgumentCaptor.forClass(B::class.java), B::class), - KArgumentCaptor(ArgumentCaptor.forClass(C::class.java), C::class), - KArgumentCaptor(ArgumentCaptor.forClass(D::class.java), D::class), - KArgumentCaptor(ArgumentCaptor.forClass(E::class.java), E::class)) + KArgumentCaptor(ArgumentCaptor.forClass(a.java), a), + KArgumentCaptor(ArgumentCaptor.forClass(b.java), b), + KArgumentCaptor(ArgumentCaptor.forClass(c.java), c), + KArgumentCaptor(ArgumentCaptor.forClass(d.java), d), + KArgumentCaptor(ArgumentCaptor.forClass(e.java), e) + ) } - - /** * Creates a [KArgumentCaptor] for given type, taking in a lambda to allow fast verification. */ diff --git a/tests/src/test/kotlin/test/ArgumentCaptorTest.kt b/tests/src/test/kotlin/test/ArgumentCaptorTest.kt index 6f64f13..10ddb5e 100644 --- a/tests/src/test/kotlin/test/ArgumentCaptorTest.kt +++ b/tests/src/test/kotlin/test/ArgumentCaptorTest.kt @@ -31,7 +31,7 @@ class ArgumentCaptorTest : TestBase() { date.time = 5L /* Then */ - val (captor1, captor2) = argumentCaptor2<Long, Long>() + val (captor1, captor2) = argumentCaptor<Long, Long>() verify(date).time = captor1.capture() verify(date).time = captor2.capture() expect(captor1.lastValue).toBe(5L) @@ -47,8 +47,8 @@ class ArgumentCaptorTest : TestBase() { date.time = 5L /* Then */ - val (captor1, captor2, captor3) = argumentCaptor3<Long, Long, Long>() - val verifyCaptor:KArgumentCaptor<Long>.() ->Unit = { + val (captor1, captor2, captor3) = argumentCaptor<Long, Long, Long>() + val verifyCaptor: KArgumentCaptor<Long>.() -> Unit = { verify(date).time = capture() expect(lastValue).toBe(5L) } @@ -66,8 +66,8 @@ class ArgumentCaptorTest : TestBase() { date.time = 5L /* Then */ - val (captor1, captor2, captor3, captor4) = argumentCaptor4<Long, Long, Long, Long>() - val verifyCaptor:KArgumentCaptor<Long>.() ->Unit = { + val (captor1, captor2, captor3, captor4) = argumentCaptor<Long, Long, Long, Long>() + val verifyCaptor: KArgumentCaptor<Long>.() -> Unit = { verify(date).time = capture() expect(lastValue).toBe(5L) } @@ -86,8 +86,8 @@ class ArgumentCaptorTest : TestBase() { date.time = 5L /* Then */ - val (captor1, captor2, captor3, captor4, captor5) = argumentCaptor5<Long, Long, Long, Long, Long>() - val verifyCaptor:KArgumentCaptor<Long>.() ->Unit = { + val (captor1, captor2, captor3, captor4, captor5) = argumentCaptor<Long, Long, Long, Long, Long>() + val verifyCaptor: KArgumentCaptor<Long>.() -> Unit = { verify(date).time = capture() expect(lastValue).toBe(5L) } |