aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiek Haarman <haarman.niek@gmail.com>2019-06-19 20:19:19 +0200
committerNiek Haarman <haarman.niek@gmail.com>2019-06-19 20:19:19 +0200
commitf4405832a866e7f18cda90796b5c5e593cf68be1 (patch)
treeda1ffe989e9fa5bcc39338353ba03d753473e49c
parent289f69c22006c146ff342b8c8d9d9f47337cd0e1 (diff)
downloadmockito-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.kt69
-rw-r--r--tests/src/test/kotlin/test/ArgumentCaptorTest.kt14
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)
}