@@ -3,39 +3,6 @@ package com.baeldung.cloningobject
3
3
import org.assertj.core.api.Assertions.assertThat
4
4
import org.junit.jupiter.api.Test
5
5
6
- /* **
7
- Class Scheme
8
- ============================
9
-
10
- Address
11
- ├── street: String
12
- └── city: String
13
-
14
- Person
15
- ├── name: String
16
- └── address: Address
17
-
18
- Organization
19
- ├── name: String
20
- ├── headquarters: Address
21
- └── companies: List<Company>
22
- └── Company
23
- ├── name: String
24
- ├── industry: String
25
- ├── ceo: Person
26
- │ ├── name: String
27
- │ └── address: Address
28
- └── employees: List<Person>
29
- └── Person
30
- ├── name: String
31
- └── address: Address
32
-
33
- data class Address(var street: String, var city: String)
34
- data class Person(var name: String, var address: Address)
35
- data class Company(var name: String, var industry: String, val ceo: Person, val employees: List<Person>)
36
- data class Organization(var name: String, val headquarters: Address, val companies: List<Company>)
37
- */
38
-
39
6
data class Address (var street : String , var city : String ) : Cloneable {
40
7
41
8
public override fun clone (): Address = super .clone() as Address
@@ -88,14 +55,22 @@ class CloningObjectUnitTest {
88
55
89
56
@Test
90
57
fun `when cloned object then proves that deep copy` (){
91
- val address = Address (" Jln. Kemasan No 53" , " Yogyakarta" )
92
58
93
- val ceo = Person (" Hangga Aji Sayekti" , address)
94
- val john = Person (" John Doe" , address)
95
- val layla = Person (" Layla Hinchcliffe" , address)
59
+ val personHangga = Person (" Hangga Aji Sayekti" , Address (" Jln. Kemasan No 53" , " Yogyakarta" ))
60
+ val personRaihan = Person (" Raihan Kusumo" , Address (" Jln. Cikapayang No. 508" , " Medan" ))
61
+ val personLayla = Person (" Layla Hinchcliffe" , Address (" Collins Street" , " Melbourne" ))
62
+
63
+ val companyBasen = Company (" Basen Software" , " Tech" , personHangga, listOf (personRaihan, personLayla))
64
+
65
+ val personBima = Person (" Bima Arya" , Address (" Jl. Colombo No. 7" , " Yogyakarta" ))
66
+ val personDina = Person (" Dina Fitriani" , Address (" Jl. Kaliurang No. 12" , " Yogyakarta" ))
67
+ val personCindy = Person (" Cindy Claudia" , Address (" Jl. Atmosukarto No. 1" , " Yogyakarta" ))
68
+
69
+ val companyKotagede = Company (" Kotagede Software" , " Tech" , personBima, listOf (personCindy, personDina))
70
+
71
+ val organization = Organization (" Bekraf" , Address (" Jalan Medan Merdeka Selatan" , " Jakarta" ), listOf (companyBasen, companyKotagede))
72
+
96
73
97
- val company = Company (" Basen Software" , " Tech" , ceo, listOf (john, layla))
98
- val organization = Organization (" Bekraf" , address, listOf (company))
99
74
val copiedOrganization = organization.copy(
100
75
headquarters = organization.headquarters.copy(),
101
76
companies = organization.companies.map { company ->
0 commit comments