@@ -17,18 +17,6 @@ data class Person(var name: String, var address: Address) : Cloneable {
17
17
constructor (person: Person ) : this (person.name, person.address.copy())
18
18
}
19
19
20
- data class Company (var name : String , var industry : String , val ceo : Person , val employees : List <Person >) : Cloneable {
21
- public override fun clone (): Company {
22
- return Company (name, industry, ceo.clone(), employees.map { it.clone() })
23
- }
24
- }
25
-
26
- data class Organization (var name : String , val headquarters : Address , val companies : List <Company >) : Cloneable {
27
- public override fun clone (): Organization {
28
- return Organization (name, headquarters.clone(), companies.map { it.clone() })
29
- }
30
- }
31
-
32
20
class CloningObjectUnitTest {
33
21
34
22
private val address = Address (" Jln. Kemasan" , " Yogyakarta" )
@@ -106,55 +94,4 @@ class CloningObjectUnitTest {
106
94
.isNotEqualTo(" Jln. Siliwangi" )
107
95
}
108
96
109
- @Test
110
- fun `deep copy with copy` (){
111
- val address = Address (" Jln. Kemasan No 53" , " Yogyakarta" )
112
- val person = Person (" Hangga Aji Sayekti" , address)
113
- val company = Company (" Basen Software" , " Tech" , person, listOf (person))
114
- val organization = Organization (" Bekraf" , address, listOf (company))
115
-
116
- val copiedOrganization = organization.copy(
117
- headquarters = organization.headquarters.copy(),
118
- companies = organization.companies.map { company ->
119
- company.copy(
120
- ceo = company.ceo.copy(),
121
- employees = company.employees.map { it.copy() }
122
- )
123
- }
124
- )
125
-
126
- val clonedOrganization = organization.clone()
127
-
128
- // Modify the copied organization to verify deep copy
129
- organization.name = " New Org Name"
130
- organization.headquarters.city = " New City"
131
- organization.companies.first().name = " New Company Name"
132
- organization.companies.first().ceo.name = " New CEO Name"
133
- organization.companies.first().employees.first().name = " New Employee Name"
134
-
135
- assertThat(copiedOrganization.headquarters.city)
136
- .isNotEqualTo(" New City" )
137
-
138
- assertThat(copiedOrganization.companies.first().name)
139
- .isNotEqualTo(" New Company Name" )
140
-
141
- assertThat(copiedOrganization.companies.first().ceo.name)
142
- .isNotEqualTo(" New CEO Name" )
143
-
144
- assertThat(copiedOrganization.companies.first().employees.first().name)
145
- .isNotEqualTo(" New Employee Name" )
146
-
147
-
148
- assertThat(clonedOrganization.headquarters.city)
149
- .isNotEqualTo(" New City" )
150
-
151
- assertThat(clonedOrganization.companies.first().name)
152
- .isNotEqualTo(" New Company Name" )
153
-
154
- assertThat(clonedOrganization.companies.first().ceo.name)
155
- .isNotEqualTo(" New CEO Name" )
156
-
157
- assertThat(clonedOrganization.companies.first().employees.first().name)
158
- .isNotEqualTo(" New Employee Name" )
159
- }
160
97
}
0 commit comments