From 0d4302b0ef7440eaef4047fa03b1180e1bec6eb0 Mon Sep 17 00:00:00 2001 From: Erik de Castro Lopo Date: Sun, 28 Feb 2010 13:52:11 +1100 Subject: [PATCH] tests/rdwr_test.(def|tpl) : Add new test program and hook into build. --- .bzrignore | 5 ++- ChangeLog | 3 ++ tests/Makefile.am | 12 ++++- tests/rdwr_test.def | 32 ++++++++++++++ tests/rdwr_test.tpl | 105 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 153 insertions(+), 4 deletions(-) create mode 100644 tests/rdwr_test.def create mode 100644 tests/rdwr_test.tpl diff --git a/.bzrignore b/.bzrignore index 59155994..14d7d06e 100644 --- a/.bzrignore +++ b/.bzrignore @@ -52,9 +52,11 @@ libsndfile-1.0.* libsndfile-testsuite-* libsndfile.spec libtool +man/sndfile-deinterleave.1 man/sndfile-metadata-set.1 mntest.sh programs/sndfile-cmp +programs/sndfile-concat programs/sndfile-convert programs/sndfile-data-trim programs/sndfile-deinterleave @@ -92,11 +94,10 @@ tests/header_test.c tests/libsndfile-1.dll tests/pcm_test.c tests/pipe_test.c +tests/rdwr_test.c tests/scale_clip_test.c tests/sfversion tests/test_wrapper.sh tests/utils.c tests/utils.h tests/write_read_test.c -programs/sndfile-concat -man/sndfile-deinterleave.1 diff --git a/ChangeLog b/ChangeLog index 7faff3ff..6caf9b96 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,9 @@ * tests/utils.tpl Add functions test_read_raw_or_die and test_write_raw_or_die. + * tests/rdwr_test.(def|tpl) tests/Makefile.am + Add new test program and hook into build. + 2010-02-22 Erik de Castro Lopo * configure.ac diff --git a/tests/Makefile.am b/tests/Makefile.am index 59264e98..8fb55c62 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -15,7 +15,7 @@ noinst_PROGRAMS = sfversion floating_point_test write_read_test \ raw_test string_test multi_file_test dither_test \ scale_clip_test win32_test fix_this aiff_rw_test virtual_io_test \ locale_test largefile_test win32_ordinal_test ogg_test vorbis_test \ - checksum_test external_libs_test $(CPP_TEST) + checksum_test external_libs_test rdwr_test $(CPP_TEST) noinst_HEADERS = dft_cmp.h utils.h generate.h @@ -25,6 +25,7 @@ autogen_sources = write_read_test.tpl write_read_test.def \ utils.tpl utils.def \ scale_clip_test.tpl scale_clip_test.def \ pipe_test.tpl pipe_test.def \ + rdwr_test.tpl rdwr_test.def \ floating_point_test.tpl floating_point_test.def \ benchmark.tpl benchmark.def @@ -113,6 +114,9 @@ ogg_test_LDADD = $(top_builddir)/src/libsndfile.la vorbis_test_SOURCES = vorbis_test.c utils.c vorbis_test_LDADD = $(top_builddir)/src/libsndfile.la +rdwr_test_SOURCES = rdwr_test.c utils.c +rdwr_test_LDADD = $(top_builddir)/src/libsndfile.la + win32_test_SOURCES = win32_test.c win32_test_LDADD = @@ -162,6 +166,9 @@ scale_clip_test.c: scale_clip_test.def scale_clip_test.tpl pipe_test.c: pipe_test.def pipe_test.tpl autogen --writable pipe_test.def +rdwr_test.c: rdwr_test.def rdwr_test.tpl + autogen --writable rdwr_test.def + floating_point_test.c: floating_point_test.def floating_point_test.tpl autogen --writable floating_point_test.def @@ -169,7 +176,8 @@ benchmark.c: benchmark.def benchmark.tpl autogen --writable benchmark.def genfiles : write_read_test.c pcm_test.c header_test.c utils.c \ - scale_clip_test.c pipe_test.c floating_point_test.c benchmark.c + scale_clip_test.c pipe_test.c floating_point_test.c rdwr_test.c \ + benchmark.c #=============================================================================== # If we're cross compiling from Linux to Windows and running the test suite diff --git a/tests/rdwr_test.def b/tests/rdwr_test.def new file mode 100644 index 00000000..43c10898 --- /dev/null +++ b/tests/rdwr_test.def @@ -0,0 +1,32 @@ +autogen definitions rdwr_test.tpl; + +data_type = { + name = "short" ; + type = "short" ; + format = "SF_FORMAT_PCM_16" ; + } ; + +data_type = { + name = "int" ; + type = "int" ; + format = "SF_FORMAT_PCM_32" ; + } ; + +data_type = { + name = "float" ; + type = "float" ; + format = "SF_FORMAT_FLOAT" ; + } ; + +data_type = { + name = "double" ; + type = "double" ; + format = "SF_FORMAT_DOUBLE" ; + } ; + +data_type = { + name = "raw" ; + type = "unsigned char" ; + format = "SF_FORMAT_PCM_U8" ; + } ; + diff --git a/tests/rdwr_test.tpl b/tests/rdwr_test.tpl new file mode 100644 index 00000000..c6fbed8d --- /dev/null +++ b/tests/rdwr_test.tpl @@ -0,0 +1,105 @@ +[+ AutoGen5 template c +] +/* +** Copyright (C) 2010 Erik de Castro Lopo +** +** This program is free software ; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation ; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY ; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program ; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include "sfconfig.h" + +#include +#include +#include + +#include +#include + +#if HAVE_UNISTD_H +#include +#endif + +#if (HAVE_DECL_S_IRGRP == 0) +#include +#endif + +#if (defined (WIN32) || defined (_WIN32)) +#include +#include +#endif + +#include + +#include "utils.h" + +[+ FOR data_type ++]static void rdwr_[+ (get "name") +]_test (const char *filename) ; +[+ ENDFOR data_type ++] + +int +main (void) +{ + rdwr_short_test ("rdwr_short.wav") ; + rdwr_int_test ("rdwr_int.wav") ; + rdwr_float_test ("rdwr_float.wav") ; + rdwr_double_test ("rdwr_double.wav") ; + rdwr_raw_test ("rdwr_raw.wav") ; + + return 0 ; +} /* main */ + + +/*============================================================================================ +** Here are the test functions. +*/ + +[+ FOR data_type ++]static void +rdwr_[+ (get "name") +]_test (const char *filename) +{ SNDFILE *file ; + SF_INFO sfinfo ; + sf_count_t frames ; + [+ (get "type") +] buffer [160] ; + + print_test_name ("rdwr_[+ (get "name") +]_test", filename) ; + + memset (buffer, 0, sizeof (buffer)) ; + + /* Create sound file with no data. */ + sfinfo.format = SF_FORMAT_WAV | [+ (get "format") +] ; + sfinfo.samplerate = 16000 ; + sfinfo.channels = 1 ; + + unlink (filename) ; + + frames = ARRAY_LEN (buffer) ; + + /* Open again for read/write. */ + file = test_open_file_or_die (filename, SFM_RDWR, &sfinfo, SF_TRUE, __LINE__) ; + + test_write_[+ (get "name") +]_or_die (file, 0, buffer, frames, __LINE__) ; + + test_read_[+ (get "name") +]_or_die (file, 0, buffer, frames, __LINE__) ; + + sf_close (file) ; + unlink (filename) ; + + puts ("ok") ; + return ; +} /* rdwr_[+ (get "name") +]_test */ + +[+ ENDFOR data_type ++] +