# HG changeset patch # User Chris Cannam # Date 1528384722 -3600 # Node ID 5afbac960a3009b6c2688233f2b5d7d09a55c7cf # Parent bd1a2cacd1e7c7dacf3cdc582ed8bb2310ec6bc4 Environment var tests (beginnings of) diff -r bd1a2cacd1e7 -r 5afbac960a30 data/model/test/svcore-data-model-test.cpp --- a/data/model/test/svcore-data-model-test.cpp Thu Jun 07 15:35:04 2018 +0100 +++ b/data/model/test/svcore-data-model-test.cpp Thu Jun 07 16:18:42 2018 +0100 @@ -34,10 +34,10 @@ } if (bad > 0) { - SVCERR << "\n********* " << bad << " test suite(s) failed!\n" << endl; + SVCERR << "\n********* " << bad << " test suite(s) failed!\n" << endl; return 1; } else { - SVCERR << "All tests passed" << endl; + SVCERR << "All tests passed" << endl; return 0; } } diff -r bd1a2cacd1e7 -r 5afbac960a30 system/test/TestEnv.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/system/test/TestEnv.h Thu Jun 07 16:18:42 2018 +0100 @@ -0,0 +1,94 @@ +/* -*- 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 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_ENV_H +#define TEST_ENV_H + +#include "../System.h" + +#include +#include +#include + +#include + +using namespace std; + +const std::string utf8_name_sprkt = "\343\202\271\343\203\235\343\203\274\343\202\257\343\201\256\345\257\272\351\231\242"; + +class TestEnv : public QObject +{ + Q_OBJECT + +private slots: + void getAbsent() + { + string value = "blather"; + bool rv = getEnvUtf8("nonexistent_environment_variable_I_sincerely_hope_including_a_missspellling_just_to_be_sure", + value); + QCOMPARE(rv, false); + QCOMPARE(value, ""); + } + + void roundTripAsciiAscii() + { + bool rv = false; + rv = putEnvUtf8("SV_CORE_TEST_SYSTEM_RT_A_A", "EXPECTED_VALUE"); + QCOMPARE(rv, true); + string value; + rv = getEnvUtf8("SV_CORE_TEST_SYSTEM_RT_A_A", value); + QCOMPARE(rv, true); + QCOMPARE(value, "EXPECTED_VALUE"); + } + + void roundTripAsciiUtf8() + { + bool rv = false; + rv = putEnvUtf8("SV_CORE_TEST_SYSTEM_RT_A_U", utf8_name_sprkt); + QCOMPARE(rv, true); + string value; + rv = getEnvUtf8("SV_CORE_TEST_SYSTEM_RT_A_U", value); + QCOMPARE(rv, true); + QCOMPARE(value, utf8_name_sprkt); + } + + void roundTripUtf8Ascii() + { + bool rv = false; + rv = putEnvUtf8("SV_CORE_TEST_SYSTEM_RT_\351\207\215\345\272\206_A", "EXPECTED_VALUE"); + QCOMPARE(rv, true); + string value; + rv = getEnvUtf8("SV_CORE_TEST_SYSTEM_RT_\351\207\215\345\272\206_A", value); + QCOMPARE(rv, true); + QCOMPARE(value, "EXPECTED_VALUE"); + } + + void roundTripUtf8Utf8() + { + bool rv = false; + rv = putEnvUtf8("SV_CORE_TEST_SYSTEM_RT_\351\207\215\345\272\206_A", utf8_name_sprkt); + QCOMPARE(rv, true); + string value; + rv = getEnvUtf8("SV_CORE_TEST_SYSTEM_RT_\351\207\215\345\272\206_A", value); + QCOMPARE(rv, true); + QCOMPARE(value, utf8_name_sprkt); + } +}; + +#endif + + + + + diff -r bd1a2cacd1e7 -r 5afbac960a30 system/test/files.pri --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/system/test/files.pri Thu Jun 07 16:18:42 2018 +0100 @@ -0,0 +1,5 @@ +TEST_HEADERS = \ + TestEnv.h + +TEST_SOURCES += \ + svcore-system-test.cpp diff -r bd1a2cacd1e7 -r 5afbac960a30 system/test/svcore-system-test.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/system/test/svcore-system-test.cpp Thu Jun 07 16:18:42 2018 +0100 @@ -0,0 +1,41 @@ +/* -*- 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 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. +*/ + +#include "TestEnv.h" + +#include + +#include + +int main(int argc, char *argv[]) +{ + int good = 0, bad = 0; + + QCoreApplication app(argc, argv); + app.setOrganizationName("sonic-visualiser"); + app.setApplicationName("test-svcore-system"); + + { + TestEnv t; + if (QTest::qExec(&t, argc, argv) == 0) ++good; + else ++bad; + } + + if (bad > 0) { + SVCERR << "\n********* " << bad << " test suite(s) failed!\n" << endl; + return 1; + } else { + SVCERR << "All tests passed" << endl; + return 0; + } +}