annotate src/libsndfile-1.0.27/tests/stdout_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) 2001-2014 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 #include <math.h>
Chris@40 25
Chris@40 26 #if HAVE_UNISTD_H
Chris@40 27 #include <unistd.h>
Chris@40 28 #endif
Chris@40 29
Chris@40 30 #include <sndfile.h>
Chris@40 31
Chris@40 32 #include "utils.h"
Chris@40 33
Chris@40 34 static void stdout_test (int typemajor, int count) ;
Chris@40 35
Chris@40 36 int
Chris@40 37 main (int argc, char *argv [])
Chris@40 38 { int do_all, test_count = 0 ;
Chris@40 39
Chris@40 40 if (argc != 2)
Chris@40 41 { fprintf (stderr, "This program cannot be run by itself. It needs\n") ;
Chris@40 42 fprintf (stderr, "to be run from the stdio_test program.\n") ;
Chris@40 43 exit (1) ;
Chris@40 44 } ;
Chris@40 45
Chris@40 46 do_all = ! strcmp (argv [1], "all") ;
Chris@40 47
Chris@40 48 if (do_all || ! strcmp (argv [1], "raw"))
Chris@40 49 { stdout_test (SF_FORMAT_RAW, PIPE_TEST_LEN) ;
Chris@40 50 test_count ++ ;
Chris@40 51 } ;
Chris@40 52
Chris@40 53 if (do_all || ! strcmp (argv [1], "wav"))
Chris@40 54 { stdout_test (SF_FORMAT_WAV, PIPE_TEST_LEN) ;
Chris@40 55 test_count ++ ;
Chris@40 56 } ;
Chris@40 57
Chris@40 58 if (do_all || ! strcmp (argv [1], "aiff"))
Chris@40 59 { stdout_test (SF_FORMAT_AIFF, PIPE_TEST_LEN) ;
Chris@40 60 test_count ++ ;
Chris@40 61 } ;
Chris@40 62
Chris@40 63 if (do_all || ! strcmp (argv [1], "au"))
Chris@40 64 { stdout_test (SF_FORMAT_AU, PIPE_TEST_LEN) ;
Chris@40 65 test_count ++ ;
Chris@40 66 } ;
Chris@40 67
Chris@40 68 if (do_all || ! strcmp (argv [1], "paf"))
Chris@40 69 { stdout_test (SF_FORMAT_PAF, PIPE_TEST_LEN) ;
Chris@40 70 test_count ++ ;
Chris@40 71 } ;
Chris@40 72
Chris@40 73 if (do_all || ! strcmp (argv [1], "svx"))
Chris@40 74 { stdout_test (SF_FORMAT_SVX, PIPE_TEST_LEN) ;
Chris@40 75 test_count ++ ;
Chris@40 76 } ;
Chris@40 77
Chris@40 78 if (do_all || ! strcmp (argv [1], "nist"))
Chris@40 79 { stdout_test (SF_FORMAT_NIST, PIPE_TEST_LEN) ;
Chris@40 80 test_count ++ ;
Chris@40 81 } ;
Chris@40 82
Chris@40 83 if (do_all || ! strcmp (argv [1], "ircam"))
Chris@40 84 { stdout_test (SF_FORMAT_IRCAM, PIPE_TEST_LEN) ;
Chris@40 85 test_count ++ ;
Chris@40 86 } ;
Chris@40 87
Chris@40 88 if (do_all || ! strcmp (argv [1], "voc"))
Chris@40 89 { stdout_test (SF_FORMAT_VOC, PIPE_TEST_LEN) ;
Chris@40 90 test_count ++ ;
Chris@40 91 } ;
Chris@40 92
Chris@40 93 if (do_all || ! strcmp (argv [1], "w64"))
Chris@40 94 { stdout_test (SF_FORMAT_W64, PIPE_TEST_LEN) ;
Chris@40 95 test_count ++ ;
Chris@40 96 } ;
Chris@40 97
Chris@40 98 if (do_all || ! strcmp (argv [1], "mat4"))
Chris@40 99 { stdout_test (SF_FORMAT_MAT4, PIPE_TEST_LEN) ;
Chris@40 100 test_count ++ ;
Chris@40 101 } ;
Chris@40 102
Chris@40 103 if (do_all || ! strcmp (argv [1], "mat5"))
Chris@40 104 { stdout_test (SF_FORMAT_MAT5, PIPE_TEST_LEN) ;
Chris@40 105 test_count ++ ;
Chris@40 106 } ;
Chris@40 107
Chris@40 108 if (do_all || ! strcmp (argv [1], "pvf"))
Chris@40 109 { stdout_test (SF_FORMAT_PVF, PIPE_TEST_LEN) ;
Chris@40 110 test_count ++ ;
Chris@40 111 } ;
Chris@40 112
Chris@40 113 if (test_count == 0)
Chris@40 114 { fprintf (stderr, "\n******************************************\n") ;
Chris@40 115 fprintf (stderr, "* stdout_test : No '%s' test defined.\n", argv [1]) ;
Chris@40 116 fprintf (stderr, "******************************************\n") ;
Chris@40 117 return 1 ;
Chris@40 118 } ;
Chris@40 119
Chris@40 120 return 0 ;
Chris@40 121 } /* main */
Chris@40 122
Chris@40 123 static void
Chris@40 124 stdout_test (int typemajor, int count)
Chris@40 125 { static short data [PIPE_TEST_LEN] ;
Chris@40 126
Chris@40 127 SNDFILE *file ;
Chris@40 128 SF_INFO sfinfo ;
Chris@40 129 int k, total, this_write ;
Chris@40 130
Chris@40 131 sfinfo.samplerate = 44100 ;
Chris@40 132 sfinfo.format = (typemajor | SF_FORMAT_PCM_16) ;
Chris@40 133 sfinfo.channels = 1 ;
Chris@40 134 sfinfo.frames = 0 ;
Chris@40 135
Chris@40 136 /* Create some random data. */
Chris@40 137 for (k = 0 ; k < PIPE_TEST_LEN ; k++)
Chris@40 138 data [k] = PIPE_INDEX (k) ;
Chris@40 139
Chris@40 140 if ((file = sf_open ("-", SFM_WRITE, &sfinfo)) == NULL)
Chris@40 141 { fprintf (stderr, "%s % d: sf_open_write failed with error : %s\n",
Chris@40 142 __func__, __LINE__, sf_strerror (NULL)) ;
Chris@40 143 exit (1) ;
Chris@40 144 } ;
Chris@40 145
Chris@40 146 if (sfinfo.frames != 0)
Chris@40 147 { fprintf (stderr, "%s % d: Frames is %d (should be 0).\n",
Chris@40 148 __func__, __LINE__, (int) sfinfo.frames) ;
Chris@40 149 exit (1) ;
Chris@40 150 } ;
Chris@40 151
Chris@40 152 total = 0 ;
Chris@40 153
Chris@40 154 while (total < count)
Chris@40 155 { this_write = (count - total > 1024) ? 1024 : count - total ;
Chris@40 156 if ((k = sf_write_short (file, data + total, this_write)) != this_write)
Chris@40 157 { fprintf (stderr, "sf_write_short # %d failed with short write (%d -> %d)\n", count, this_write, k) ;
Chris@40 158 exit (1) ;
Chris@40 159 } ;
Chris@40 160 total += k ;
Chris@40 161 } ;
Chris@40 162
Chris@40 163 sf_close (file) ;
Chris@40 164
Chris@40 165 return ;
Chris@40 166 } /* stdout_test */
Chris@40 167