annotate src/libsndfile-1.0.27/tests/rdwr_test.c @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents 1df64224f5ac
children
rev   line source
Chris@40 1 /*
Chris@40 2 ** Copyright (C) 2010-2012 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 #include "sfconfig.h"
Chris@40 20
Chris@40 21 #include <stdio.h>
Chris@40 22 #include <stdlib.h>
Chris@40 23 #include <string.h>
Chris@40 24
Chris@40 25 #include <sys/stat.h>
Chris@40 26 #include <math.h>
Chris@40 27
Chris@40 28 #if HAVE_UNISTD_H
Chris@40 29 #include <unistd.h>
Chris@40 30 #endif
Chris@40 31
Chris@40 32 #if (HAVE_DECL_S_IRGRP == 0)
Chris@40 33 #include <sf_unistd.h>
Chris@40 34 #endif
Chris@40 35
Chris@40 36 #if (defined (WIN32) || defined (_WIN32))
Chris@40 37 #include <io.h>
Chris@40 38 #include <direct.h>
Chris@40 39 #endif
Chris@40 40
Chris@40 41 #include <sndfile.h>
Chris@40 42
Chris@40 43 #include "utils.h"
Chris@40 44
Chris@40 45 static void rdwr_short_test (const char *filename) ;
Chris@40 46 static void rdwr_int_test (const char *filename) ;
Chris@40 47 static void rdwr_float_test (const char *filename) ;
Chris@40 48 static void rdwr_double_test (const char *filename) ;
Chris@40 49 static void rdwr_raw_test (const char *filename) ;
Chris@40 50
Chris@40 51
Chris@40 52 int
Chris@40 53 main (void)
Chris@40 54 {
Chris@40 55 rdwr_short_test ("rdwr_short.wav") ;
Chris@40 56 rdwr_int_test ("rdwr_int.wav") ;
Chris@40 57 rdwr_float_test ("rdwr_float.wav") ;
Chris@40 58 rdwr_double_test ("rdwr_double.wav") ;
Chris@40 59 rdwr_raw_test ("rdwr_raw.wav") ;
Chris@40 60
Chris@40 61 return 0 ;
Chris@40 62 } /* main */
Chris@40 63
Chris@40 64
Chris@40 65 /*============================================================================================
Chris@40 66 ** Here are the test functions.
Chris@40 67 */
Chris@40 68
Chris@40 69 static void
Chris@40 70 rdwr_short_test (const char *filename)
Chris@40 71 { SNDFILE *file ;
Chris@40 72 SF_INFO sfinfo ;
Chris@40 73 sf_count_t frames ;
Chris@40 74 short buffer [160] ;
Chris@40 75
Chris@40 76 print_test_name ("rdwr_short_test", filename) ;
Chris@40 77
Chris@40 78 memset (buffer, 0, sizeof (buffer)) ;
Chris@40 79
Chris@40 80 /* Create sound file with no data. */
Chris@40 81 sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16 ;
Chris@40 82 sfinfo.samplerate = 16000 ;
Chris@40 83 sfinfo.channels = 1 ;
Chris@40 84
Chris@40 85 unlink (filename) ;
Chris@40 86
Chris@40 87 frames = ARRAY_LEN (buffer) ;
Chris@40 88
Chris@40 89 /* Open again for read/write. */
Chris@40 90 file = test_open_file_or_die (filename, SFM_RDWR, &sfinfo, SF_TRUE, __LINE__) ;
Chris@40 91
Chris@40 92 test_write_short_or_die (file, 0, buffer, frames, __LINE__) ;
Chris@40 93
Chris@40 94 test_read_short_or_die (file, 0, buffer, frames, __LINE__) ;
Chris@40 95
Chris@40 96 sf_close (file) ;
Chris@40 97 unlink (filename) ;
Chris@40 98
Chris@40 99 puts ("ok") ;
Chris@40 100 return ;
Chris@40 101 } /* rdwr_short_test */
Chris@40 102
Chris@40 103 static void
Chris@40 104 rdwr_int_test (const char *filename)
Chris@40 105 { SNDFILE *file ;
Chris@40 106 SF_INFO sfinfo ;
Chris@40 107 sf_count_t frames ;
Chris@40 108 int buffer [160] ;
Chris@40 109
Chris@40 110 print_test_name ("rdwr_int_test", filename) ;
Chris@40 111
Chris@40 112 memset (buffer, 0, sizeof (buffer)) ;
Chris@40 113
Chris@40 114 /* Create sound file with no data. */
Chris@40 115 sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_32 ;
Chris@40 116 sfinfo.samplerate = 16000 ;
Chris@40 117 sfinfo.channels = 1 ;
Chris@40 118
Chris@40 119 unlink (filename) ;
Chris@40 120
Chris@40 121 frames = ARRAY_LEN (buffer) ;
Chris@40 122
Chris@40 123 /* Open again for read/write. */
Chris@40 124 file = test_open_file_or_die (filename, SFM_RDWR, &sfinfo, SF_TRUE, __LINE__) ;
Chris@40 125
Chris@40 126 test_write_int_or_die (file, 0, buffer, frames, __LINE__) ;
Chris@40 127
Chris@40 128 test_read_int_or_die (file, 0, buffer, frames, __LINE__) ;
Chris@40 129
Chris@40 130 sf_close (file) ;
Chris@40 131 unlink (filename) ;
Chris@40 132
Chris@40 133 puts ("ok") ;
Chris@40 134 return ;
Chris@40 135 } /* rdwr_int_test */
Chris@40 136
Chris@40 137 static void
Chris@40 138 rdwr_float_test (const char *filename)
Chris@40 139 { SNDFILE *file ;
Chris@40 140 SF_INFO sfinfo ;
Chris@40 141 sf_count_t frames ;
Chris@40 142 float buffer [160] ;
Chris@40 143
Chris@40 144 print_test_name ("rdwr_float_test", filename) ;
Chris@40 145
Chris@40 146 memset (buffer, 0, sizeof (buffer)) ;
Chris@40 147
Chris@40 148 /* Create sound file with no data. */
Chris@40 149 sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_FLOAT ;
Chris@40 150 sfinfo.samplerate = 16000 ;
Chris@40 151 sfinfo.channels = 1 ;
Chris@40 152
Chris@40 153 unlink (filename) ;
Chris@40 154
Chris@40 155 frames = ARRAY_LEN (buffer) ;
Chris@40 156
Chris@40 157 /* Open again for read/write. */
Chris@40 158 file = test_open_file_or_die (filename, SFM_RDWR, &sfinfo, SF_TRUE, __LINE__) ;
Chris@40 159
Chris@40 160 test_write_float_or_die (file, 0, buffer, frames, __LINE__) ;
Chris@40 161
Chris@40 162 test_read_float_or_die (file, 0, buffer, frames, __LINE__) ;
Chris@40 163
Chris@40 164 sf_close (file) ;
Chris@40 165 unlink (filename) ;
Chris@40 166
Chris@40 167 puts ("ok") ;
Chris@40 168 return ;
Chris@40 169 } /* rdwr_float_test */
Chris@40 170
Chris@40 171 static void
Chris@40 172 rdwr_double_test (const char *filename)
Chris@40 173 { SNDFILE *file ;
Chris@40 174 SF_INFO sfinfo ;
Chris@40 175 sf_count_t frames ;
Chris@40 176 double buffer [160] ;
Chris@40 177
Chris@40 178 print_test_name ("rdwr_double_test", filename) ;
Chris@40 179
Chris@40 180 memset (buffer, 0, sizeof (buffer)) ;
Chris@40 181
Chris@40 182 /* Create sound file with no data. */
Chris@40 183 sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_DOUBLE ;
Chris@40 184 sfinfo.samplerate = 16000 ;
Chris@40 185 sfinfo.channels = 1 ;
Chris@40 186
Chris@40 187 unlink (filename) ;
Chris@40 188
Chris@40 189 frames = ARRAY_LEN (buffer) ;
Chris@40 190
Chris@40 191 /* Open again for read/write. */
Chris@40 192 file = test_open_file_or_die (filename, SFM_RDWR, &sfinfo, SF_TRUE, __LINE__) ;
Chris@40 193
Chris@40 194 test_write_double_or_die (file, 0, buffer, frames, __LINE__) ;
Chris@40 195
Chris@40 196 test_read_double_or_die (file, 0, buffer, frames, __LINE__) ;
Chris@40 197
Chris@40 198 sf_close (file) ;
Chris@40 199 unlink (filename) ;
Chris@40 200
Chris@40 201 puts ("ok") ;
Chris@40 202 return ;
Chris@40 203 } /* rdwr_double_test */
Chris@40 204
Chris@40 205 static void
Chris@40 206 rdwr_raw_test (const char *filename)
Chris@40 207 { SNDFILE *file ;
Chris@40 208 SF_INFO sfinfo ;
Chris@40 209 sf_count_t frames ;
Chris@40 210 unsigned char buffer [160] ;
Chris@40 211
Chris@40 212 print_test_name ("rdwr_raw_test", filename) ;
Chris@40 213
Chris@40 214 memset (buffer, 0, sizeof (buffer)) ;
Chris@40 215
Chris@40 216 /* Create sound file with no data. */
Chris@40 217 sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_U8 ;
Chris@40 218 sfinfo.samplerate = 16000 ;
Chris@40 219 sfinfo.channels = 1 ;
Chris@40 220
Chris@40 221 unlink (filename) ;
Chris@40 222
Chris@40 223 frames = ARRAY_LEN (buffer) ;
Chris@40 224
Chris@40 225 /* Open again for read/write. */
Chris@40 226 file = test_open_file_or_die (filename, SFM_RDWR, &sfinfo, SF_TRUE, __LINE__) ;
Chris@40 227
Chris@40 228 test_write_raw_or_die (file, 0, buffer, frames, __LINE__) ;
Chris@40 229
Chris@40 230 test_read_raw_or_die (file, 0, buffer, frames, __LINE__) ;
Chris@40 231
Chris@40 232 sf_close (file) ;
Chris@40 233 unlink (filename) ;
Chris@40 234
Chris@40 235 puts ("ok") ;
Chris@40 236 return ;
Chris@40 237 } /* rdwr_raw_test */
Chris@40 238
Chris@40 239
Chris@40 240