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