Mercurial > hg > svcore
changeset 1437:de385fed1197 streaming-csv-writer
Revert to adding a test case in the style of the existing file
author | Lucas Thompson <dev@lucas.im> |
---|---|
date | Tue, 17 Apr 2018 10:03:49 +0100 |
parents | d61d6c33f14d |
children | 09c2ba31a711 |
files | data/fileio/test/files.pri data/fileio/test/svcore-data-fileio-test.cpp test/TestHelper.h |
diffstat | 3 files changed, 47 insertions(+), 87 deletions(-) [+] |
line wrap: on
line diff
--- a/data/fileio/test/files.pri Tue Apr 17 10:03:49 2018 +0100 +++ b/data/fileio/test/files.pri Tue Apr 17 10:03:49 2018 +0100 @@ -1,6 +1,5 @@ TEST_HEADERS += \ - ../../../test/TestHelper.h \ ../../model/test/MockWaveModel.h \ AudioFileReaderTest.h \ AudioFileWriterTest.h \
--- a/data/fileio/test/svcore-data-fileio-test.cpp Tue Apr 17 10:03:49 2018 +0100 +++ b/data/fileio/test/svcore-data-fileio-test.cpp Tue Apr 17 10:03:49 2018 +0100 @@ -12,15 +12,20 @@ COPYING included with this distribution for more information. */ -#include "../../../test/TestHelper.h" #include "AudioFileReaderTest.h" #include "AudioFileWriterTest.h" #include "EncodingTest.h" #include "MIDIFileReaderTest.h" #include "CSVStreamWriterTest.h" +#include <QtTest> + +#include <iostream> + int main(int argc, char *argv[]) { + int good = 0, bad = 0; + QString testDir; #ifdef Q_OS_WIN @@ -38,16 +43,45 @@ cerr << "Setting test directory base path to \"" << testDir << "\"" << endl; } - return Test::startTestRunner( - { - Test::createFactory<AudioFileReaderTest>(testDir), - Test::createFactory<AudioFileWriterTest>(testDir), - Test::createFactory<EncodingTest>(testDir), - Test::createFactory<MIDIFileReaderTest>(testDir), - Test::createFactory<CSVStreamWriterTest>() - }, - argc, - argv, - "test-fileio" - ); + QCoreApplication app(argc, argv); + app.setOrganizationName("sonic-visualiser"); + app.setApplicationName("test-fileio"); + + { + AudioFileReaderTest t(testDir); + if (QTest::qExec(&t, argc, argv) == 0) ++good; + else ++bad; + } + + { + AudioFileWriterTest t(testDir); + if (QTest::qExec(&t, argc, argv) == 0) ++good; + else ++bad; + } + + { + EncodingTest t(testDir); + if (QTest::qExec(&t, argc, argv) == 0) ++good; + else ++bad; + } + + { + MIDIFileReaderTest t(testDir); + if (QTest::qExec(&t, argc, argv) == 0) ++good; + else ++bad; + } + + { + CSVStreamWriterTest t; + if (QTest::qExec(&t, argc, argv) == 0) ++good; + else ++bad; + } + + if (bad > 0) { + cerr << "\n********* " << bad << " test suite(s) failed!\n" << endl; + return 1; + } else { + cerr << "All tests passed" << endl; + return 0; + } }
--- a/test/TestHelper.h Tue Apr 17 10:03:49 2018 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ - -/* - Sonic Visualiser - An audio file viewer and annotation editor. - Centre for Digital Music, Queen Mary, University of London. - This file copyright 2017 Lucas Thompson. - - 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. See the file - COPYING included with this distribution for more information. -*/ - -#ifndef _TEST_HELPER_H_ -#define _TEST_HELPER_H_ - -#include <initializer_list> -#include <memory> -#include <iostream> -#include <functional> - -#include <QtTest> - -namespace Test -{ - -template <class T> -using Factory = std::function<std::unique_ptr<T>()>; - -template <class T, typename... Args> -auto createFactory(Args... FArgs) -> Factory<T> -{ - return [&]() { return std::unique_ptr<T> { new T {FArgs...} }; }; -} - -using TestStatus = int; - -auto startTestRunner( - std::initializer_list<Factory<QObject>> tests, - int argc, - char *argv[], - QString testName, - QString orgName = "sonic-visualiser" -) -> TestStatus -{ - int good = 0, bad = 0; - - QCoreApplication app(argc, argv); - app.setOrganizationName(orgName); - app.setApplicationName(testName); - auto executeTest = [&](std::unique_ptr<QObject> t) { - if (QTest::qExec(t.get(), argc, argv) == 0) ++good; - else ++bad; - }; - - for (const auto& test : tests) { - executeTest(test()); - } - - if (bad > 0) { - std::cerr << "\n********* " << bad << " test suite(s) failed!\n" << std::endl; - return 1; - } else { - std::cerr << "All tests passed" << std::endl; - return 0; - } -} - -} // namespace - -#endif \ No newline at end of file