Mercurial > qtargs
view src/UNIT_TESTS/qargsut.hpp @ 0:04ad7227e290
Rebuilding structure for development.
author | John Schneiderman <JohnMS@CodeGNU.com> |
---|---|
date | Sat, 14 Jun 2014 13:17:37 +0000 |
parents | |
children | 2e08e35922c9 |
line wrap: on
line source
/******************************************************************************* *** This file is part of QtArgs. *** *** *** *** Copyright (C) 2011, 2012, 2014 *** *** CodeGNU Solutions <Licensing _AT_ CodeGNU _DOT_ 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 3 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, see *** *** <http://www.gnu.org/licenses/>. *** *******************************************************************************/ #ifndef QARGSUT_HPP_ #define QARGSUT_HPP_ #include "qargs.h" #include <QTest> #include <QObject> #include <QMap> #include <QString> #include <QStringList> #include <QByteArray> #include <QDebug> #include <QSignalSpy> #include <QList> #include <QVariant> #include <stdexcept> using std::domain_error; using std::runtime_error; using std::logic_error; /** * QArgs Unit Test * * Full unit test for all the components of QArgs. Each member function is * tested for handling both valid and invalid data. Those member functions * that fire signals are verified as well. Any exceptions thrown by a member * function is verified for both throwing and not throwing the specified * exception. */ class QArgsUT: public QObject { Q_OBJECT /// Assumed operating system marker, '?' in Windows and 'h' in Unix. const QChar MARKER; /// Argument value used for testing short name options. const char* const shortValueTest; /// Number of arguments tested static const int ARGC = 8; /// Container to represent the arguments from an user. const char* argv[ARGC]; /// First argument as the application running. const char* const arg0; /// Short-name argument test option. const char* const arg1; /// Value for the short-named argument. const char* const arg2; /// Long-name argument test option and the value in Unix. const char* const arg3; /// Long-name argument value in Windows. const char* const arg4; /// Short-name help option test const char* const arg5; /// Long-name help option test const char* const arg6; /// Flag option test const char* const arg7; public: /// Default construct for testing QArgsUT(): QObject(NULL), #ifdef Q_OS_WIN32 MARKER('/'), shortValueTest("/v"), arg0("C:\\QtMGW\\QtArgs\\qargsut.exe"), // Not a valid argument arg1("/i"), // First half of a short named argument arg2("5"), // value for the short named argument arg3("/double"), // Whole argument arg4("25.25"), // Whole argument value arg5("/?"), // short help arg6("/help"), // long help arg7("/f") // Flag argument #else MARKER('-'), shortValueTest("-v"), arg0("/usr/bin/qargsut"), // Not a valid argument arg1("-i"), // First half of a short named argument arg2("5"), // value for the short named argument arg3("--double=25.25"), // Whole argument arg4(""), // Unix whole values are together arg5("-h"), // short help arg6("--help"), // long help arg7("-f") // Flag argument #endif { qDebug() << "Detected OS marker:" << MARKER; argv[0] = arg0; argv[1] = arg1; argv[2] = arg2; argv[3] = arg3; argv[4] = arg4; argv[5] = arg5; argv[6] = arg6; argv[7] = arg7; } private slots: #ifndef QT_NO_DEBUG_OUTPUT /// Test argument constructor void constructor() { QArgs args(ARGC, argv); QVERIFY(args.mArguments.count() == ARGC); QVERIFY(args.mArguments[0] == arg0); QVERIFY(args.mArguments[1] == arg1); QVERIFY(args.mArguments[2] == arg2); QVERIFY(args.mArguments[3] == arg3); QVERIFY(args.mArguments[4] == arg4); QVERIFY(args.mArguments[5] == arg5); QVERIFY(args.mArguments[6] == arg6); QVERIFY(args.mArguments[7] == arg7); // Verify help is established QVERIFY(args.mSupported.value(QArgs::SHORT_HELP).shortName == QArgs::SHORT_HELP); QVERIFY(args.mSupported.value(QArgs::SHORT_HELP).longName == "help"); QVERIFY(args.mSupported.value( QArgs::SHORT_HELP).description.isEmpty()); QVERIFY(args.mSupported.value(QArgs::SHORT_HELP).needsValue == false); QVERIFY(args.mSupported.value(QArgs::SHORT_HELP).required == false); QVERIFY(args.mIsCaseSensative == true); QVERIFY(args.mIsLocked == false); } /// Test adding argument support void addSupported() { QArgs args(ARGC, argv); // Test normal support usage args.addSupported('i', "integer", "Whole number test", true, true); args.addSupported('d', "double", "Real number test", true); args.addSupported('f', "flag", "Flag test"); QVERIFY(args.mSupported.value('i').shortName == 'i'); QVERIFY(args.mSupported.value('i').longName == "integer"); QVERIFY(args.mSupported.value('i').description == "Whole number test"); QVERIFY(args.mSupported.value('i').needsValue == true); QVERIFY(args.mSupported.value('i').required == true); QVERIFY(args.mSupported.value('d').shortName == 'd'); QVERIFY(args.mSupported.value('d').longName == "double"); QVERIFY(args.mSupported.value('d').description == "Real number test"); QVERIFY(args.mSupported.value('d').needsValue == true); QVERIFY(args.mSupported.value('d').required == false); QVERIFY(args.mSupported.value('f').shortName == 'f'); QVERIFY(args.mSupported.value('f').longName == "flag"); QVERIFY(args.mSupported.value('f').description == "Flag test"); QVERIFY(args.mSupported.value('f').needsValue == false); QVERIFY(args.mSupported.value('f').required == false); // Test exception cases try { args.addSupported('h', "question", "Short help test"); QVERIFY2(false, "Short help argument not caught"); } catch (domain_error& error) { qDebug() << error.what(); } try { args.addSupported('?', "win-question", "Short help for Windows test"); QVERIFY2(false, "Short help argument for Windows not caught"); } catch (domain_error& error) { qDebug() << error.what(); } try { args.addSupported('p', "help", "Long help test"); QVERIFY2(false, "Long help argument not caught"); } catch (domain_error& error) { qDebug() << error.what(); } try { args.addSupported(' ', "aaaa", "Empty argument short test"); QVERIFY2(false, "Empty short argument not caught"); } catch (logic_error& error) { qDebug() << error.what(); } try { args.addSupported('e', " ", "Empty argument long test"); QVERIFY2(false, "Empty long argument not caught"); } catch (logic_error& error) { qDebug() << error.what(); } try { args.addSupported('r', "required", "Required test", false, true); QVERIFY2(false, "Required not caught"); } catch (runtime_error& error) { qDebug() << error.what(); } try { args.addSupported('a', "longA1", "First in repeated short option " "name test"); args.addSupported('a', "longA2", "The repeated short option " "name test"); QVERIFY2(false, "Repeated short option name not caught"); } catch (logic_error& error) { qDebug() << error.what(); } try { args.addSupported('b', "longB", "First in repeated long option " "name test"); args.addSupported('c', "longB", "The repeated long option " "name test"); QVERIFY2(false, "Repeated long option name not caught"); } catch (logic_error& error) { qDebug() << error.what(); } } /// Test verification of supported arguments void verifySupport() { try { QArgs args(ARGC, argv); args.addSupported('i', "integer", "Whole number test", true, true); args.addSupported('d', "double", "Real number test", true); args.addSupported('f', "flag", "Flag test"); args.verifySupport(); QVERIFY(true); } catch(runtime_error& error) { qDebug() << error.what(); QVERIFY2(false, "Short & long arguments provided, and are " "listed as supported"); } try { QArgs args(ARGC, argv); args.verifySupport(); QVERIFY2(false, "Short & long arguments not provided, but none " "listed as supported"); } catch(logic_error& error) { qDebug() << error.what(); } try { QArgs args(ARGC, argv); args.addSupported('i', "integer", "Whole number test", true, true); args.addSupported('d', "double", "Real number test", true); args.verifySupport(); QVERIFY2(false, "Short & long arguments provided, but some are " "not listed as supported"); } catch(runtime_error& error) { qDebug() << error.what(); } } // Test argument list lock void argumentListLock() { try { QArgs args(ARGC, argv); QVERIFY2(false == args.mIsLocked, "Arguments list not " "locked test."); args.lock(); QVERIFY2(true == args.mIsLocked, "Arguments list locked test."); args.addSupported('a', "longA", "Test argument adding after lock."); QVERIFY2(false, "Test argument adding after lock failed."); } catch(logic_error& error) { qDebug() << error.what(); } } /// Test index of a short name argument void shortNameIndex() { QArgs args(ARGC, argv); args.addSupported('i', "integer", "Whole number test", true, true); args.addSupported('d', "double", "Real number test", true); args.addSupported('f', "flag", "Flag test"); QVERIFY(args.shortNameIndex('i') == 1); QVERIFY(args.shortNameIndex('d') == -1); #ifdef Q_OS_WIN32 QVERIFY(args.shortNameIndex('?') == 5); QVERIFY(args.shortNameIndex('h') == -1); #else QVERIFY(args.shortNameIndex('h') == 5); QVERIFY(args.shortNameIndex('?') == -1); #endif QVERIFY(args.shortNameIndex('f') == 7); QVERIFY(args.shortNameIndex('a') == -1); } /// Test index of a long name argument void longNameIndex() { { QArgs args(ARGC, argv); args.addSupported('i', "integer", "Whole number test", true, true); args.addSupported('d', "double", "Real number test", true); args.addSupported('f', "flag", "Flag test"); QVERIFY(args.longNameIndex('i') == -1); QVERIFY(args.longNameIndex('d') == 3); #ifdef Q_OS_WIN32 QVERIFY(args.longNameIndex('?') == 6); QVERIFY(args.longNameIndex('h') == -1); #else QVERIFY(args.longNameIndex('h') == 6); QVERIFY(args.longNameIndex('?') == -1); #endif QVERIFY(args.longNameIndex('f') == -1); QVERIFY(args.longNameIndex('a') == -1); } { QArgs args(ARGC, argv); // Arguments not listed QVERIFY(args.longNameIndex('i') == -1); QVERIFY(args.longNameIndex('d') == -1); #ifdef Q_OS_WIN32 QVERIFY(args.longNameIndex('?') == 6); #else QVERIFY(args.longNameIndex('h') == 6); #endif QVERIFY(args.longNameIndex('f') == -1); } } #endif /// Test arguments accessor void arguments() { QArgs args(ARGC, argv); QStringList argsTest(args.arguments()); QVERIFY(argsTest.count() == ARGC); QVERIFY(argsTest[0] == arg0); QVERIFY(argsTest[1] == arg1); QVERIFY(argsTest[2] == arg2); QVERIFY(argsTest[3] == arg3); QVERIFY(argsTest[4] == arg4); QVERIFY(argsTest[5] == arg5); QVERIFY(argsTest[6] == arg6); QVERIFY(argsTest[7] == arg7); } /// Test marker accessor void marker() { QArgs args(ARGC, argv); QVERIFY(args.marker() == MARKER); } /// Test count void count() { { // Only application name test #ifdef Q_OS_WIN32 const char* argvValue[1] = { "C:\bin\bash" }; #else const char* argvValue[1] = { "/bin/sh" }; #endif QArgs args(1, argvValue); QVERIFY(args.count() == 0); } { // No Argument test #ifdef Q_OS_WIN32 const char* argvValue[3] = { "C:\bin\bash", "v", "dfd" }; #else const char* argvValue[3] = { "/bin/sh", "v", "dfd" }; #endif QArgs args(3, argvValue); QVERIFY(args.count() == 0); } { QArgs args(ARGC, argv); // Valid arguments that are counted: -i, --double, -h, --help, -f QVERIFY(args.count() == 5); } } /// Test automated help test support void hasHelp() { { const char* help[1] = { arg5 }; QArgs args(1, help); QVERIFY(args.hasHelp() == true); } { const char* help[1] = { arg6 }; QArgs args(1, help); QVERIFY(args.hasHelp() == true); } { const char* help[1] = { arg1 }; // no help QArgs args(1, help); QVERIFY(args.hasHelp() == false); } } /// Test automated display help /// @todo verify the standard output buffer contains the same text as /// the signal fired. void showHelp() { QArgs args(ARGC, argv); QSignalSpy help(&args, SIGNAL(help(const QString&))); args.addSupported('i', "integer", "Whole number test", true, true); args.addSupported('d', "double", "Real number test", true); args.addSupported('f', "flag", "Flag test"); QVERIFY(help.isValid()); args.showHelp(); QVERIFY(help.count() == 1); QList< QVariant > arguments(help.takeAt(0)); QString text(arguments.at(0).toString()); #ifdef Q_OS_WIN32 # ifdef QT_NO_DEBUG_OUTPUT QVERIFY(text.startsWith("usage: qtargsut.exe [options]")); # else QVERIFY(text.startsWith("usage: qtargsutd.exe [options]")); # endif QVERIFY(text.contains("Options:")); QVERIFY(text.contains(" /d <value>")); QVERIFY(text.contains("Real number test")); QVERIFY(text.contains(" /f")); QVERIFY(text.contains("Flag test")); QVERIFY(text.contains(" /i <value>")); QVERIFY(text.contains("Whole number test")); #else # ifdef QT_NO_DEBUG_OUTPUT QVERIFY(text.startsWith("usage: qtargsut [options]")); # else QVERIFY(text.startsWith("usage: qtargsutd [options]")); # endif QVERIFY(text.contains("Options:")); QVERIFY(text.contains(" -d <value>")); QVERIFY(text.contains("Real number test")); QVERIFY(text.contains(" -f")); QVERIFY(text.contains("Flag test")); QVERIFY(text.contains(" -i <value>")); QVERIFY(text.contains("Whole number test")); #endif } /// Test display about /// @todo verify the standard output buffer contains the same text as /// the signal fired. void showAbout() { QArgs args(ARGC, argv); QSignalSpy about(&args, SIGNAL(about(const QString&))); QVERIFY(about.isValid()); args.about(); QVERIFY(about.count() == 1); QList< QVariant > arguments(about.takeAt(0)); QVERIFY(arguments.at(0).toString() == QString( "QtArgs version 1.3.0\n" "Copyright (C) 2011 - 2014 John Schneiderman\n" "QtArgs comes with ABSOLUTELY NO WARRANTY.\nThis is " "free software, and you are welcome to redistribute it\n" "under certain conditions; see the LICENSE file for details,\n" "or the Free Software Foundation's LGPL.\n")); } /// Test has argument void hasArgument() { { QArgs args(ARGC, argv); QVERIFY(args.hasArgument('f') == true); } { QArgs args(ARGC, argv); QVERIFY(args.hasArgument('p') == false); } } // Test multiple values void values() { { const char* argvValue[5] = { shortValueTest, "1", "2", "3", "4" }; QArgs args(5, argvValue); args.addSupported('v', "values", "Multiple values short test.", true); try { QList< qint32 > values(args.values('v', 15)); QVERIFY(4 == values.size()); QVERIFY(1 == values.at(0)); QVERIFY(2 == values.at(1)); QVERIFY(3 == values.at(2)); QVERIFY(4 == values.at(3)); } catch (runtime_error& error) { QVERIFY2(false, error.what()); } } { const char* argvValue[5] = { shortValueTest, "1", "2", "a", "4" }; QArgs args(5, argvValue); args.addSupported('v', "values", "Multiple values short test, " "with a bad value.", true); try { QList< qint32 > values(args.values('v', 15)); QVERIFY(3 == values.size()); QVERIFY(1 == values.at(0)); QVERIFY(2 == values.at(1)); QVERIFY(4 == values.at(2)); } catch (runtime_error& error) { QVERIFY2(false, error.what()); } } { const char* argvValue[9] = { #ifdef Q_OS_WIN32 "/a", #else "-a", #endif "p", shortValueTest, "1", "2", "3", "4", #ifdef Q_OS_WIN32 "/b", #else "-b", #endif "5", }; QArgs args(9, argvValue); args.addSupported('v', "values", "Multiple values short test " "with extra options.", true); args.addSupported('a', "aValue", "Leader value", true); args.addSupported('b', "bValue", "Follower value", true); try { QList< qint32 > values(args.values('v', 15)); QVERIFY(4 == values.size()); QVERIFY(1 == values.at(0)); QVERIFY(2 == values.at(1)); QVERIFY(3 == values.at(2)); QVERIFY(4 == values.at(3)); } catch (runtime_error& error) { QVERIFY2(false, error.what()); } } { const char* argvValue[5] = { #ifdef Q_OS_WIN32 "/values", #else "--values", #endif "4", "3", "2", "1" }; QArgs args(5, argvValue); args.addSupported('v', "values", "Multiple values long test ", true); try { QList< qint32 > values(args.values('v', 15)); QVERIFY(4 == values.size()); QVERIFY(4 == values.at(0)); QVERIFY(3 == values.at(1)); QVERIFY(2 == values.at(2)); QVERIFY(1 == values.at(3)); } catch (runtime_error& error) { QVERIFY2(false, error.what()); } } } /// Test value boolean void valueBoolean() { bool value = false; // Short name tests { const char* argvValue[2] = { shortValueTest, "TrUe"}; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean true/false value " "sensative short test", true); QVERIFY(args.value('v', value) == true); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == true); } { const char* argvValue[2] = { shortValueTest, "TrUe"}; QArgs args(2, argvValue, QArgs::CASE_INSENSATIVE); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('V', "value", "Boolean true/false value " "insensative short test", true); QVERIFY(args.value('V', value) == true); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'V'); QVERIFY(arguments.at(1).toBool() == true); } { const char* argvValue[2] = { shortValueTest, "T"}; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean t/f value short test", true); QVERIFY(args.value('v', value, QArgs::T_OR_F) == true); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == true); } { const char* argvValue[2] = { shortValueTest, "1"}; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean 1/0 value short test", true); QVERIFY(args.value('v', value, QArgs::ONE_OR_ZERO) == true); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == true); } { const char* argvValue[2] = { shortValueTest, "YeS"}; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean yes/no value short test", true); QVERIFY(args.value('v', value, QArgs::YES_OR_NO) == true); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == true); } { const char* argvValue[2] = { shortValueTest, "Y"}; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean y/n value short test", true); QVERIFY(args.value('v', value, QArgs::Y_OR_N) == true); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == true); } { const char* argvValue[2] = { shortValueTest, "On" }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean on/off value short test", true); QVERIFY(args.value('v', value, QArgs::ON_OR_OFF) == true); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == true); } // Long name tests { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "TrUe" #else "--value=TrUe", "" #endif }; // Test case // insensitivity QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean true/false value " "long test", true); QVERIFY(args.value('v', value) == true); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == true); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "T" #else "--value=T", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean t/f value long test", true); QVERIFY(args.value('v', value, QArgs::T_OR_F) == true); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == true); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "1" #else "--value=1", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean 1/0 value long test", true); QVERIFY(args.value('v', value, QArgs::ONE_OR_ZERO) == true); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == true); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "yes" #else "--value=yes", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean yes/no value long test", true); QVERIFY(args.value('v', value, QArgs::YES_OR_NO) == true); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == true); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "Y" #else "--value=Y", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean y/n value long test", true); QVERIFY(args.value('v', value, QArgs::Y_OR_N) == true); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == true); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "ON" #else "--value=On", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean on/off value long test", true); QVERIFY(args.value('v', value, QArgs::ON_OR_OFF) == true); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == true); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "ON" #else "--value=On", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean on/off and 1/0 value " "combined test", true); QVERIFY(args.value('v', value, static_cast<QArgs::BooleanSupport>( QArgs::ON_OR_OFF | QArgs::ONE_OR_ZERO)) == true); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == true); } { const char* argvValue[1] = { shortValueTest }; QArgs args(1, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean value short test fail", true); QVERIFY(args.value('v', value) == false); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == false); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "1.0" #else "--value=1.0", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean value long test " "fail invalid argument", true); QVERIFY(args.value('v', value, QArgs::ONE_OR_ZERO) == false); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == false); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "dog" #else "--value=DOG", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,bool))); args.addSupported('v', "value", "Boolean value long test " "fail invalid word", true); QVERIFY(args.value('v', value) == false); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toBool() == false); } } /// Test value real numbers void valueReal() { qreal value = 9.630; { const char* argvValue[2] = { shortValueTest, "1.234" }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qreal))); args.addSupported('v', "value", "Real value short test", true); QVERIFY(qFuzzyCompare(1.0 + args.value('v', value), 1.0 + 1.234)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(qFuzzyCompare(1.0 + arguments.at(1).toDouble(), 1.0 + 1.234)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4.321" #else "--value=4.321", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qreal))); args.addSupported('v', "value", "Real value long test", true); QVERIFY(qFuzzyCompare(1.0 + args.value('v', value), 1.0 + 4.321)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(qFuzzyCompare(1.0 + arguments.at(1).toDouble(), 1.0 + 4.321)); } { const char* argvValue[1] = { shortValueTest }; QArgs args(1, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qreal))); args.addSupported('v', "value", "Real value short test fail", true); QVERIFY(qFuzzyCompare(1.0 + args.value('v', value), 1.0 + 9.630)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(qFuzzyCompare(1.0 + arguments.at(1).toDouble(), 1.0 + 9.630)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "Jack" #else "--value=Jack", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qreal))); args.addSupported('v', "value", "Real value long test fail", true); QVERIFY(qFuzzyCompare(1.0 + args.value('v', value), 1.0 + 9.630)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(qFuzzyCompare(1.0 + arguments.at(1).toDouble(), 1.0 + 9.630)); } } /// Test value 8-bit integer numbers void value8BitIntenger() { qint8 value = -9; { const char* argvValue[2] = { shortValueTest, "-2" }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint8))); args.addSupported('v', "value", "8-bit value short test", true); QVERIFY(static_cast<qint8>(args.value('v', value)) == static_cast<qint8>(-2)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint8>(arguments.at(1).toLongLong()) == static_cast<qint8>(-2)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "-4" #else "--value=-4", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint8))); args.addSupported('v', "value", "8-bit value long test", true); QVERIFY(static_cast<qint8>(args.value('v', value)) == static_cast<qint8>(-4)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint8>(arguments.at(1).toLongLong()) == static_cast<qint8>(-4)); } { const char* argvValue[1] = { shortValueTest }; QArgs args(1, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint8))); args.addSupported('v', "value", "8-bit value short test fail", true); QVERIFY(static_cast<qint8>(args.value('v', value)) == static_cast<qint8>(-9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint8>(arguments.at(1).toLongLong()) == static_cast<qint8>(-9)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4.45" #else "--value=4.45", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint8))); args.addSupported('v', "value", "8-bit value long " "long test fail", true); QVERIFY(static_cast<qint8>(args.value('v', value)) == static_cast<qint8>(-9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint8>(arguments.at(1).toLongLong()) == static_cast<qint8>(-9)); } } /// Test value 16-bit integer numbers void value16BitIntenger() { qint16 value = -9; { const char* argvValue[2] = { shortValueTest, "-2" }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint16))); args.addSupported('v', "value", "16-bit value short test", true); QVERIFY(static_cast<qint16>(args.value('v', value)) == static_cast<qint16>(-2)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint16>(arguments.at(1).toLongLong()) == static_cast<qint16>(-2)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "-4" #else "--value=-4", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint16))); args.addSupported('v', "value", "16-bit value long test", true); QVERIFY(static_cast<qint16>(args.value('v', value)) == static_cast<qint16>(-4)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint16>(arguments.at(1).toLongLong()) == static_cast<qint16>(-4)); } { const char* argvValue[1] = { shortValueTest }; QArgs args(1, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint16))); args.addSupported('v', "value", "16-bit value short test fail", true); QVERIFY(static_cast<qint16>(args.value('v', value)) == static_cast<qint16>(-9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint16>(arguments.at(1).toLongLong()) == static_cast<qint16>(-9)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4.45" #else "--value=4.45", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint16))); args.addSupported('v', "value", "16-bit value long " "long test fail", true); QVERIFY(static_cast<qint16>(args.value('v', value)) == static_cast<qint16>(-9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint16>(arguments.at(1).toLongLong()) == static_cast<qint16>(-9)); } } /// Test value 32-bit integer numbers void value32BitIntenger() { qint32 value = -9; { const char* argvValue[2] = { shortValueTest, "-2" }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint32))); args.addSupported('v', "value", "32-bit value short test", true); QVERIFY(static_cast<qint32>(args.value('v', value)) == static_cast<qint32>(-2)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint32>(arguments.at(1).toLongLong()) == static_cast<qint32>(-2)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "-4" #else "--value=-4", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint32))); args.addSupported('v', "value", "32-bit value long test", true); QVERIFY(static_cast<qint32>(args.value('v', value)) == static_cast<qint32>(-4)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint32>(arguments.at(1).toLongLong()) == static_cast<qint32>(-4)); } { const char* argvValue[1] = { shortValueTest }; QArgs args(1, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint32))); args.addSupported('v', "value", "32-bit value short test fail", true); QVERIFY(static_cast<qint32>(args.value('v', value)) == static_cast<qint32>(-9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint32>(arguments.at(1).toLongLong()) == static_cast<qint32>(-9)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4.45" #else "--value=4.45", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint32))); args.addSupported('v', "value", "32-bit value long " "long test fail", true); QVERIFY(static_cast<qint32>(args.value('v', value)) == static_cast<qint32>(-9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint32>(arguments.at(1).toLongLong()) == static_cast<qint32>(-9)); } } /// Test value 64-bit integer numbers void value64BitIntenger() { qint64 value = -9; { const char* argvValue[2] = { shortValueTest, "-2" }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint64))); args.addSupported('v', "value", "64-bit value short test", true); QVERIFY(static_cast<qint64>(args.value('v', value)) == static_cast<qint64>(-2)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint64>(arguments.at(1).toLongLong()) == static_cast<qint64>(-2)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "-4" #else "--value=-4", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint64))); args.addSupported('v', "value", "64-bit value long test", true); QVERIFY(static_cast<qint64>(args.value('v', value)) == static_cast<qint64>(-4)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint64>(arguments.at(1).toLongLong()) == static_cast<qint64>(-4)); } { const char* argvValue[1] = { shortValueTest }; QArgs args(1, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint64))); args.addSupported('v', "value", "64-bit value short test fail", true); QVERIFY(static_cast<qint64>(args.value('v', value)) == static_cast<qint64>(-9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint64>(arguments.at(1).toLongLong()) == static_cast<qint64>(-9)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4.45" #else "--value=4.45", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,qint64))); args.addSupported('v', "value", "64-bit value long " "long test fail", true); QVERIFY(static_cast<qint64>(args.value('v', value)) == static_cast<qint64>(-9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<qint64>(arguments.at(1).toLongLong()) == static_cast<qint64>(-9)); } } /// Test value 8-bit unsigned integer numbers void value8BitUnsignedIntenger() { quint8 value = 9; { const char* argvValue[2] = { shortValueTest, "2" }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint8))); args.addSupported('v', "value", "8-bit unsigned value " "short test", true); QVERIFY(static_cast<quint8>(args.value('v', value)) == static_cast<quint8>(2)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint8>(arguments.at(1).toULongLong()) == static_cast<quint8>(2)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4" #else "--value=4", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint8))); args.addSupported('v', "value", "8-bit unsigned value " "long test", true); QVERIFY(static_cast<quint8>(args.value('v', value)) == static_cast<quint8>(4)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint8>(arguments.at(1).toULongLong()) == static_cast<quint8>(4)); } { const char* argvValue[1] = { shortValueTest }; QArgs args(1, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint8))); args.addSupported('v', "value", "8-bit unsigned value " "short test fail", true); QVERIFY(static_cast<quint8>(args.value('v', value)) == static_cast<quint8>(9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint8>(arguments.at(1).toULongLong()) == static_cast<quint8>(9)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4.45" #else "--value=4.45", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint8))); args.addSupported('v', "value", "8-bit unsigned value " "long test fail", true); QVERIFY(static_cast<quint8>(args.value('v', value)) == static_cast<quint8>(9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint8>(arguments.at(1).toULongLong()) == static_cast<quint8>(9)); } } /// Test value 16-bit unsigned integer numbers void value16BitUnsignedIntenger() { quint16 value = 9; { const char* argvValue[2] = { shortValueTest, "2" }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint16))); args.addSupported('v', "value", "16-bit unsigned value " "short test", true); QVERIFY(static_cast<quint16>(args.value('v', value)) == static_cast<quint16>(2)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint16>(arguments.at(1).toULongLong()) == static_cast<quint16>(2)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4" #else "--value=4", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint16))); args.addSupported('v', "value", "16-bit unsigned value " "long test", true); QVERIFY(static_cast<quint16>(args.value('v', value)) == static_cast<quint16>(4)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint16>(arguments.at(1).toULongLong()) == static_cast<quint16>(4)); } { const char* argvValue[1] = { shortValueTest }; QArgs args(1, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint16))); args.addSupported('v', "value", "16-bit unsigned value " "short test fail", true); QVERIFY(static_cast<quint16>(args.value('v', value)) == static_cast<quint16>(9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint16>(arguments.at(1).toULongLong()) == static_cast<quint16>(9)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4.45" #else "--value=4.45", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint16))); args.addSupported('v', "value", "16-bit unsigned value " "long test fail", true); QVERIFY(static_cast<quint16>(args.value('v', value)) == static_cast<quint16>(9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint16>(arguments.at(1).toULongLong()) == static_cast<quint16>(9)); } } /// Test value 32-bit unsigned integer numbers void value32BitUnsignedIntenger() { quint32 value = 9; { const char* argvValue[2] = { shortValueTest, "2" }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint32))); args.addSupported('v', "value", "32-bit unsigned value " "short test", true); QVERIFY(static_cast<quint32>(args.value('v', value)) == static_cast<quint32>(2)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint32>(arguments.at(1).toULongLong()) == static_cast<quint32>(2)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4" #else "--value=4", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint32))); args.addSupported('v', "value", "32-bit unsigned value " "long test", true); QVERIFY(static_cast<quint32>(args.value('v', value)) == static_cast<quint32>(4)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint32>(arguments.at(1).toULongLong()) == static_cast<quint32>(4)); } { const char* argvValue[1] = { shortValueTest }; QArgs args(1, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint32))); args.addSupported('v', "value", "32-bit unsigned value " "short test fail", true); QVERIFY(static_cast<quint32>(args.value('v', value)) == static_cast<quint32>(9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint32>(arguments.at(1).toULongLong()) == static_cast<quint32>(9)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4.45" #else "--value=4.45", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint32))); args.addSupported('v', "value", "32-bit unsigned value " "long test fail", true); QVERIFY(static_cast<quint32>(args.value('v', value)) == static_cast<quint32>(9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint32>(arguments.at(1).toULongLong()) == static_cast<quint32>(9)); } } /// Test value 64-bit unsigned integer numbers void value64BitUnsignedIntenger() { quint64 value = 9; { const char* argvValue[2] = { shortValueTest, "2" }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint64))); args.addSupported('v', "value", "64-bit unsigned value " "short test", true); QVERIFY(static_cast<quint64>(args.value('v', value)) == static_cast<quint64>(2)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint64>(arguments.at(1).toULongLong()) == static_cast<quint64>(2)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4" #else "--value=4", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint64))); args.addSupported('v', "value", "64-bit unsigned value " "long test", true); QVERIFY(static_cast<quint64>(args.value('v', value)) == static_cast<quint64>(4)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint64>(arguments.at(1).toULongLong()) == static_cast<quint64>(4)); } { const char* argvValue[1] = { shortValueTest }; QArgs args(1, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint64))); args.addSupported('v', "value", "64-bit unsigned value " "short test fail", true); QVERIFY(static_cast<quint64>(args.value('v', value)) == static_cast<quint64>(9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint64>(arguments.at(1).toULongLong()) == static_cast<quint64>(9)); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4.45" #else "--value=4.45", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,quint64))); args.addSupported('v', "value", "64-bit unsigned value " "long test fail", true); QVERIFY(static_cast<quint64>(args.value('v', value)) == static_cast<quint64>(9)); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(static_cast<quint64>(arguments.at(1).toULongLong()) == static_cast<quint64>(9)); } } /// Test value QChar void valueQChar() { QChar value('9'); { const char* argvValue[2] = { shortValueTest, "2"}; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,QChar))); args.addSupported('v', "value", "QChar value short test", true); QVERIFY(args.value('v', value) == '2'); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toChar() == '2'); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4" #else "--value=4", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,QChar))); args.addSupported('v', "value", "QChar value shot test", true); QVERIFY(args.value('v', value) == '4'); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toChar() == '4'); } { const char* argvValue[1] = { shortValueTest }; QArgs args(1, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,QChar))); args.addSupported('v', "value", "QChar value short test fail", true); QVERIFY(args.value('v', value) == '9'); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toChar() == '9'); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "\0" #else "--value=\0", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,QChar))); args.addSupported('v', "value", "QChar empty value " "long test fail", true); QVERIFY(args.value('v', value) == '9'); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toChar() == '9'); } } /// Test value QString void valueQString() { QString value("9"); { const char* argvValue[2] = { shortValueTest, "2" }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,QString))); args.addSupported('v', "value", "QString value short test", true); QVERIFY(args.value('v', value) == "2"); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toString() == "2"); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "4" #else "--value=4", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,QString))); args.addSupported('v', "value", "QString value long test", true); QVERIFY(args.value('v', value) == "4"); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toString() == "4"); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "a " #else "--value=a ", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,QString))); args.addSupported('v', "value", "QString emtpy spaced value " "long test", true); QVERIFY(args.value('v', value) == "a"); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toString() == "a"); } { const char* argvValue[1] = { shortValueTest }; QArgs args(1, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,QString))); args.addSupported('v', "value", "QString value short test fail", true); QVERIFY(args.value('v', value) == "9"); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toString() == "9"); } { const char* argvValue[2] = { #ifdef Q_OS_WIN32 "/value", "\0\0\0" #else "--value=\0\0\0", "" #endif }; QArgs args(2, argvValue); QSignalSpy valueSignal(&args, SIGNAL(argumentValue(QChar,QString))); args.addSupported('v', "value", "QString null value " "long test fail", true); QVERIFY(args.value('v', value) == "9"); QVERIFY(valueSignal.isValid()); QVERIFY(valueSignal.count() == 1); QList< QVariant > arguments(valueSignal.takeAt(0)); QVERIFY(arguments.at(0).toChar() == 'v'); QVERIFY(arguments.at(1).toString() == "9"); } } }; #endif QTEST_MAIN(QArgsUT)