Skip to content

Commit f440583

Browse files
committed
Include class parameters to avoid numbers in argumentCaptor signatures
1 parent 289f69c commit f440583

File tree

2 files changed

+54
-29
lines changed

2 files changed

+54
-29
lines changed

mockito-kotlin/src/main/kotlin/com/nhaarman/mockitokotlin2/ArgumentCaptor.kt

Lines changed: 47 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -39,51 +39,76 @@ inline fun <reified T : Any> argumentCaptor(): KArgumentCaptor<T> {
3939
/**
4040
* Creates 2 [KArgumentCaptor]s for given types.
4141
*/
42-
inline fun <reified A: Any, reified B: Any> argumentCaptor2(): Pair<KArgumentCaptor<A>, KArgumentCaptor<B>> {
43-
return Pair(KArgumentCaptor(ArgumentCaptor.forClass(A::class.java), A::class),
44-
KArgumentCaptor(ArgumentCaptor.forClass(B::class.java), B::class))
42+
inline fun <reified A : Any, reified B : Any> argumentCaptor(
43+
a: KClass<A> = A::class,
44+
b: KClass<B> = B::class
45+
): Pair<KArgumentCaptor<A>, KArgumentCaptor<B>> {
46+
return Pair(
47+
KArgumentCaptor(ArgumentCaptor.forClass(a.java), a),
48+
KArgumentCaptor(ArgumentCaptor.forClass(b.java), b)
49+
)
4550
}
4651

4752
/**
4853
* Creates 3 [KArgumentCaptor]s for given types.
4954
*/
50-
inline fun <reified A: Any, reified B: Any, reified C: Any> argumentCaptor3(): Triple<KArgumentCaptor<A>, KArgumentCaptor<B>, KArgumentCaptor<C>> {
55+
inline fun <reified A : Any, reified B : Any, reified C : Any> argumentCaptor(
56+
a: KClass<A> = A::class,
57+
b: KClass<B> = B::class,
58+
c: KClass<C> = C::class
59+
): Triple<KArgumentCaptor<A>, KArgumentCaptor<B>, KArgumentCaptor<C>> {
5160
return Triple(
52-
KArgumentCaptor(ArgumentCaptor.forClass(A::class.java), A::class),
53-
KArgumentCaptor(ArgumentCaptor.forClass(B::class.java), B::class),
54-
KArgumentCaptor(ArgumentCaptor.forClass(C::class.java), C::class))
61+
KArgumentCaptor(ArgumentCaptor.forClass(a.java), a),
62+
KArgumentCaptor(ArgumentCaptor.forClass(b.java), b),
63+
KArgumentCaptor(ArgumentCaptor.forClass(c.java), c)
64+
)
5565
}
5666

5767
data class ArgumentCaptorHolder4<out A, out B, out C, out D>(
58-
val first: A, val second: B, val third: C, val fourth: D)
68+
val first: A, val second: B, val third: C, val fourth: D
69+
)
70+
5971
data class ArgumentCaptorHolder5<out A, out B, out C, out D, out E>(
60-
val first: A, val second: B, val third: C, val fourth: D, val fifth: E)
72+
val first: A, val second: B, val third: C, val fourth: D, val fifth: E
73+
)
6174

6275

6376
/**
6477
* Creates 4 [KArgumentCaptor]s for given types.
6578
*/
66-
inline fun <reified A: Any, reified B: Any, reified C: Any, reified D: Any> argumentCaptor4(): ArgumentCaptorHolder4<KArgumentCaptor<A>, KArgumentCaptor<B>, KArgumentCaptor<C>, KArgumentCaptor<D>> {
79+
inline fun <reified A : Any, reified B : Any, reified C : Any, reified D : Any> argumentCaptor(
80+
a: KClass<A> = A::class,
81+
b: KClass<B> = B::class,
82+
c: KClass<C> = C::class,
83+
d: KClass<D> = D::class
84+
): ArgumentCaptorHolder4<KArgumentCaptor<A>, KArgumentCaptor<B>, KArgumentCaptor<C>, KArgumentCaptor<D>> {
6785
return ArgumentCaptorHolder4(
68-
KArgumentCaptor(ArgumentCaptor.forClass(A::class.java), A::class),
69-
KArgumentCaptor(ArgumentCaptor.forClass(B::class.java), B::class),
70-
KArgumentCaptor(ArgumentCaptor.forClass(C::class.java), C::class),
71-
KArgumentCaptor(ArgumentCaptor.forClass(D::class.java), D::class))
86+
KArgumentCaptor(ArgumentCaptor.forClass(a.java), a),
87+
KArgumentCaptor(ArgumentCaptor.forClass(b.java), b),
88+
KArgumentCaptor(ArgumentCaptor.forClass(c.java), c),
89+
KArgumentCaptor(ArgumentCaptor.forClass(d.java), d)
90+
)
7291
}
92+
7393
/**
7494
* Creates 4 [KArgumentCaptor]s for given types.
7595
*/
76-
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>> {
96+
inline fun <reified A : Any, reified B : Any, reified C : Any, reified D : Any, reified E : Any> argumentCaptor(
97+
a: KClass<A> = A::class,
98+
b: KClass<B> = B::class,
99+
c: KClass<C> = C::class,
100+
d: KClass<D> = D::class,
101+
e: KClass<E> = E::class
102+
): ArgumentCaptorHolder5<KArgumentCaptor<A>, KArgumentCaptor<B>, KArgumentCaptor<C>, KArgumentCaptor<D>, KArgumentCaptor<E>> {
77103
return ArgumentCaptorHolder5(
78-
KArgumentCaptor(ArgumentCaptor.forClass(A::class.java), A::class),
79-
KArgumentCaptor(ArgumentCaptor.forClass(B::class.java), B::class),
80-
KArgumentCaptor(ArgumentCaptor.forClass(C::class.java), C::class),
81-
KArgumentCaptor(ArgumentCaptor.forClass(D::class.java), D::class),
82-
KArgumentCaptor(ArgumentCaptor.forClass(E::class.java), E::class))
104+
KArgumentCaptor(ArgumentCaptor.forClass(a.java), a),
105+
KArgumentCaptor(ArgumentCaptor.forClass(b.java), b),
106+
KArgumentCaptor(ArgumentCaptor.forClass(c.java), c),
107+
KArgumentCaptor(ArgumentCaptor.forClass(d.java), d),
108+
KArgumentCaptor(ArgumentCaptor.forClass(e.java), e)
109+
)
83110
}
84111

85-
86-
87112
/**
88113
* Creates a [KArgumentCaptor] for given type, taking in a lambda to allow fast verification.
89114
*/

tests/src/test/kotlin/test/ArgumentCaptorTest.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class ArgumentCaptorTest : TestBase() {
3131
date.time = 5L
3232

3333
/* Then */
34-
val (captor1, captor2) = argumentCaptor2<Long, Long>()
34+
val (captor1, captor2) = argumentCaptor<Long, Long>()
3535
verify(date).time = captor1.capture()
3636
verify(date).time = captor2.capture()
3737
expect(captor1.lastValue).toBe(5L)
@@ -47,8 +47,8 @@ class ArgumentCaptorTest : TestBase() {
4747
date.time = 5L
4848

4949
/* Then */
50-
val (captor1, captor2, captor3) = argumentCaptor3<Long, Long, Long>()
51-
val verifyCaptor:KArgumentCaptor<Long>.() ->Unit = {
50+
val (captor1, captor2, captor3) = argumentCaptor<Long, Long, Long>()
51+
val verifyCaptor: KArgumentCaptor<Long>.() -> Unit = {
5252
verify(date).time = capture()
5353
expect(lastValue).toBe(5L)
5454
}
@@ -66,8 +66,8 @@ class ArgumentCaptorTest : TestBase() {
6666
date.time = 5L
6767

6868
/* Then */
69-
val (captor1, captor2, captor3, captor4) = argumentCaptor4<Long, Long, Long, Long>()
70-
val verifyCaptor:KArgumentCaptor<Long>.() ->Unit = {
69+
val (captor1, captor2, captor3, captor4) = argumentCaptor<Long, Long, Long, Long>()
70+
val verifyCaptor: KArgumentCaptor<Long>.() -> Unit = {
7171
verify(date).time = capture()
7272
expect(lastValue).toBe(5L)
7373
}
@@ -86,8 +86,8 @@ class ArgumentCaptorTest : TestBase() {
8686
date.time = 5L
8787

8888
/* Then */
89-
val (captor1, captor2, captor3, captor4, captor5) = argumentCaptor5<Long, Long, Long, Long, Long>()
90-
val verifyCaptor:KArgumentCaptor<Long>.() ->Unit = {
89+
val (captor1, captor2, captor3, captor4, captor5) = argumentCaptor<Long, Long, Long, Long, Long>()
90+
val verifyCaptor: KArgumentCaptor<Long>.() -> Unit = {
9191
verify(date).time = capture()
9292
expect(lastValue).toBe(5L)
9393
}

0 commit comments

Comments
 (0)