Skip to content

Commit cde6369

Browse files
authored
added unit tests (#864)
1 parent 956246d commit cde6369

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.baeldung.iterateDataClassProperties
2+
3+
import org.junit.jupiter.api.Assertions.assertEquals
4+
import org.junit.jupiter.api.Test
5+
6+
7+
data class Person(val name: String, val age: Int)
8+
class IteratePropertiesOfDataClass {
9+
10+
@Test
11+
fun `iterate fields using destructuring declaration`() {
12+
val person = Person("Robert", 28)
13+
val (name, age) = person
14+
assertEquals("Robert", name)
15+
assertEquals(28, age)
16+
}
17+
18+
@Test
19+
fun `iterate fields using componentN methods`() {
20+
val person = Person("Robert", 28)
21+
val fields = listOf(person.component1(), person.component2())
22+
23+
assertEquals("Robert", fields[0])
24+
assertEquals(28, fields[1])
25+
}
26+
27+
@Test
28+
fun `iterate fields using copy method`() {
29+
val person = Person("Robert", 28)
30+
var output: String? = null
31+
iterateFields(person) { field -> output = field }
32+
33+
assertEquals("Name: Robert, Age: 28", output)
34+
}
35+
}
36+
37+
fun iterateFields(person: Person, action: (String) -> Unit) {
38+
val defaultPerson = person.copy()
39+
action("Name: ${defaultPerson.name}, Age: ${defaultPerson.age}")
40+
}

0 commit comments

Comments
 (0)