@@ -16,9 +16,10 @@ TPerson = class(TObject)
16
16
age: Integer;
17
17
name : String;
18
18
father: TPerson;
19
- phones : TList <TPhone>;
19
+ phones : TObjectList <TPhone>;
20
20
21
21
function ToString : string; override;
22
+ destructor Destroy; override;
22
23
end ;
23
24
24
25
TTestDesserializer = class (TBaseTestRest)
@@ -53,14 +54,17 @@ procedure TTestDesserializer.personWithFather;
53
54
vPerson: TPerson;
54
55
begin
55
56
vPerson := TPerson.FromJson(sJson);
56
-
57
- CheckNotNull(vPerson);
58
- CheckEquals(' Helbert' , vPerson.name );
59
- CheckEquals(30 , vPerson.age);
60
-
61
- CheckNotNull(vPerson.father);
62
- CheckEquals(' Luiz' , vPerson.father.name );
63
- CheckEquals(60 , vPerson.father.age);
57
+ try
58
+ CheckNotNull(vPerson);
59
+ CheckEquals(' Helbert' , vPerson.name );
60
+ CheckEquals(30 , vPerson.age);
61
+
62
+ CheckNotNull(vPerson.father);
63
+ CheckEquals(' Luiz' , vPerson.father.name );
64
+ CheckEquals(60 , vPerson.father.age);
65
+ finally
66
+ vPerson.Free;
67
+ end ;
64
68
end ;
65
69
66
70
procedure TTestDesserializer.personWithFatherAndPhones ;
@@ -89,22 +93,25 @@ procedure TTestDesserializer.personWithFatherAndPhones;
89
93
vPerson: TPerson;
90
94
begin
91
95
vPerson := TPerson.FromJson(sJson);
92
-
93
- CheckNotNull(vPerson);
94
- CheckEquals(' Helbert' , vPerson.name );
95
- CheckEquals(30 , vPerson.age);
96
-
97
- CheckNotNull(vPerson.father);
98
- CheckEquals(' Luiz' , vPerson.father.name );
99
- CheckEquals(60 , vPerson.father.age);
100
-
101
- CheckNotNull(vPerson.phones);
102
- CheckEquals(2 , vPerson.phones.Count);
103
- CheckEquals(33083518 , vPerson.phones[0 ].number);
104
- CheckEquals(61 , vPerson.phones[0 ].code);
105
-
106
- CheckEquals(99744165 , vPerson.phones[1 ].number);
107
- CheckEquals(61 , vPerson.phones[1 ].code);
96
+ try
97
+ CheckNotNull(vPerson);
98
+ CheckEquals(' Helbert' , vPerson.name );
99
+ CheckEquals(30 , vPerson.age);
100
+
101
+ CheckNotNull(vPerson.father);
102
+ CheckEquals(' Luiz' , vPerson.father.name );
103
+ CheckEquals(60 , vPerson.father.age);
104
+
105
+ CheckNotNull(vPerson.phones);
106
+ CheckEquals(2 , vPerson.phones.Count);
107
+ CheckEquals(33083518 , vPerson.phones[0 ].number);
108
+ CheckEquals(61 , vPerson.phones[0 ].code);
109
+
110
+ CheckEquals(99744165 , vPerson.phones[1 ].number);
111
+ CheckEquals(61 , vPerson.phones[1 ].code);
112
+ finally
113
+ vPerson.Free;
114
+ end ;
108
115
end ;
109
116
110
117
procedure TTestDesserializer.person ;
@@ -117,10 +124,13 @@ procedure TTestDesserializer.person;
117
124
vPerson: TPerson;
118
125
begin
119
126
vPerson := TPerson.FromJson(sJson);
120
-
121
- CheckNotNull(vPerson);
122
- CheckEquals(' Helbert' , vPerson.name );
123
- CheckEquals(30 , vPerson.age);
127
+ try
128
+ CheckNotNull(vPerson);
129
+ CheckEquals(' Helbert' , vPerson.name );
130
+ CheckEquals(30 , vPerson.age);
131
+ finally
132
+ vPerson.Free;
133
+ end ;
124
134
end ;
125
135
126
136
{ TTestSerializer }
@@ -132,14 +142,27 @@ procedure TTestSerializer.person;
132
142
vPerson: TPerson;
133
143
begin
134
144
vPerson := TPerson.Create;
135
- vPerson.name := ' Helbert' ;
136
- vPerson.age := 30 ;
145
+ try
146
+ vPerson.name := ' Helbert' ;
147
+ vPerson.age := 30 ;
137
148
138
- CheckEquals(sJson, vPerson.ToJson().AsJSon());
149
+ CheckEquals(sJson, vPerson.ToJson().AsJSon());
150
+ finally
151
+ vPerson.Free;
152
+ end ;
139
153
end ;
140
154
141
155
{ TPerson }
142
156
157
+ destructor TPerson.Destroy;
158
+ begin
159
+ if Assigned(phones) then
160
+ phones.OwnsObjects := True;
161
+ phones.Free;
162
+ father.Free;
163
+ inherited ;
164
+ end ;
165
+
143
166
function TPerson.ToString : string;
144
167
begin
145
168
Result := ' name:' + name + ' age:' + IntToStr(age);
0 commit comments