annotate src/libsndfile-1.0.27/tests/utils.h @ 40:1df64224f5ac

Current libsndfile source
author Chris Cannam
date Tue, 18 Oct 2016 13:22:47 +0100
parents
children
rev   line source
Chris@40 1 /*
Chris@40 2 ** Copyright (C) 2002-2016 Erik de Castro Lopo <erikd@mega-nerd.com>
Chris@40 3 **
Chris@40 4 ** This program is free software; you can redistribute it and/or modify
Chris@40 5 ** it under the terms of the GNU General Public License as published by
Chris@40 6 ** the Free Software Foundation; either version 2 of the License, or
Chris@40 7 ** (at your option) any later version.
Chris@40 8 **
Chris@40 9 ** This program is distributed in the hope that it will be useful,
Chris@40 10 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@40 11 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@40 12 ** GNU General Public License for more details.
Chris@40 13 **
Chris@40 14 ** You should have received a copy of the GNU General Public License
Chris@40 15 ** along with this program; if not, write to the Free Software
Chris@40 16 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Chris@40 17 */
Chris@40 18
Chris@40 19 /*
Chris@40 20 ** Utility functions to make writing the test suite easier.
Chris@40 21 **
Chris@40 22 ** The .c and .h files were generated automagically with Autogen from
Chris@40 23 ** the files utils.def and utils.tpl.
Chris@40 24 */
Chris@40 25
Chris@40 26
Chris@40 27
Chris@40 28 #ifdef __cplusplus
Chris@40 29 extern "C" {
Chris@40 30 #endif /* __cplusplus */
Chris@40 31
Chris@40 32 #include <stdint.h>
Chris@40 33 #include <stdarg.h>
Chris@40 34
Chris@40 35 #define ARRAY_LEN(x) ((int) (sizeof (x)) / (sizeof ((x) [0])))
Chris@40 36 #define SIGNED_SIZEOF(x) ((int64_t) (sizeof (x)))
Chris@40 37 #define NOT(x) (! (x))
Chris@40 38 #define ABS(x) ((x) >= 0 ? (x) : -(x))
Chris@40 39
Chris@40 40 #define PIPE_INDEX(x) ((x) + 500)
Chris@40 41 #define PIPE_TEST_LEN 12345
Chris@40 42
Chris@40 43
Chris@40 44 void gen_windowed_sine_float (float *data, int len, double maximum) ;
Chris@40 45 void gen_windowed_sine_double (double *data, int len, double maximum) ;
Chris@40 46
Chris@40 47
Chris@40 48 void create_short_sndfile (const char *filename, int format, int channels) ;
Chris@40 49
Chris@40 50 void check_file_hash_or_die (const char *filename, uint64_t target_hash, int line_num) ;
Chris@40 51
Chris@40 52 void print_test_name (const char *test, const char *filename) ;
Chris@40 53
Chris@40 54 void dump_data_to_file (const char *filename, const void *data, unsigned int datalen) ;
Chris@40 55
Chris@40 56 void write_mono_file (const char * filename, int format, int srate, float * output, int len) ;
Chris@40 57
Chris@40 58 #ifdef __GNUC__
Chris@40 59 static inline void
Chris@40 60 exit_if_true (int test, const char *format, ...)
Chris@40 61 #if (defined (__USE_MINGW_ANSI_STDIO) && __USE_MINGW_ANSI_STDIO)
Chris@40 62 __attribute__ ((format (gnu_printf, 2, 3))) ;
Chris@40 63 #else
Chris@40 64 __attribute__ ((format (printf, 2, 3))) ;
Chris@40 65 #endif
Chris@40 66 #endif
Chris@40 67
Chris@40 68 static inline void
Chris@40 69 exit_if_true (int test, const char *format, ...)
Chris@40 70 { if (test)
Chris@40 71 { va_list argptr ;
Chris@40 72 va_start (argptr, format) ;
Chris@40 73 vprintf (format, argptr) ;
Chris@40 74 va_end (argptr) ;
Chris@40 75 exit (1) ;
Chris@40 76 } ;
Chris@40 77 } /* exit_if_true */
Chris@40 78
Chris@40 79 static inline int32_t
Chris@40 80 arith_shift_left (int32_t x, int shift)
Chris@40 81 { return (int32_t) (((uint32_t) x) << shift) ;
Chris@40 82 } /* arith_shift_left */
Chris@40 83
Chris@40 84 /*
Chris@40 85 ** Functions for saving two vectors of data in an ascii text file which
Chris@40 86 ** can then be loaded into GNU octave for comparison.
Chris@40 87 */
Chris@40 88
Chris@40 89 int oct_save_short (const short *a, const short *b, int len) ;
Chris@40 90 int oct_save_int (const int *a, const int *b, int len) ;
Chris@40 91 int oct_save_float (const float *a, const float *b, int len) ;
Chris@40 92 int oct_save_double (const double *a, const double *b, int len) ;
Chris@40 93
Chris@40 94
Chris@40 95 void delete_file (int format, const char *filename) ;
Chris@40 96
Chris@40 97 void count_open_files (void) ;
Chris@40 98 void increment_open_file_count (void) ;
Chris@40 99 void check_open_file_count_or_die (int lineno) ;
Chris@40 100
Chris@40 101 #ifdef SNDFILE_H
Chris@40 102
Chris@40 103 static inline void
Chris@40 104 sf_info_clear (SF_INFO * info)
Chris@40 105 { memset (info, 0, sizeof (SF_INFO)) ;
Chris@40 106 } /* sf_info_clear */
Chris@40 107
Chris@40 108 static inline void
Chris@40 109 sf_info_setup (SF_INFO * info, int format, int samplerate, int channels)
Chris@40 110 { sf_info_clear (info) ;
Chris@40 111
Chris@40 112 info->format = format ;
Chris@40 113 info->samplerate = samplerate ;
Chris@40 114 info->channels = channels ;
Chris@40 115 } /* sf_info_setup */
Chris@40 116
Chris@40 117
Chris@40 118 void dump_log_buffer (SNDFILE *file) ;
Chris@40 119 void check_log_buffer_or_die (SNDFILE *file, int line_num) ;
Chris@40 120 int string_in_log_buffer (SNDFILE *file, const char *s) ;
Chris@40 121 void hexdump_file (const char * filename, sf_count_t offset, sf_count_t length) ;
Chris@40 122
Chris@40 123 void test_sf_format_or_die (const SF_INFO *info, int line_num) ;
Chris@40 124
Chris@40 125 SNDFILE *test_open_file_or_die
Chris@40 126 (const char *filename, int mode, SF_INFO *sfinfo, int allow_fd, int line_num) ;
Chris@40 127
Chris@40 128 void test_read_write_position_or_die
Chris@40 129 (SNDFILE *file, int line_num, int pass, sf_count_t read_pos, sf_count_t write_pos) ;
Chris@40 130
Chris@40 131 void test_seek_or_die
Chris@40 132 (SNDFILE *file, sf_count_t offset, int whence, sf_count_t new_pos, int channels, int line_num) ;
Chris@40 133
Chris@40 134
Chris@40 135 void test_read_short_or_die
Chris@40 136 (SNDFILE *file, int pass, short *test, sf_count_t items, int line_num) ;
Chris@40 137 void test_read_int_or_die
Chris@40 138 (SNDFILE *file, int pass, int *test, sf_count_t items, int line_num) ;
Chris@40 139 void test_read_float_or_die
Chris@40 140 (SNDFILE *file, int pass, float *test, sf_count_t items, int line_num) ;
Chris@40 141 void test_read_double_or_die
Chris@40 142 (SNDFILE *file, int pass, double *test, sf_count_t items, int line_num) ;
Chris@40 143
Chris@40 144 void test_readf_short_or_die
Chris@40 145 (SNDFILE *file, int pass, short *test, sf_count_t frames, int line_num) ;
Chris@40 146 void test_readf_int_or_die
Chris@40 147 (SNDFILE *file, int pass, int *test, sf_count_t frames, int line_num) ;
Chris@40 148 void test_readf_float_or_die
Chris@40 149 (SNDFILE *file, int pass, float *test, sf_count_t frames, int line_num) ;
Chris@40 150 void test_readf_double_or_die
Chris@40 151 (SNDFILE *file, int pass, double *test, sf_count_t frames, int line_num) ;
Chris@40 152
Chris@40 153
Chris@40 154 void
Chris@40 155 test_read_raw_or_die (SNDFILE *file, int pass, void *test, sf_count_t items, int line_num) ;
Chris@40 156
Chris@40 157
Chris@40 158 void test_write_short_or_die
Chris@40 159 (SNDFILE *file, int pass, const short *test, sf_count_t items, int line_num) ;
Chris@40 160 void test_write_int_or_die
Chris@40 161 (SNDFILE *file, int pass, const int *test, sf_count_t items, int line_num) ;
Chris@40 162 void test_write_float_or_die
Chris@40 163 (SNDFILE *file, int pass, const float *test, sf_count_t items, int line_num) ;
Chris@40 164 void test_write_double_or_die
Chris@40 165 (SNDFILE *file, int pass, const double *test, sf_count_t items, int line_num) ;
Chris@40 166
Chris@40 167 void test_writef_short_or_die
Chris@40 168 (SNDFILE *file, int pass, const short *test, sf_count_t frames, int line_num) ;
Chris@40 169 void test_writef_int_or_die
Chris@40 170 (SNDFILE *file, int pass, const int *test, sf_count_t frames, int line_num) ;
Chris@40 171 void test_writef_float_or_die
Chris@40 172 (SNDFILE *file, int pass, const float *test, sf_count_t frames, int line_num) ;
Chris@40 173 void test_writef_double_or_die
Chris@40 174 (SNDFILE *file, int pass, const double *test, sf_count_t frames, int line_num) ;
Chris@40 175
Chris@40 176
Chris@40 177 void
Chris@40 178 test_write_raw_or_die (SNDFILE *file, int pass, const void *test, sf_count_t items, int line_num) ;
Chris@40 179
Chris@40 180 void compare_short_or_die (const short *expected, const short *actual, unsigned count, int line_num) ;
Chris@40 181 void compare_int_or_die (const int *expected, const int *actual, unsigned count, int line_num) ;
Chris@40 182 void compare_float_or_die (const float *expected, const float *actual, unsigned count, int line_num) ;
Chris@40 183 void compare_double_or_die (const double *expected, const double *actual, unsigned count, int line_num) ;
Chris@40 184
Chris@40 185
Chris@40 186
Chris@40 187 void gen_lowpass_signal_float (float *data, int len) ;
Chris@40 188
Chris@40 189 sf_count_t file_length (const char * fname) ;
Chris@40 190 sf_count_t file_length_fd (int fd) ;
Chris@40 191
Chris@40 192 #endif
Chris@40 193
Chris@40 194 #ifdef __cplusplus
Chris@40 195 } /* extern "C" */
Chris@40 196 #endif /* __cplusplus */
Chris@40 197
Chris@40 198
Chris@40 199