1 /* GSequencer - Advanced GTK Sequencer
2  * Copyright (C) 2021 Joël Krähemann
3  *
4  * This file is part of GSequencer.
5  *
6  * GSequencer is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * GSequencer is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with GSequencer.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #include <glib.h>
21 #include <glib-object.h>
22 
23 #include <CUnit/CUnit.h>
24 #include <CUnit/Automated.h>
25 #include <CUnit/Basic.h>
26 
27 #include <ags/libags.h>
28 #include <ags/libags-audio.h>
29 
30 int ags_resample_util_test_init_suite();
31 int ags_resample_util_test_clean_suite();
32 
33 void ags_resample_util_test_alloc();
34 void ags_resample_util_test_copy();
35 void ags_resample_util_test_free();
36 void ags_resample_util_test_get_destination();
37 void ags_resample_util_test_set_destination();
38 void ags_resample_util_test_get_destination_stride();
39 void ags_resample_util_test_set_destination_stride();
40 void ags_resample_util_test_get_source();
41 void ags_resample_util_test_set_source();
42 void ags_resample_util_test_get_source_stride();
43 void ags_resample_util_test_set_source_stride();
44 void ags_resample_util_test_get_buffer_length();
45 void ags_resample_util_test_set_buffer_length();
46 void ags_resample_util_test_get_audio_buffer_util_format();
47 void ags_resample_util_test_set_audio_buffer_util_format();
48 void ags_resample_util_test_get_samplerate();
49 void ags_resample_util_test_set_samplerate();
50 void ags_resample_util_test_get_target_samplerate();
51 void ags_resample_util_test_set_target_samplerate();
52 void ags_resample_util_test_compute_s8();
53 void ags_resample_util_test_compute_s16();
54 void ags_resample_util_test_compute_s24();
55 void ags_resample_util_test_compute_s32();
56 void ags_resample_util_test_compute_s64();
57 void ags_resample_util_test_compute_float();
58 void ags_resample_util_test_compute_double();
59 void ags_resample_util_test_compute_complex();
60 void ags_resample_util_test_compute();
61 
62 #define AGS_RESAMPLE_UTIL_TEST_COPY_SOURCE_AUDIO_CHANNELS (2)
63 #define AGS_RESAMPLE_UTIL_TEST_COPY_BUFFER_SIZE (1024)
64 #define AGS_RESAMPLE_UTIL_TEST_COPY_FORMAT (AGS_SOUNDCARD_SIGNED_16_BIT)
65 #define AGS_RESAMPLE_UTIL_TEST_COPY_SAMPLERATE (48000)
66 #define AGS_RESAMPLE_UTIL_TEST_COPY_TARGET_SAMPLERATE (44100)
67 
68 #define AGS_RESAMPLE_UTIL_TEST_GET_DESTINATION_BUFFER_SIZE (1024)
69 #define AGS_RESAMPLE_UTIL_TEST_GET_DESTINATION_FORMAT (AGS_SOUNDCARD_SIGNED_16_BIT)
70 
71 #define AGS_RESAMPLE_UTIL_TEST_SET_DESTINATION_BUFFER_SIZE (1024)
72 #define AGS_RESAMPLE_UTIL_TEST_SET_DESTINATION_FORMAT (AGS_SOUNDCARD_SIGNED_16_BIT)
73 
74 #define AGS_RESAMPLE_UTIL_TEST_GET_SOURCE_BUFFER_SIZE (1024)
75 #define AGS_RESAMPLE_UTIL_TEST_GET_SOURCE_FORMAT (AGS_SOUNDCARD_SIGNED_16_BIT)
76 
77 #define AGS_RESAMPLE_UTIL_TEST_SET_SOURCE_BUFFER_SIZE (1024)
78 #define AGS_RESAMPLE_UTIL_TEST_SET_SOURCE_FORMAT (AGS_SOUNDCARD_SIGNED_16_BIT)
79 
80 /* The suite initialization function.
81  * Opens the temporary file used by the tests.
82  * Returns zero on success, non-zero otherwise.
83  */
84 int
ags_resample_util_test_init_suite()85 ags_resample_util_test_init_suite()
86 {
87   return(0);
88 }
89 
90 /* The suite cleanup function.
91  * Closes the temporary file used by the tests.
92  * Returns zero on success, non-zero otherwise.
93  */
94 int
ags_resample_util_test_clean_suite()95 ags_resample_util_test_clean_suite()
96 {
97   return(0);
98 }
99 
100 void
ags_resample_util_test_alloc()101 ags_resample_util_test_alloc()
102 {
103   AgsResampleUtil *resample_util;
104 
105   resample_util = ags_resample_util_alloc();
106 
107   CU_ASSERT(resample_util != NULL);
108 
109   CU_ASSERT(resample_util->destination == NULL);
110   CU_ASSERT(resample_util->destination_stride == 1);
111 
112   CU_ASSERT(resample_util->source == NULL);
113   CU_ASSERT(resample_util->source_stride == 1);
114 
115   CU_ASSERT(resample_util->buffer_length == 0);
116   CU_ASSERT(resample_util->audio_buffer_util_format == AGS_RESAMPLE_UTIL_DEFAULT_AUDIO_BUFFER_UTIL_FORMAT);
117   CU_ASSERT(resample_util->samplerate == AGS_RESAMPLE_UTIL_DEFAULT_SAMPLERATE);
118 
119   CU_ASSERT(resample_util->target_samplerate == AGS_RESAMPLE_UTIL_DEFAULT_TARGET_SAMPLERATE);
120 }
121 
122 void
ags_resample_util_test_copy()123 ags_resample_util_test_copy()
124 {
125   AgsResampleUtil resample_util;
126   AgsResampleUtil *copy_resample_util;
127 
128   resample_util = (AgsResampleUtil) {
129     .destination = ags_stream_alloc(AGS_RESAMPLE_UTIL_TEST_COPY_BUFFER_SIZE,
130 				    AGS_RESAMPLE_UTIL_TEST_COPY_FORMAT),
131     .source = ags_stream_alloc(AGS_RESAMPLE_UTIL_TEST_COPY_SOURCE_AUDIO_CHANNELS * AGS_RESAMPLE_UTIL_TEST_COPY_BUFFER_SIZE,
132 			       AGS_RESAMPLE_UTIL_TEST_COPY_FORMAT),
133     .source_stride = AGS_RESAMPLE_UTIL_TEST_COPY_SOURCE_AUDIO_CHANNELS,
134     .buffer_length = AGS_RESAMPLE_UTIL_TEST_COPY_BUFFER_SIZE,
135     .samplerate = AGS_RESAMPLE_UTIL_TEST_COPY_SAMPLERATE,
136     .target_samplerate = AGS_RESAMPLE_UTIL_TEST_COPY_TARGET_SAMPLERATE
137   };
138 
139   copy_resample_util = ags_resample_util_copy(&resample_util);
140 
141   CU_ASSERT(copy_resample_util != NULL);
142 
143   CU_ASSERT(copy_resample_util->destination == resample_util.destination);
144   CU_ASSERT(copy_resample_util->destination_stride == resample_util.destination_stride);
145 
146   CU_ASSERT(copy_resample_util->source == resample_util.source);
147   CU_ASSERT(copy_resample_util->source_stride == resample_util.source_stride);
148 
149   CU_ASSERT(copy_resample_util->buffer_length == resample_util.buffer_length);
150   CU_ASSERT(copy_resample_util->audio_buffer_util_format == resample_util.audio_buffer_util_format);
151   CU_ASSERT(copy_resample_util->samplerate == resample_util.samplerate);
152 
153   CU_ASSERT(copy_resample_util->target_samplerate == resample_util.target_samplerate);
154 }
155 
156 void
ags_resample_util_test_free()157 ags_resample_util_test_free()
158 {
159   AgsResampleUtil *resample_util;
160 
161   resample_util = (AgsResampleUtil *) g_new(AgsResampleUtil,
162 					    1);
163 
164   CU_ASSERT(resample_util != NULL);
165 
166   resample_util->source = NULL;
167   resample_util->destination = NULL;
168 
169   resample_util->secret_rabbit.data_out = NULL;
170   resample_util->secret_rabbit.data_in = NULL;
171 
172   ags_resample_util_free(resample_util);
173 
174   resample_util = ags_resample_util_alloc();
175 
176   CU_ASSERT(resample_util != NULL);
177 
178   ags_resample_util_free(resample_util);
179 }
180 
181 void
ags_resample_util_test_get_destination()182 ags_resample_util_test_get_destination()
183 {
184   AgsResampleUtil resample_util;
185 
186   resample_util.destination = NULL;
187 
188   CU_ASSERT(ags_resample_util_get_destination(&resample_util) == NULL);
189 
190   resample_util.destination = ags_stream_alloc(AGS_RESAMPLE_UTIL_TEST_GET_DESTINATION_BUFFER_SIZE,
191 					       AGS_RESAMPLE_UTIL_TEST_GET_DESTINATION_FORMAT);
192 
193   CU_ASSERT(ags_resample_util_get_destination(&resample_util) == resample_util.destination);
194 }
195 
196 void
ags_resample_util_test_set_destination()197 ags_resample_util_test_set_destination()
198 {
199   AgsResampleUtil resample_util;
200 
201   gpointer destination;
202 
203   resample_util.destination = NULL;
204 
205   destination = ags_stream_alloc(AGS_RESAMPLE_UTIL_TEST_SET_DESTINATION_BUFFER_SIZE,
206 				 AGS_RESAMPLE_UTIL_TEST_SET_DESTINATION_FORMAT);
207 
208   ags_resample_util_set_destination(&resample_util,
209 				    destination);
210 
211   CU_ASSERT(resample_util.destination == destination);
212 }
213 
214 void
ags_resample_util_test_get_destination_stride()215 ags_resample_util_test_get_destination_stride()
216 {
217   AgsResampleUtil resample_util;
218 
219   resample_util.destination_stride = 0;
220 
221   CU_ASSERT(ags_resample_util_get_destination_stride(&resample_util) == 0);
222 
223   resample_util.destination_stride = 1;
224 
225   CU_ASSERT(ags_resample_util_get_destination_stride(&resample_util) == resample_util.destination_stride);
226 }
227 
228 void
ags_resample_util_test_set_destination_stride()229 ags_resample_util_test_set_destination_stride()
230 {
231   AgsResampleUtil resample_util;
232 
233   resample_util.destination_stride = 0;
234 
235   ags_resample_util_set_destination_stride(&resample_util,
236 					   1);
237 
238   CU_ASSERT(resample_util.destination_stride == 1);
239 }
240 
241 void
ags_resample_util_test_get_source()242 ags_resample_util_test_get_source()
243 {
244   AgsResampleUtil resample_util;
245 
246   resample_util.source = NULL;
247 
248   CU_ASSERT(ags_resample_util_get_source(&resample_util) == NULL);
249 
250   resample_util.source = ags_stream_alloc(AGS_RESAMPLE_UTIL_TEST_GET_SOURCE_BUFFER_SIZE,
251 					  AGS_RESAMPLE_UTIL_TEST_GET_SOURCE_FORMAT);
252 
253   CU_ASSERT(ags_resample_util_get_source(&resample_util) == resample_util.source);
254 }
255 
256 void
ags_resample_util_test_set_source()257 ags_resample_util_test_set_source()
258 {
259   AgsResampleUtil resample_util;
260 
261   gpointer source;
262 
263   resample_util.source = NULL;
264 
265   source = ags_stream_alloc(AGS_RESAMPLE_UTIL_TEST_SET_SOURCE_BUFFER_SIZE,
266 			    AGS_RESAMPLE_UTIL_TEST_SET_SOURCE_FORMAT);
267 
268   ags_resample_util_set_source(&resample_util,
269 			       source);
270 
271   CU_ASSERT(resample_util.source == source);
272 }
273 
274 void
ags_resample_util_test_get_source_stride()275 ags_resample_util_test_get_source_stride()
276 {
277   AgsResampleUtil resample_util;
278 
279   resample_util.source_stride = 0;
280 
281   CU_ASSERT(ags_resample_util_get_source_stride(&resample_util) == 0);
282 
283   resample_util.source_stride = 1;
284 
285   CU_ASSERT(ags_resample_util_get_source_stride(&resample_util) == resample_util.source_stride);
286 }
287 
288 void
ags_resample_util_test_set_source_stride()289 ags_resample_util_test_set_source_stride()
290 {
291   AgsResampleUtil resample_util;
292 
293   resample_util.source_stride = 0;
294 
295   ags_resample_util_set_source_stride(&resample_util,
296 				      1);
297 
298   CU_ASSERT(resample_util.source_stride == 1);
299 }
300 
301 void
ags_resample_util_test_get_buffer_length()302 ags_resample_util_test_get_buffer_length()
303 {
304   AgsResampleUtil resample_util;
305 
306   resample_util.buffer_length = 0;
307 
308   CU_ASSERT(ags_resample_util_get_buffer_length(&resample_util) == 0);
309 
310   resample_util.buffer_length = 512;
311 
312   CU_ASSERT(ags_resample_util_get_buffer_length(&resample_util) == resample_util.buffer_length);
313 }
314 
315 void
ags_resample_util_test_set_buffer_length()316 ags_resample_util_test_set_buffer_length()
317 {
318   AgsResampleUtil resample_util;
319 
320   resample_util.secret_rabbit.data_in = NULL;
321   resample_util.secret_rabbit.data_out = NULL;
322 
323   resample_util.secret_rabbit.src_ratio = 1.0;
324 
325   resample_util.buffer_length = 0;
326 
327   ags_resample_util_set_buffer_length(&resample_util,
328 				      512);
329 
330   CU_ASSERT(resample_util.buffer_length == 512);
331 }
332 
333 void
ags_resample_util_test_get_audio_buffer_util_format()334 ags_resample_util_test_get_audio_buffer_util_format()
335 {
336   AgsResampleUtil resample_util;
337 
338   resample_util.audio_buffer_util_format = AGS_AUDIO_BUFFER_UTIL_S16;
339 
340   CU_ASSERT(ags_resample_util_get_audio_buffer_util_format(&resample_util) == AGS_AUDIO_BUFFER_UTIL_S16);
341 
342   resample_util.audio_buffer_util_format = AGS_AUDIO_BUFFER_UTIL_FLOAT;
343 
344   CU_ASSERT(ags_resample_util_get_audio_buffer_util_format(&resample_util) == resample_util.audio_buffer_util_format);
345 }
346 
347 void
ags_resample_util_test_set_audio_buffer_util_format()348 ags_resample_util_test_set_audio_buffer_util_format()
349 {
350   AgsResampleUtil resample_util;
351 
352   resample_util.audio_buffer_util_format = AGS_AUDIO_BUFFER_UTIL_S16;
353 
354   ags_resample_util_set_audio_buffer_util_format(&resample_util,
355 						 AGS_AUDIO_BUFFER_UTIL_FLOAT);
356 
357   CU_ASSERT(resample_util.audio_buffer_util_format == AGS_AUDIO_BUFFER_UTIL_FLOAT);
358 }
359 
360 void
ags_resample_util_test_get_samplerate()361 ags_resample_util_test_get_samplerate()
362 {
363   AgsResampleUtil resample_util;
364 
365   resample_util.samplerate = 0;
366 
367   CU_ASSERT(ags_resample_util_get_samplerate(&resample_util) == 0);
368 
369   resample_util.samplerate = 44100;
370 
371   CU_ASSERT(ags_resample_util_get_samplerate(&resample_util) == resample_util.samplerate);
372 }
373 
374 void
ags_resample_util_test_set_samplerate()375 ags_resample_util_test_set_samplerate()
376 {
377   AgsResampleUtil resample_util;
378 
379   resample_util.secret_rabbit.data_out = NULL;
380 
381   resample_util.secret_rabbit.src_ratio = 1.0;
382 
383   resample_util.buffer_length = 0;
384   resample_util.samplerate = 0;
385   resample_util.target_samplerate = 44100;
386 
387   ags_resample_util_set_samplerate(&resample_util,
388 				   44100);
389 
390   CU_ASSERT(resample_util.samplerate == 44100);
391 }
392 
393 void
ags_resample_util_test_get_target_samplerate()394 ags_resample_util_test_get_target_samplerate()
395 {
396   AgsResampleUtil resample_util;
397 
398   resample_util.target_samplerate = 0;
399 
400   CU_ASSERT(ags_resample_util_get_target_samplerate(&resample_util) == 0);
401 
402   resample_util.target_samplerate = 44100;
403 
404   CU_ASSERT(ags_resample_util_get_target_samplerate(&resample_util) == resample_util.target_samplerate);
405 }
406 
407 void
ags_resample_util_test_set_target_samplerate()408 ags_resample_util_test_set_target_samplerate()
409 {
410   AgsResampleUtil resample_util;
411 
412   resample_util.secret_rabbit.data_out = NULL;
413 
414   resample_util.secret_rabbit.src_ratio = 1.0;
415 
416   resample_util.buffer_length = 0;
417   resample_util.samplerate = 44100;
418   resample_util.target_samplerate = 0;
419 
420   ags_resample_util_set_target_samplerate(&resample_util,
421 					  44100);
422 
423   CU_ASSERT(resample_util.target_samplerate == 44100);
424 }
425 
426 void
ags_resample_util_test_compute_s8()427 ags_resample_util_test_compute_s8()
428 {
429   AgsResampleUtil resample_util;
430 
431   gpointer source;
432 
433   source = ags_stream_alloc(1024,
434 			    AGS_SOUNDCARD_SIGNED_8_BIT);
435 
436   resample_util = (AgsResampleUtil) {
437     .destination = source,
438     .source = source,
439     .source_stride = 1,
440     .buffer_length = 1024,
441     .audio_buffer_util_format = AGS_AUDIO_BUFFER_UTIL_S8,
442     .samplerate = 48000,
443     .target_samplerate = 44100
444   };
445 
446   ags_resample_util_compute_s8(&resample_util);
447 }
448 
449 void
ags_resample_util_test_compute_s16()450 ags_resample_util_test_compute_s16()
451 {
452   AgsResampleUtil resample_util;
453 
454   gpointer source;
455 
456   source = ags_stream_alloc(1024,
457 			    AGS_SOUNDCARD_SIGNED_16_BIT);
458 
459   resample_util = (AgsResampleUtil) {
460     .destination = source,
461     .source = source,
462     .source_stride = 1,
463     .buffer_length = 1024,
464     .audio_buffer_util_format = AGS_AUDIO_BUFFER_UTIL_S16,
465     .samplerate = 48000,
466     .target_samplerate = 44100
467   };
468 
469   ags_resample_util_compute_s16(&resample_util);
470 }
471 
472 void
ags_resample_util_test_compute_s24()473 ags_resample_util_test_compute_s24()
474 {
475   AgsResampleUtil resample_util;
476 
477   gpointer source;
478 
479   source = ags_stream_alloc(1024,
480 			    AGS_SOUNDCARD_SIGNED_24_BIT);
481 
482   resample_util = (AgsResampleUtil) {
483     .destination = source,
484     .source = source,
485     .source_stride = 1,
486     .buffer_length = 1024,
487     .audio_buffer_util_format = AGS_AUDIO_BUFFER_UTIL_S24,
488     .samplerate = 48000,
489     .target_samplerate = 44100
490   };
491 
492   ags_resample_util_compute_s24(&resample_util);
493 }
494 
495 void
ags_resample_util_test_compute_s32()496 ags_resample_util_test_compute_s32()
497 {
498   AgsResampleUtil resample_util;
499 
500   gpointer source;
501 
502   source = ags_stream_alloc(1024,
503 			    AGS_SOUNDCARD_SIGNED_32_BIT);
504 
505   resample_util = (AgsResampleUtil) {
506     .destination = source,
507     .source = source,
508     .source_stride = 1,
509     .buffer_length = 1024,
510     .audio_buffer_util_format = AGS_AUDIO_BUFFER_UTIL_S32,
511     .samplerate = 48000,
512     .target_samplerate = 44100
513   };
514 
515   ags_resample_util_compute_s32(&resample_util);
516 }
517 
518 void
ags_resample_util_test_compute_s64()519 ags_resample_util_test_compute_s64()
520 {
521   AgsResampleUtil resample_util;
522 
523   gpointer source;
524 
525   source = ags_stream_alloc(1024,
526 			    AGS_SOUNDCARD_SIGNED_64_BIT);
527 
528   resample_util = (AgsResampleUtil) {
529     .destination = source,
530     .source = source,
531     .source_stride = 1,
532     .buffer_length = 1024,
533     .audio_buffer_util_format = AGS_AUDIO_BUFFER_UTIL_S64,
534     .samplerate = 48000,
535     .target_samplerate = 44100
536   };
537 
538   ags_resample_util_compute_s64(&resample_util);
539 }
540 
541 void
ags_resample_util_test_compute_float()542 ags_resample_util_test_compute_float()
543 {
544   AgsResampleUtil resample_util;
545 
546   gpointer source;
547 
548   source = ags_stream_alloc(1024,
549 			    AGS_SOUNDCARD_FLOAT);
550 
551   resample_util = (AgsResampleUtil) {
552     .destination = source,
553     .source = source,
554     .source_stride = 1,
555     .buffer_length = 1024,
556     .audio_buffer_util_format = AGS_AUDIO_BUFFER_UTIL_FLOAT,
557     .samplerate = 48000,
558     .target_samplerate = 44100
559   };
560 
561   ags_resample_util_compute_float(&resample_util);
562 }
563 
564 void
ags_resample_util_test_compute_double()565 ags_resample_util_test_compute_double()
566 {
567   AgsResampleUtil resample_util;
568 
569   gpointer source;
570 
571   source = ags_stream_alloc(1024,
572 			    AGS_SOUNDCARD_DOUBLE);
573 
574   resample_util = (AgsResampleUtil) {
575     .destination = source,
576     .source = source,
577     .source_stride = 1,
578     .buffer_length = 1024,
579     .audio_buffer_util_format = AGS_AUDIO_BUFFER_UTIL_DOUBLE,
580     .samplerate = 48000,
581     .target_samplerate = 44100
582   };
583 
584   ags_resample_util_compute_double(&resample_util);
585 }
586 
587 void
ags_resample_util_test_compute_complex()588 ags_resample_util_test_compute_complex()
589 {
590   AgsResampleUtil resample_util;
591 
592   gpointer source;
593 
594   source = ags_stream_alloc(1024,
595 			    AGS_SOUNDCARD_COMPLEX);
596 
597   resample_util = (AgsResampleUtil) {
598     .destination = source,
599     .source = source,
600     .source_stride = 1,
601     .buffer_length = 1024,
602     .audio_buffer_util_format = AGS_AUDIO_BUFFER_UTIL_COMPLEX,
603     .samplerate = 48000,
604     .target_samplerate = 44100
605   };
606 
607   ags_resample_util_compute_complex(&resample_util);
608 }
609 
610 void
ags_resample_util_test_compute()611 ags_resample_util_test_compute()
612 {
613   AgsResampleUtil resample_util;
614 
615   gpointer source;
616 
617   source = ags_stream_alloc(1024,
618 			    AGS_SOUNDCARD_SIGNED_16_BIT);
619 
620   resample_util = (AgsResampleUtil) {
621     .destination = source,
622     .source = source,
623     .source_stride = 1,
624     .buffer_length = 1024,
625     .audio_buffer_util_format = AGS_AUDIO_BUFFER_UTIL_S16,
626     .samplerate = 48000,
627     .target_samplerate = 44100
628   };
629 
630   ags_resample_util_compute(&resample_util);
631 }
632 
633 int
main(int argc,char ** argv)634 main(int argc, char **argv)
635 {
636   CU_pSuite pSuite = NULL;
637 
638   /* initialize the CUnit test registry */
639   if(CUE_SUCCESS != CU_initialize_registry()){
640     return CU_get_error();
641   }
642 
643   /* add a suite to the registry */
644   pSuite = CU_add_suite("AgsResampleUtilTest", ags_resample_util_test_init_suite, ags_resample_util_test_clean_suite);
645 
646   if(pSuite == NULL){
647     CU_cleanup_registry();
648 
649     return CU_get_error();
650   }
651 
652   /* add the tests to the suite */
653   if((CU_add_test(pSuite, "test of AgsResampleUtil alloc", ags_resample_util_test_alloc) == NULL) ||
654      (CU_add_test(pSuite, "test of AgsResampleUtil copy", ags_resample_util_test_copy) == NULL) ||
655      (CU_add_test(pSuite, "test of AgsResampleUtil free", ags_resample_util_test_free) == NULL) ||
656      (CU_add_test(pSuite, "test of AgsResampleUtil get destination", ags_resample_util_test_get_destination) == NULL) ||
657      (CU_add_test(pSuite, "test of AgsResampleUtil set destination", ags_resample_util_test_set_destination) == NULL) ||
658      (CU_add_test(pSuite, "test of AgsResampleUtil get destination stride", ags_resample_util_test_get_destination_stride) == NULL) ||
659      (CU_add_test(pSuite, "test of AgsResampleUtil set destination stride", ags_resample_util_test_set_destination_stride) == NULL) ||
660      (CU_add_test(pSuite, "test of AgsResampleUtil get source", ags_resample_util_test_get_source) == NULL) ||
661      (CU_add_test(pSuite, "test of AgsResampleUtil set source", ags_resample_util_test_set_source) == NULL) ||
662      (CU_add_test(pSuite, "test of AgsResampleUtil get source stride", ags_resample_util_test_get_source_stride) == NULL) ||
663      (CU_add_test(pSuite, "test of AgsResampleUtil set source stride", ags_resample_util_test_set_source_stride) == NULL) ||
664      (CU_add_test(pSuite, "test of AgsResampleUtil get buffer length", ags_resample_util_test_get_buffer_length) == NULL) ||
665      (CU_add_test(pSuite, "test of AgsResampleUtil set buffer length", ags_resample_util_test_set_buffer_length) == NULL) ||
666      (CU_add_test(pSuite, "test of AgsResampleUtil get audio buffer util format", ags_resample_util_test_get_audio_buffer_util_format) == NULL) ||
667      (CU_add_test(pSuite, "test of AgsResampleUtil set audio buffer util format", ags_resample_util_test_set_audio_buffer_util_format) == NULL) ||
668      (CU_add_test(pSuite, "test of AgsResampleUtil get samplerate", ags_resample_util_test_get_samplerate) == NULL) ||
669      (CU_add_test(pSuite, "test of AgsResampleUtil set samplerate", ags_resample_util_test_set_samplerate) == NULL) ||
670      (CU_add_test(pSuite, "test of AgsResampleUtil get target samplerate", ags_resample_util_test_get_target_samplerate) == NULL) ||
671      (CU_add_test(pSuite, "test of AgsResampleUtil set target samplerate", ags_resample_util_test_set_target_samplerate) == NULL) ||
672      (CU_add_test(pSuite, "test of AgsResampleUtil compute s8", ags_resample_util_test_compute_s8) == NULL) ||
673      (CU_add_test(pSuite, "test of AgsResampleUtil compute s16", ags_resample_util_test_compute_s16) == NULL) ||
674      (CU_add_test(pSuite, "test of AgsResampleUtil compute s24", ags_resample_util_test_compute_s24) == NULL) ||
675      (CU_add_test(pSuite, "test of AgsResampleUtil compute s32", ags_resample_util_test_compute_s32) == NULL) ||
676      (CU_add_test(pSuite, "test of AgsResampleUtil compute s64", ags_resample_util_test_compute_s64) == NULL) ||
677      (CU_add_test(pSuite, "test of AgsResampleUtil compute float", ags_resample_util_test_compute_float) == NULL) ||
678      (CU_add_test(pSuite, "test of AgsResampleUtil compute double", ags_resample_util_test_compute_double) == NULL) ||
679      (CU_add_test(pSuite, "test of AgsResampleUtil compute complex", ags_resample_util_test_compute_complex) == NULL) ||
680      (CU_add_test(pSuite, "test of AgsResampleUtil compute", ags_resample_util_test_compute) == NULL)){
681     CU_cleanup_registry();
682 
683     return CU_get_error();
684   }
685 
686   /* Run all tests using the CUnit Basic interface */
687   CU_basic_set_mode(CU_BRM_VERBOSE);
688   CU_basic_run_tests();
689 
690   CU_cleanup_registry();
691 
692   return(CU_get_error());
693 }
694