@@ -129,8 +129,8 @@ void test_append_another_dynamic_array_as_element() {
129129 assert (* (int * )((DynamicArray * )dynamic_array .tail_ptr -> data )-> head_ptr -> data == sub_array_integer );
130130 assert (* (int * )((DynamicArray * )dynamic_array .tail_ptr -> data )-> tail_ptr -> data == sub_array_integer );
131131
132- clear_array (& dynamic_array );
133132 clear_array (& sub_dynamic_array );
133+ clear_array (& dynamic_array );
134134}
135135
136136void test_clear_array_another_dynamic_array_as_element () {
@@ -145,16 +145,15 @@ void test_clear_array_another_dynamic_array_as_element() {
145145 append_element (& dynamic_array , sizeof (DynamicArray ), (void * )& sub_dynamic_array );
146146
147147 assert (clear_array (& dynamic_array ) == NOERROR );
148- // Should already be deallocated now
149148 assert (clear_array (& sub_dynamic_array ) == NOERROR );
150149}
151150
152151/*
153152 Test valid arrays with multiple other dynamic-array as elements
154153
155- - Each sub-dyn -array has only one element
154+ - Each sub-dynamic -array has only one element
156155*/
157- void test_append_multiple_other_dynamic_array_as_elements () {
156+ void test_append_multiple_other_dynamic_arrays_as_elements () {
158157 DynamicArray dynamic_array ;
159158 init_array (& dynamic_array );
160159
@@ -173,10 +172,16 @@ void test_append_multiple_other_dynamic_array_as_elements() {
173172 current_ptr = current_ptr -> next_ptr ;
174173 }
175174
175+ current_ptr = dynamic_array .head_ptr ;
176+ while (current_ptr != NULL ) {
177+ clear_array ((DynamicArray * )current_ptr -> data );
178+ current_ptr = current_ptr -> next_ptr ;
179+ }
180+
176181 clear_array (& dynamic_array );
177182}
178183
179- void test_clear_array_multiple_other_dynamic_array_as_elements () {
184+ void test_clear_array_multiple_other_dynamic_arrays_as_elements () {
180185 DynamicArray dynamic_array ;
181186 init_array (& dynamic_array );
182187
@@ -188,60 +193,78 @@ void test_clear_array_multiple_other_dynamic_array_as_elements() {
188193 assert (append_element (& dynamic_array , sizeof (DynamicArray ), (void * )& sub_dynamic_array ) == NOERROR );
189194 }
190195
196+ DynamicArrayNode * current_ptr = dynamic_array .head_ptr ;
197+ while (current_ptr != NULL ) {
198+ assert (clear_array ((DynamicArray * )current_ptr -> data ) == NOERROR );
199+ current_ptr = current_ptr -> next_ptr ;
200+ }
201+
191202 assert (clear_array (& dynamic_array ) == NOERROR );
192203}
193204
194205
195206/*
196- Test valid arrays with multiple other dynamic-array as elements
207+ Test valid two-dimensional dynamic- arrays with one-dimensional dynamic-arrays as elements
197208
198- - Each sub-dyn -array has multiple elements
209+ - Each sub-dynamic -array has multiple elements
199210*/
200- void test_append_multiple_other_dynamic_array_as_elements_with_multiple_subelements () {
201- DynamicArray dynamic_array ;
202- init_array (& dynamic_array );
203-
204- DynamicArray sub_dynamic_array ;
205- const int max_sub_dyn_arrays = 3 ;
206- const int max_sub_dyn_arrays_elements = 3 ;
207- for (int array_counter = 0 ; array_counter <= max_sub_dyn_arrays ; array_counter ++ ) {
208- init_array (& sub_dynamic_array );
209- for (int sub_element = 0 ; sub_element <= max_sub_dyn_arrays_elements ; sub_element ++ ) {
210- assert (append_element (& sub_dynamic_array , sizeof (int ), (void * )& sub_element ) == NOERROR );
211+ void test_append_one_dimensional_dyn_arrays_to_two_dimensional_array () {
212+ DynamicArray one_dimensional_array ;
213+ init_array (& one_dimensional_array );
214+
215+ DynamicArray two_dimensional_array ;
216+ const int max_two_dim_arrays = 3 ;
217+ const int max_two_dim_arrays_elements = 3 ;
218+ for (int array_counter = 0 ; array_counter <= max_two_dim_arrays ; array_counter ++ ) {
219+ init_array (& two_dimensional_array );
220+ for (int sub_element = 0 ; sub_element <= max_two_dim_arrays_elements ; sub_element ++ ) {
221+ assert (append_element (& two_dimensional_array , sizeof (int ), (void * )& sub_element ) == NOERROR );
211222 }
212- assert (append_element (& dynamic_array , sizeof (DynamicArray ), (void * )& sub_dynamic_array ) == NOERROR );
223+ assert (append_element (& one_dimensional_array , sizeof (DynamicArray ), (void * )& two_dimensional_array ) == NOERROR );
213224 }
214225
215- DynamicArrayNode * current_ptr = dynamic_array .head_ptr ;
216- DynamicArrayNode * sub_array_current_ptr = NULL ;
217- int sub_element = 0 ;
226+ DynamicArrayNode * current_ptr = one_dimensional_array .head_ptr ;
227+ DynamicArrayNode * two_dim_array_current_ptr = NULL ;
228+ int element = 0 ;
218229 while (current_ptr != NULL ) {
219- sub_array_current_ptr = ((DynamicArray * )current_ptr -> data )-> head_ptr ;
220- sub_element = 0 ;
221- while (sub_array_current_ptr != NULL ) {
222- assert (* (int * )sub_array_current_ptr -> data == sub_element ++ );
223- sub_array_current_ptr = sub_array_current_ptr -> next_ptr ;
230+ two_dim_array_current_ptr = ((DynamicArray * )current_ptr -> data )-> head_ptr ;
231+ element = 0 ;
232+ while (two_dim_array_current_ptr != NULL ) {
233+ assert (* (int * )two_dim_array_current_ptr -> data == element ++ );
234+ two_dim_array_current_ptr = two_dim_array_current_ptr -> next_ptr ;
224235 }
225236 current_ptr = current_ptr -> next_ptr ;
226237 }
227238
228- clear_array (& dynamic_array );
229- }
239+ current_ptr = one_dimensional_array .head_ptr ;
240+ while (current_ptr != NULL ) {
241+ clear_array ((DynamicArray * )current_ptr -> data );
242+ current_ptr = current_ptr -> next_ptr ;
243+ }
230244
231- void test_clear_array_multiple_other_dynamic_array_as_elements_with_multiple_subelements () {
232- DynamicArray dynamic_array ;
233- init_array (& dynamic_array );
245+ clear_array (& one_dimensional_array );
246+ }
234247
235- DynamicArray sub_dynamic_array ;
236- const int max_sub_dyn_arrays = 10 ;
237- const int max_sub_dyn_arrays_elements = 10 ;
238- for (int array_counter = 0 ; array_counter <= max_sub_dyn_arrays ; array_counter ++ ) {
239- init_array (& sub_dynamic_array );
240- for (int sub_element = 0 ; sub_element <= max_sub_dyn_arrays_elements ; sub_element ++ ) {
241- assert (append_element (& sub_dynamic_array , sizeof (int ), (void * )& sub_element ) == NOERROR );
248+ void test_clear_one_dimensional_dyn_arrays_in_two_dimensional_array () {
249+ DynamicArray one_dimensional_array ;
250+ init_array (& one_dimensional_array );
251+
252+ DynamicArray two_dimensional_array ;
253+ const int max_two_dim_arrays = 10 ;
254+ const int max_two_dim_arrays_elements = 10 ;
255+ for (int array_counter = 0 ; array_counter <= max_two_dim_arrays ; array_counter ++ ) {
256+ init_array (& two_dimensional_array );
257+ for (int sub_element = 0 ; sub_element <= max_two_dim_arrays_elements ; sub_element ++ ) {
258+ assert (append_element (& two_dimensional_array , sizeof (int ), (void * )& sub_element ) == NOERROR );
242259 }
243- assert (append_element (& dynamic_array , sizeof (DynamicArray ), (void * )& sub_dynamic_array ) == NOERROR );
260+ assert (append_element (& one_dimensional_array , sizeof (DynamicArray ), (void * )& two_dimensional_array ) == NOERROR );
244261 }
245262
246- assert (clear_array (& dynamic_array ) == NOERROR );
263+ DynamicArrayNode * current_ptr = one_dimensional_array .head_ptr ;
264+ while (current_ptr != NULL ) {
265+ clear_array ((DynamicArray * )current_ptr -> data );
266+ current_ptr = current_ptr -> next_ptr ;
267+ }
268+
269+ assert (clear_array (& one_dimensional_array ) == NOERROR );
247270}
0 commit comments