File tree Expand file tree Collapse file tree 4 files changed +131
-0
lines changed
jupiter-tests/src/test/kotlin/org/junit/jupiter/api/kotlin Expand file tree Collapse file tree 4 files changed +131
-0
lines changed Original file line number Diff line number Diff line change 1+ package org.junit.jupiter.api.kotlin
2+
3+ import org.junit.jupiter.api.Assertions.assertEquals
4+ import org.junit.jupiter.api.Disabled
5+ import org.junit.jupiter.params.ParameterizedTest
6+ import org.junit.jupiter.params.provider.Arguments
7+ import org.junit.jupiter.params.provider.MethodSource
8+
9+ /* *
10+ * Tests for custom inline value classes.
11+ *
12+ * Currently, disabled: The POC only supports kotlin.Result.
13+ * Support for arbitrary inline value classes needs to be added.
14+ *
15+ * @see <a href="https://github.com/junit-team/junit-framework/issues/5081">Issue #5081</a>
16+ */
17+ @Disabled(" POC only supports kotlin.Result, not custom inline value classes" )
18+ class CustomInlineValueClassTest {
19+
20+ @MethodSource(" userIdProvider" )
21+ @ParameterizedTest
22+ fun testUserId (userId : UserId ) {
23+ assertEquals(123L , userId.value)
24+ }
25+
26+ @MethodSource(" emailProvider" )
27+ @ParameterizedTest
28+ fun testEmail (email : Email ) {
29+ assertEquals(
" [email protected] " , email.value)
30+ }
31+
32+ companion object {
33+ @JvmStatic
34+ fun userIdProvider () = listOf (Arguments .of(UserId (123L )))
35+
36+ @JvmStatic
37+ fun emailProvider ()
= listOf (
Arguments .of(
Email (
" [email protected] " )))
38+ }
39+ }
Original file line number Diff line number Diff line change 1+ package org.junit.jupiter.api.kotlin
2+
3+ import org.junit.jupiter.api.Assertions.assertEquals
4+ import org.junit.jupiter.params.ParameterizedTest
5+ import org.junit.jupiter.params.provider.Arguments
6+ import org.junit.jupiter.params.provider.MethodSource
7+
8+ class MultipleInlineValueClassTest {
9+
10+ @MethodSource(" mixedProvider" )
11+ @ParameterizedTest
12+ fun testMultipleValueClasses (
13+ userId : UserId ,
14+ email : Email ,
15+ result : Result <String >
16+ ) {
17+ assertEquals(100L , userId.value)
18+ assertEquals(
" [email protected] " , email.value)
19+ assertEquals(" data" , result.getOrThrow())
20+ }
21+
22+ @MethodSource(" normalAndValueClassProvider" )
23+ @ParameterizedTest
24+ fun testMixedParameters (
25+ normalString : String ,
26+ userId : UserId
27+ ) {
28+ assertEquals(" normal" , normalString)
29+ assertEquals(200L , userId.value)
30+ }
31+
32+ companion object {
33+ @JvmStatic
34+ fun mixedProvider () = listOf (
35+ Arguments .of(
36+ UserId (100L ),
37+ 38+ Result .success(" data" )
39+ )
40+ )
41+
42+ @JvmStatic
43+ fun normalAndValueClassProvider () = listOf (
44+ Arguments .of(" normal" , UserId (200L ))
45+ )
46+ }
47+ }
Original file line number Diff line number Diff line change 1+ package org.junit.jupiter.api.kotlin
2+
3+ import org.junit.jupiter.api.Assertions.assertEquals
4+ import org.junit.jupiter.api.assertNotNull
5+ import org.junit.jupiter.params.ParameterizedTest
6+ import org.junit.jupiter.params.provider.Arguments
7+ import org.junit.jupiter.params.provider.MethodSource
8+
9+ class NullableInlineValueClassTest {
10+
11+ @MethodSource(" nullableResultProvider" )
12+ @ParameterizedTest
13+ fun testNullableResult (result : Result <String >? ) {
14+ assertNotNull(result)
15+ assertEquals(" test" , result.getOrNull())
16+ }
17+
18+ @MethodSource(" nullableUserIdProvider" )
19+ @ParameterizedTest
20+ fun testNullableUserId (userId : UserId ? ) {
21+ assertNotNull(userId)
22+ assertEquals(999L , userId.value)
23+ }
24+
25+ companion object {
26+ @JvmStatic
27+ fun nullableResultProvider () =
28+ listOf (
29+ Arguments .of(Result .success(" test" ))
30+ )
31+
32+ @JvmStatic
33+ fun nullableUserIdProvider () =
34+ listOf (
35+ Arguments .of(UserId (999L ))
36+ )
37+ }
38+ }
Original file line number Diff line number Diff line change 1+ package org.junit.jupiter.api.kotlin
2+
3+ @JvmInline
4+ value class UserId (val value : Long )
5+
6+ @JvmInline
7+ value class Email (val value : String )
You can’t perform that action at this time.
0 commit comments