diff --git a/.gitignore b/.gitignore index 92d04f80..08719fe7 100644 --- a/.gitignore +++ b/.gitignore @@ -126,6 +126,7 @@ tests/log_unlink_test tests/mcast_recv_test tests/metadata_wildcard_test tests/notification_test +tests/rdwavefile_test tests/rdxml_parse_test tests/readcd_test tests/reserve_carts_test diff --git a/ChangeLog b/ChangeLog index 71fbf6c0..00090054 100644 --- a/ChangeLog +++ b/ChangeLog @@ -20816,3 +20816,5 @@ 2021-10-06 Fred Gleason * Fixed an arithmetic overflow bug in 'RDWaveFile' that could cause the play length of MPEG-encoded to be incorrectly calculated. +2021-10-06 Fred Gleason + * Added an 'rdwavefile_test' test harness in 'tests/'. diff --git a/tests/Makefile.am b/tests/Makefile.am index 0d45ffc7..7669ec4e 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,6 +1,6 @@ ## Makefile.am ## -## (C) Copyright 2002-2020 Fred Gleason +## (C) Copyright 2002-2021 Fred Gleason ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License version 2 as @@ -43,6 +43,7 @@ noinst_PROGRAMS = audio_convert_test\ mcast_recv_test\ metadata_wildcard_test\ notification_test\ + rdwavefile_test\ rdxml_parse_test\ readcd_test\ reserve_carts_test\ @@ -109,6 +110,10 @@ dist_notification_test_SOURCES = notification_test.cpp notification_test.h nodist_notification_test_SOURCES = moc_notification_test.cpp notification_test_LDADD = @LIB_RDLIBS@ @LIBVORBIS@ @QT4_LIBS@ @MUSICBRAINZ_LIBS@ -lQt3Support +dist_rdwavefile_test_SOURCES = rdwavefile_test.cpp rdwavefile_test.h +nodist_rdwavefile_test_SOURCES = moc_rdwavefile_test.cpp +rdwavefile_test_LDADD = @LIB_RDLIBS@ @LIBVORBIS@ @QT4_LIBS@ @MUSICBRAINZ_LIBS@ -lQt3Support + dist_rdxml_parse_test_SOURCES = rdxml_parse_test.cpp rdxml_parse_test.h rdxml_parse_test_LDADD = @LIB_RDLIBS@ @LIBVORBIS@ @QT4_LIBS@ @MUSICBRAINZ_LIBS@ -lQt3Support diff --git a/tests/rdwavefile_test.cpp b/tests/rdwavefile_test.cpp new file mode 100644 index 00000000..ff0fa310 --- /dev/null +++ b/tests/rdwavefile_test.cpp @@ -0,0 +1,75 @@ +// rdwavefile_test.cpp +// +// Test the Rivendell RDWaveFile class. +// +// (C) Copyright 2021 Fred Gleason +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License version 2 as +// published by the Free Software Foundation. +// +// 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., 675 Mass Ave, Cambridge, MA 02139, USA. +// + +#include +#include + +#include + +#include +#include +#include + +#include "rdwavefile_test.h" + +MainObject::MainObject(QObject *parent) + : QObject(parent) +{ + QString filename; + RDWaveData *wavedata=new RDWaveData(); + RDWaveFile *wavefile=NULL; + + RDCmdSwitch *cmd=new RDCmdSwitch(qApp->argc(),qApp->argv(), + "rdwavefile_test",RDWAVEFILE_TEST_USAGE); + for(unsigned i=0;ikeys();i++) { + if(cmd->key(i)=="--filename") { + filename=cmd->value(i); + cmd->setProcessed(i,true); + } + if(!cmd->processed(i)) { + fprintf(stderr,"rdwavefile_test: unrecognized option \"%s\"\n", + cmd->key(i).toUtf8().constData()); + exit(1); + } + } + if(filename.isEmpty()) { + fprintf(stderr,"rdwavefile_test: you must supply --filename=\n"); + exit(1); + } + + wavefile=new RDWaveFile(filename); + if(!wavefile->openWave(wavedata)) { + fprintf(stderr,"rdwavefile_test: unable to open file\n"); + exit(1); + } + + printf("DONE\n"); + + exit(0); +} + + +int main(int argc,char *argv[]) +{ + QCoreApplication a(argc,argv); + + new MainObject(); + return a.exec(); +} diff --git a/tests/rdwavefile_test.h b/tests/rdwavefile_test.h new file mode 100644 index 00000000..bb857fb5 --- /dev/null +++ b/tests/rdwavefile_test.h @@ -0,0 +1,36 @@ +// rdwavefile_test.h +// +// Test the Rivendell RDWaveFile class. +// +// (C) Copyright 2021 Fred Gleason +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License version 2 as +// published by the Free Software Foundation. +// +// 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., 675 Mass Ave, Cambridge, MA 02139, USA. +// + +#ifndef RDWAVEFILE_TEST_H +#define RDWAVEFILE_TEST_H + +#include + +#define RDWAVEFILE_TEST_USAGE "--filename=\n\n" + +class MainObject : public QObject +{ + Q_OBJECT; + public: + MainObject(QObject *parent=0); +}; + + +#endif // RDWAVEFILE_TEST_H