src/test_* : Collapse all tests into a single executable.

This commit is contained in:
Erik de Castro Lopo 2008-04-03 22:19:11 +11:00
parent e80b9599f7
commit adc85e91de
11 changed files with 323 additions and 154 deletions

View File

@ -71,13 +71,8 @@ src/config.h
src/config.h.in src/config.h.in
src/sndfile.h src/sndfile.h
src/stamp-h1 src/stamp-h1
src/test_audio_detect
src/test_conversions
src/test_endswap
src/test_endswap.c src/test_endswap.c
src/test_file_io src/test_main
src/test_ima_oki_adpcm
src/test_log_printf
tests/*_test tests/*_test
tests/benchmark tests/benchmark
tests/benchmark.c tests/benchmark.c

View File

@ -1,3 +1,14 @@
2008-04-03 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
* src/test_*
Add files test_main.[ch].
Collapse all tests into a single executable.
2008-03-30 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
* src/FLAC
Sync to upstream CVS.
2008-03-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com> 2008-03-11 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
* doc/FAQ.html * doc/FAQ.html

View File

@ -19,8 +19,7 @@ EXTRA_DIST = sndfile.h.in config.h.in test_endswap.tpl test_endswap.def \
noinst_HEADERS = common.h sfconfig.h sfendian.h float_cast.h wav_w64.h sf_unistd.h noinst_HEADERS = common.h sfconfig.h sfendian.h float_cast.h wav_w64.h sf_unistd.h
noinst_PROGRAMS = test_endswap test_file_io test_conversions test_log_printf \ noinst_PROGRAMS = test_main
test_audio_detect test_ima_oki_adpcm
COMMON = common.c file_io.c command.c pcm.c ulaw.c alaw.c float32.c \ COMMON = common.c file_io.c command.c pcm.c ulaw.c alaw.c float32.c \
double64.c ima_adpcm.c ms_adpcm.c gsm610.c dwvw.c vox_adpcm.c \ double64.c ima_adpcm.c ms_adpcm.c gsm610.c dwvw.c vox_adpcm.c \
@ -40,48 +39,27 @@ libsndfile_la_LIBADD = libcommon.la GSM610/libgsm.la G72x/libg72x.la OGG/libogg.
libcommon_la_SOURCES = $(COMMON) libcommon_la_SOURCES = $(COMMON)
test_endswap_SOURCES = test_endswap.c test_main_SOURCES = test_main.c test_conversions.c test_endswap.c test_audio_detect.c \
test_log_printf.c test_file_io.c test_ima_oki_adpcm.c
test_main_LDADD = libcommon.la
test_file_io_CFLAGS = $(AM_CFLAGS)
test_file_io_SOURCES = test_file_io.c
test_file_io_LDADD = libcommon.la
test_log_printf_CFLAGS = $(AM_CFLAGS)
test_log_printf_SOURCES = test_log_printf.c
test_log_printf_LDADD = libcommon.la
test_conversions_CFLAGS = $(AM_CFLAGS)
test_conversions_SOURCES = test_conversions.c
test_conversions_LDADD = libcommon.la
test_audio_detect_CFLAGS = $(AM_CFLAGS)
test_audio_detect_SOURCES = test_audio_detect.c
test_audio_detect_LDADD = libcommon.la
test_ima_oki_adpcm_CFLAGS = -DTEST $(AM_CFLAGS)
test_ima_oki_adpcm_SOURCES = ima_oki_adpcm.c
test_endswap.c: test_endswap.def test_endswap.tpl test_endswap.c: test_endswap.def test_endswap.tpl
autogen --writable test_endswap.def autogen --writable test_endswap.def
genfiles : test_endswap.c Symbols.linux Symbols.darwin libsndfile.def cygsndfile.def genfiles : test_endswap.c Symbols.linux Symbols.darwin libsndfile.def cygsndfile.def
# Two test programs. # A single test programs.
# It is not possible to place these in the tests/ directory because they # It is not possible to place these in the tests/ directory because they
# need access to the internals of the SF_PRIVATE struct. # need access to the internals of the SF_PRIVATE struct.
check: test_endswap test_file_io test_conversions test_log_printf check: $(noinst_PROGRAMS)
@echo @echo
@echo @echo
@echo @echo
@echo "============================================================" @echo "============================================================"
@if [ -x /usr/bin/python2.4 ]; then $(srcdir)/binheader_writef_check.py $(srcdir)/*.c ; fi @if [ -x /usr/bin/python2.4 ]; then $(srcdir)/binheader_writef_check.py $(srcdir)/*.c ; fi
./test_endswap ./test_main$(EXEEXT)
./test_file_io
./test_conversions
./test_log_printf
./test_audio_detect
./test_ima_oki_adpcm
@echo "============================================================" @echo "============================================================"
@echo @echo
@echo @echo
@ -122,10 +100,3 @@ sds.c wve.c dwd.c ogg.c xi.c sndfile.c common.c file_io.c : sndfile.h common.h
command.c pcm.c ulaw.c alaw.c float32.c double64.c ima_adpcm.c : sndfile.h common.h command.c pcm.c ulaw.c alaw.c float32.c double64.c ima_adpcm.c : sndfile.h common.h
ms_adpcm.c gsm610.c dwvw.c vox_adpcm.c interleave.c strings.c : sndfile.h common.h ms_adpcm.c gsm610.c dwvw.c vox_adpcm.c interleave.c strings.c : sndfile.h common.h
dither.c : sndfile.h common.h dither.c : sndfile.h common.h
## Do not edit or modify anything in this comment block.
## The arch-tag line is a file identity tag for the GNU Arch
## revision control system.
##
## arch-tag: fc3511e6-4230-4bcb-9c86-f728d7a06fe7

View File

@ -1,5 +1,5 @@
/* /*
** Copyright (C) 2007 Erik de Castro Lopo <erikd@mega-nerd.com> ** Copyright (C) 2007-2008 Erik de Castro Lopo <erikd@mega-nerd.com>
** **
** This program is free software; you can redistribute it and/or modify ** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU Lesser General Public License as published by ** it under the terms of the GNU Lesser General Public License as published by
@ -31,20 +31,7 @@
#include "common.h" #include "common.h"
#include "sfendian.h" #include "sfendian.h"
#include "test_main.h"
static void test_audio_detect (void) ;
int
main (void)
{
test_audio_detect () ;
return 0 ;
} /* main */
/*==============================================================================
** Test data.
*/
static unsigned char float_le_mono [] = static unsigned char float_le_mono [] =
{ 0x36, 0x86, 0x21, 0x44, 0xB5, 0xB4, 0x49, 0x44, 0xA2, 0xC0, 0x71, 0x44, 0x7B, 0xD1, 0x8C, 0x44, { 0x36, 0x86, 0x21, 0x44, 0xB5, 0xB4, 0x49, 0x44, 0xA2, 0xC0, 0x71, 0x44, 0x7B, 0xD1, 0x8C, 0x44,
@ -87,15 +74,14 @@ static unsigned char int24_32_le_stereo [] =
} ; } ;
static void void
test_audio_detect (void) test_audio_detect (void)
{ {
SF_PRIVATE psf ; SF_PRIVATE psf ;
AUDIO_DETECT ad ; AUDIO_DETECT ad ;
int errors = 0 ; int errors = 0 ;
printf (" test_audio_detect : ") ; print_test_name ("Testing audio detect") ;
fflush (stdout) ;
memset (&psf, 0, sizeof (psf)) ; memset (&psf, 0, sizeof (psf)) ;

View File

@ -1,5 +1,5 @@
/* /*
** Copyright (C) 2006,2007 Erik de Castro Lopo <erikd@mega-nerd.com> ** Copyright (C) 2006-2008 Erik de Castro Lopo <erikd@mega-nerd.com>
** **
** This program is free software; you can redistribute it and/or modify ** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU Lesser General Public License as published by ** it under the terms of the GNU Lesser General Public License as published by
@ -25,6 +25,8 @@
#include <errno.h> #include <errno.h>
#include "common.h" #include "common.h"
#include "test_main.h"
/* /*
** This is a bit rough, but it is the nicest way to do it. ** This is a bit rough, but it is the nicest way to do it.
@ -36,16 +38,6 @@
exit (1) ; \ exit (1) ; \
} ; } ;
static void conversion_test (char endian) ;
int
main (void)
{
conversion_test ('E') ;
conversion_test ('e') ;
return 0 ;
} /* main */
static void static void
conversion_test (char endian) conversion_test (char endian)
{ {
@ -53,6 +45,7 @@ conversion_test (char endian)
const char * filename = "conversion.bin" ; const char * filename = "conversion.bin" ;
long long i64 = SF_PLATFORM_S64 (0x0123456789abcdef), t64 = 0 ; long long i64 = SF_PLATFORM_S64 (0x0123456789abcdef), t64 = 0 ;
char format_str [16] ; char format_str [16] ;
char test_name [64] ;
char i8 = 12, t8 = 0 ; char i8 = 12, t8 = 0 ;
short i16 = 0x123, t16 = 0 ; short i16 = 0x123, t16 = 0 ;
int i24 = 0x23456, t24 = 0 ; int i24 = 0x23456, t24 = 0 ;
@ -61,8 +54,8 @@ conversion_test (char endian)
snprintf (format_str, sizeof (format_str), "%c12348", endian) ; snprintf (format_str, sizeof (format_str), "%c12348", endian) ;
printf (" conversion_test_%-8s : ", endian == 'e' ? "le" : "be") ; snprintf (test_name, sizeof (test_name), "Testing %s conversions", endian == 'e' ? "little endian" : "big endian") ;
fflush (stdout) ; print_test_name (test_name) ;
psf = &sf_private ; psf = &sf_private ;
memset (psf, 0, sizeof (sf_private)) ; memset (psf, 0, sizeof (sf_private)) ;
@ -99,3 +92,11 @@ conversion_test (char endian)
remove (filename) ; remove (filename) ;
puts ("ok") ; puts ("ok") ;
} /* conversion_test */ } /* conversion_test */
void
test_conversions (void)
{
conversion_test ('E') ;
conversion_test ('e') ;
} /* test_conversion */

View File

@ -32,6 +32,8 @@
#include "common.h" #include "common.h"
#include "sfendian.h" #include "sfendian.h"
#include "test_main.h"
#define FMT_SHORT "0x%04x\n" #define FMT_SHORT "0x%04x\n"
#define FMT_INT "0x%08x\n" #define FMT_INT "0x%08x\n"
@ -41,23 +43,8 @@
#define FMT_INT64 "0x%016llx\n" #define FMT_INT64 "0x%016llx\n"
#endif #endif
[+ FOR int_type
+]static void test_endswap_[+ (get "name") +] (void) ;
[+ ENDFOR int_type
+]
int
main (void)
{
[+ FOR int_type
+] test_endswap_[+ (get "name") +] () ;
[+ ENDFOR int_type
+]
return 0 ;
} /* main */
/*============================================================================== /*==============================================================================
** Actual test functions. ** Test functions.
*/ */
[+ FOR int_type +] [+ FOR int_type +]
@ -76,7 +63,7 @@ test_endswap_[+ (get "name") +] (void)
{ [+ (get "name") +] orig [4], first [4], second [4] ; { [+ (get "name") +] orig [4], first [4], second [4] ;
int k ; int k ;
printf (" %-24s : ", "test_endswap_[+ (get "name") +]") ; printf (" %-40s : ", "test_endswap_[+ (get "name") +]") ;
fflush (stdout) ; fflush (stdout) ;
for (k = 0 ; k < ARRAY_LEN (orig) ; k++) for (k = 0 ; k < ARRAY_LEN (orig) ; k++)
@ -124,3 +111,12 @@ test_endswap_[+ (get "name") +] (void)
+] +]
void
test_endswap (void)
{
[+ FOR int_type
+] test_endswap_[+ (get "name") +] () ;
[+ ENDFOR int_type
+]
} /* test_endswap */

View File

@ -1,5 +1,5 @@
/* /*
** Copyright (C) 2002-2006 Erik de Castro Lopo <erikd@mega-nerd.com> ** Copyright (C) 2002-2008 Erik de Castro Lopo <erikd@mega-nerd.com>
** **
** This program is free software; you can redistribute it and/or modify ** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU Lesser General Public License as published by ** it under the terms of the GNU Lesser General Public License as published by
@ -30,6 +30,8 @@
#include "common.h" #include "common.h"
#include "test_main.h"
static void make_data (int *data, int len, int seed) ; static void make_data (int *data, int len, int seed) ;
static void file_open_test (const char *filename) ; static void file_open_test (const char *filename) ;
@ -46,19 +48,6 @@ static void test_seek_or_die (SF_PRIVATE *psf, sf_count_t offset, int whence, sf
int
main (void)
{ const char *filename = "file_io.dat" ;
file_open_test (filename) ;
file_read_write_test (filename) ;
file_truncate_test (filename) ;
unlink (filename) ;
return 0 ;
} /* main */
/*============================================================================== /*==============================================================================
** Actual test functions. ** Actual test functions.
*/ */
@ -68,8 +57,7 @@ file_open_test (const char *filename)
{ SF_PRIVATE sf_data, *psf ; { SF_PRIVATE sf_data, *psf ;
int error ; int error ;
printf (" %-24s : ", "file_open_test") ; print_test_name ("Testing file open") ;
fflush (stdout) ;
memset (&sf_data, 0, sizeof (sf_data)) ; memset (&sf_data, 0, sizeof (sf_data)) ;
psf = &sf_data ; psf = &sf_data ;
@ -129,8 +117,7 @@ file_read_write_test (const char *filename)
** write, test that psf_get_filelen() returns the new length. ** write, test that psf_get_filelen() returns the new length.
*/ */
printf (" %-24s : ", "file_write_test") ; print_test_name ("Testing file write") ;
fflush (stdout) ;
memset (&sf_data, 0, sizeof (sf_data)) ; memset (&sf_data, 0, sizeof (sf_data)) ;
psf = &sf_data ; psf = &sf_data ;
@ -166,8 +153,7 @@ file_read_write_test (const char *filename)
** that the data is correct. ** that the data is correct.
*/ */
printf (" %-24s : ", "file_read_test") ; print_test_name ("Testing file read") ;
fflush (stdout) ;
/* Test file open in write mode. */ /* Test file open in write mode. */
psf->mode = SFM_READ ; psf->mode = SFM_READ ;
@ -191,8 +177,7 @@ file_read_write_test (const char *filename)
** go back and check that all three blocks are correct. ** go back and check that all three blocks are correct.
*/ */
printf (" %-24s : ", "file_seek_test") ; print_test_name ("Testing file seek") ;
fflush (stdout) ;
/* Test file open in read/write mode. */ /* Test file open in read/write mode. */
psf->mode = SFM_RDWR ; psf->mode = SFM_RDWR ;
@ -230,8 +215,7 @@ file_read_write_test (const char *filename)
** the file will actually be a seek to the value given by psf->fileoffset. ** the file will actually be a seek to the value given by psf->fileoffset.
*/ */
printf (" %-24s : ", "file_offset_test") ; print_test_name ("Testing file offset") ;
fflush (stdout) ;
/* Test file open in read/write mode. */ /* Test file open in read/write mode. */
psf->mode = SFM_RDWR ; psf->mode = SFM_RDWR ;
@ -287,8 +271,7 @@ file_truncate_test (const char *filename)
** write, test that psf_get_filelen() returns the new length. ** write, test that psf_get_filelen() returns the new length.
*/ */
printf (" %-24s : ", "file_truncate_test") ; print_test_name ("Testing file truncate") ;
fflush (stdout) ;
memset (&sf_data, 0, sizeof (sf_data)) ; memset (&sf_data, 0, sizeof (sf_data)) ;
memset (buffer, 0xEE, sizeof (buffer)) ; memset (buffer, 0xEE, sizeof (buffer)) ;
@ -439,10 +422,15 @@ make_data (int *data, int len, int seed)
data [k] = rand () ; data [k] = rand () ;
} /* make_data */ } /* make_data */
/*
** Do not edit or modify anything in this comment block. void
** The arch-tag line is a file identity tag for the GNU Arch test_file_io (void)
** revision control system. { const char *filename = "file_io.dat" ;
**
** arch-tag: 0a21fb93-78dd-4f72-8338-4bca9e77b8c8 file_open_test (filename) ;
*/ file_read_write_test (filename) ;
file_truncate_test (filename) ;
unlink (filename) ;
} /* main */

155
src/test_ima_oki_adpcm.c Normal file
View File

@ -0,0 +1,155 @@
/*
** Copyright (c) 2007 <robs@users.sourceforge.net>
** Copyright (C) 2007-2008 Erik de Castro Lopo <erikd@mega-nerd.com>
**
** This library is free software; you can redistribute it and/or modify it
** under the terms of the GNU Lesser General Public License as published by
** the Free Software Foundation; either version 2 of the License, or (at
** your option) any later version.
**
** This library 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 Lesser
** General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public License
** along with this library. If not, write to the Free Software Foundation,
** Fifth Floor, 51 Franklin Street, Boston, MA 02111-1301, USA.
*/
#include <stdio.h>
#include "test_main.h"
#include "ima_oki_adpcm.c"
static const unsigned char test_codes [] =
{ 0x08, 0x08, 0x04, 0x7f, 0x72, 0xf7, 0x9f, 0x7c, 0xd7, 0xbc, 0x7a, 0xa7, 0xb8,
0x4b, 0x0b, 0x38, 0xf6, 0x9d, 0x7a, 0xd7, 0xbc, 0x7a, 0xd7, 0xa8, 0x6c, 0x81,
0x98, 0xe4, 0x0e, 0x7a, 0xd7, 0x9e, 0x7b, 0xc7, 0xab, 0x7a, 0x85, 0xc0, 0xb3,
0x8f, 0x58, 0xd7, 0xad, 0x7a, 0xd7, 0xad, 0x7a, 0x87, 0xd0, 0x2b, 0x0e, 0x48,
0xd7, 0xad, 0x78, 0xf7, 0xbc, 0x7a, 0xb7, 0xa8, 0x4b, 0x88, 0x18, 0xd5, 0x8d,
0x6a, 0xa4, 0x98, 0x08, 0x00, 0x80, 0x88,
} ;
static const short test_pcm [] =
{ 32, 0, 32, 0, 32, 320, 880, -336, 2304, 4192, -992, 10128, 5360, -16352,
30208, 2272, -31872, 14688, -7040, -32432, 14128, -1392, -15488, 22960,
1232, -1584, 21488, -240, 2576, -15360, 960, -1152, -30032, 10320, 1008,
-30032, 16528, 1008, -30032, 16528, -5200, -30592, 15968, 448, -30592,
15968, 448, -2368, 30960, 3024, -80, 8384, 704, -1616, -29168, -1232, 1872,
-32768, 13792, -1728, -32768, 13792, 4480, -32192, 14368, -7360, -32752,
13808, -1712, -21456, 16992, 1472, -1344, 26848, -1088, 2016, -17728, 208,
-2112, -32768, 1376, -1728, -32768, 13792, -1728, -32768, 13792, -1728,
-32768, 13792, -1728, -32768, 13792, -1728, -4544, 32767, -1377, 1727,
15823, -2113, 207, -27345, 591, -2513, -32768, 13792, -1728, -32768, 13792,
10688, -31632, 14928, -6800, -32192, 14368, -1152, -20896, 17552, 2032,
-784, 22288, 560, -2256, -4816, 2176, 64, -21120, 9920, 6816, -24224, 16128,
608, -13488, 9584, 272, -2544, 16, -2304, -192, 1728, -16, 1568, 128, -1184,
} ;
static void
test_oki_adpcm (void)
{
IMA_OKI_ADPCM adpcm ;
unsigned char code ;
int i, j ;
print_test_name ("Testing ima/oki encoder") ;
ima_oki_adpcm_init (&adpcm, IMA_OKI_ADPCM_TYPE_OKI) ;
for (i = 0 ; i < ARRAY_LEN (test_codes) ; i++)
for (j = 0, code = test_codes [i] ; j < 2 ; j++, code <<= 4)
if (adpcm_decode (&adpcm, code >> 4) != test_pcm [2 * i + j])
{ printf ("\n\nFail at i = %d, j = %d.\n\n", i, j) ;
exit (1) ;
} ;
puts ("ok") ;
print_test_name ("Testing ima/oki decoder") ;
ima_oki_adpcm_init (&adpcm, IMA_OKI_ADPCM_TYPE_OKI) ;
for (i = 0 ; i < ARRAY_LEN (test_pcm) ; i += j)
{ code = adpcm_encode (&adpcm, test_pcm [i]) ;
code = (code << 4) | adpcm_encode (&adpcm, test_pcm [i + 1]) ;
if (code != test_codes [i / 2])
{ printf ("\n\nFail at i = %d, %d should be %d\n\n", i, code, test_codes [i / 2]) ;
exit (1) ;
} ;
} ;
puts ("ok") ;
} /* test_oki_adpcm */
static void
test_oki_adpcm_block (void)
{
IMA_OKI_ADPCM adpcm ;
int k ;
if (ARRAY_LEN (adpcm.pcm) < ARRAY_LEN (test_pcm))
{ printf ("\n\nLine %d : ARRAY_LEN (adpcm->pcm) > ARRAY_LEN (test_pcm) (%d > %d).\n\n", __LINE__, ARRAY_LEN (adpcm.pcm), ARRAY_LEN (test_pcm)) ;
exit (1) ;
} ;
if (ARRAY_LEN (adpcm.codes) < ARRAY_LEN (test_codes))
{ printf ("\n\nLine %d : ARRAY_LEN (adcodes->codes) > ARRAY_LEN (test_codes).n", __LINE__) ;
exit (1) ;
} ;
print_test_name ("Testing ima/oki block encoder") ;
ima_oki_adpcm_init (&adpcm, IMA_OKI_ADPCM_TYPE_OKI) ;
memcpy (adpcm.pcm, test_pcm, sizeof (adpcm.pcm [0]) * ARRAY_LEN (test_pcm)) ;
adpcm.pcm_count = ARRAY_LEN (test_pcm) ;
adpcm.code_count = 13 ;
ima_oki_adpcm_encode_block (&adpcm) ;
if (adpcm.code_count * 2 != ARRAY_LEN (test_pcm))
{ printf ("\n\nLine %d : %d * 2 != %d\n\n", __LINE__, adpcm.code_count * 2, ARRAY_LEN (test_pcm)) ;
exit (1) ;
} ;
for (k = 0 ; k < ARRAY_LEN (test_codes) ; k++)
if (adpcm.codes [k] != test_codes [k])
{ printf ("\n\nLine %d : Fail at k = %d, %d should be %d\n\n", __LINE__, k, adpcm.codes [k], test_codes [k]) ;
exit (1) ;
} ;
puts ("ok") ;
print_test_name ("Testing ima/oki block decoder") ;
ima_oki_adpcm_init (&adpcm, IMA_OKI_ADPCM_TYPE_OKI) ;
memcpy (adpcm.codes, test_codes, sizeof (adpcm.codes [0]) * ARRAY_LEN (test_codes)) ;
adpcm.code_count = ARRAY_LEN (test_codes) ;
adpcm.pcm_count = 13 ;
ima_oki_adpcm_decode_block (&adpcm) ;
if (adpcm.pcm_count != 2 * ARRAY_LEN (test_codes))
{ printf ("\n\nLine %d : %d * 2 != %d\n\n", __LINE__, adpcm.pcm_count, 2 * ARRAY_LEN (test_codes)) ;
exit (1) ;
} ;
for (k = 0 ; k < ARRAY_LEN (test_pcm) ; k++)
if (adpcm.pcm [k] != test_pcm [k])
{ printf ("\n\nLine %d : Fail at i = %d, %d should be %d.\n\n", __LINE__, k, adpcm.pcm [k], test_pcm [k]) ;
exit (1) ;
} ;
puts ("ok") ;
} /* test_oki_adpcm_block */
void
test_ima_oki_adpcm (void)
{
test_oki_adpcm () ;
test_oki_adpcm_block () ;
} /* main */

View File

@ -1,5 +1,5 @@
/* /*
** Copyright (C) 2003-2005 Erik de Castro Lopo <erikd@mega-nerd.com> ** Copyright (C) 2003-2008 Erik de Castro Lopo <erikd@mega-nerd.com>
** **
** This program is free software; you can redistribute it and/or modify ** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU Lesser General Public License as published by ** it under the terms of the GNU Lesser General Public License as published by
@ -26,6 +26,8 @@
#include "common.h" #include "common.h"
#include "test_main.h"
#define CMP_0_ARGS(line,err,fmt) \ #define CMP_0_ARGS(line,err,fmt) \
{ psf->logindex = 0 ; \ { psf->logindex = 0 ; \
LSF_SNPRINTF (buffer, sizeof (buffer), (fmt)) ; \ LSF_SNPRINTF (buffer, sizeof (buffer), (fmt)) ; \
@ -61,17 +63,29 @@
err += compare_strings_or_die (line, fmt, buffer, psf->logbuffer) ; \ err += compare_strings_or_die (line, fmt, buffer, psf->logbuffer) ; \
} }
static int compare_strings_or_die (int linenum, const char *fmt, const char* s1, const char* s3) ; static int
compare_strings_or_die (int linenum, const char *fmt, const char* s1, const char* s2)
{ int errors = 0 ;
/*-puts (s1) ;puts (s2) ;-*/
int if (strcmp (s1, s2) != 0)
main (void) { printf ("\n\nLine %d: string compare mismatch:\n\t", linenum) ;
printf ("\"%s\"\n", fmt) ;
printf ("\t\"%s\"\n\t\"%s\"\n", s1, s2) ;
errors ++ ;
} ;
return errors ;
} /* compare_strings_or_die */
void
test_log_printf (void)
{ static char buffer [2048] ; { static char buffer [2048] ;
SF_PRIVATE sf_private, *psf ; SF_PRIVATE sf_private, *psf ;
int k, errors = 0 ; int k, errors = 0 ;
int int_values [] = { 0, 1, 12, 123, 1234, 123456, -1, -12, -123, -1234, -123456 } ; int int_values [] = { 0, 1, 12, 123, 1234, 123456, -1, -12, -123, -1234, -123456 } ;
printf (" %-24s : ", "psf_log_printf_test") ; print_test_name ("Testing psf_log_printf") ;
fflush (stdout) ;
psf = &sf_private ; psf = &sf_private ;
memset (psf, 0, sizeof (sf_private)) ; memset (psf, 0, sizeof (sf_private)) ;
@ -105,29 +119,5 @@ main (void)
} ; } ;
puts ("ok") ; puts ("ok") ;
} /* test_log_printf */
return 0 ;
} /* main */
static int
compare_strings_or_die (int linenum, const char *fmt, const char* s1, const char* s2)
{ int errors = 0 ;
/*-puts (s1) ;puts (s2) ;-*/
if (strcmp (s1, s2) != 0)
{ printf ("\n\nLine %d: string compare mismatch:\n\t", linenum) ;
printf ("\"%s\"\n", fmt) ;
printf ("\t\"%s\"\n\t\"%s\"\n", s1, s2) ;
errors ++ ;
} ;
return errors ;
} /* compare_strings_or_die */
/*
** Do not edit or modify anything in this comment block.
** The arch-tag line is a file identity tag for the GNU Arch
** revision control system.
**
** arch-tag: 45147310-868b-400a-97e8-cc0a572a6270
*/

43
src/test_main.c Normal file
View File

@ -0,0 +1,43 @@
/*
** Copyright (C) 2008 Erik de Castro Lopo <erikd@mega-nerd.com>
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU Lesser General Public License as published by
** the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser 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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <errno.h>
#include "test_main.h"
int
main (void)
{
test_conversions () ;
test_endswap () ;
test_log_printf () ;
test_file_io () ;
test_audio_detect () ;
test_ima_oki_adpcm () ;
return 0 ;
} /* main */

33
src/test_main.h Normal file
View File

@ -0,0 +1,33 @@
/*
** Copyright (C) 2008 Erik de Castro Lopo <erikd@mega-nerd.com>
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU Lesser General Public License as published by
** the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser 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.
*/
static inline void
print_test_name (const char * name)
{ printf (" %-40s : ", name) ;
fflush (stdout) ;
} /* print_test_name */
void test_conversions (void) ;
void test_endswap (void) ;
void test_log_printf (void) ;
void test_file_io (void) ;
void test_audio_detect (void) ;
void test_ima_oki_adpcm (void) ;