summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2013-10-05 03:20:56 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-12-06 08:44:31 +0100
commit03affacaa3d5530e96f869a8a6e900ca5e714918 (patch)
tree3e060f7b8bac0edd9f210c77d35d49925a868a96 /tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp
parent689152e7c1c6b0e851937a20de96c99aa7a7ea2b (diff)
QCommandLineParser: pluck some low-hanging fruit re: exception safety
Make QCommandLineParser::add{Help,Version}Option() QCommandLineOption::setDefaultValue() QCommandLineOptionPrivate::setNames() have transaction semantics: either they succeed, or they change nothing. It's trivial to provide this guarantee, so do it. Add a test for the surprising property that setDefaultValue("") resets defaultValues() to an empty QStringList instead of one that contains the empty string. Change-Id: I61623019de3c7d2e52c24f42cc2e23ec5fddc4da Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp')
-rw-r--r--tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp b/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp
index f37e192ad3..d111c53551 100644
--- a/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp
+++ b/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp
@@ -69,6 +69,7 @@ private slots:
void testUnknownOptionErrorHandling();
void testDoubleDash_data();
void testDoubleDash();
+ void testDefaultValue();
void testProcessNotCalled();
void testEmptyArgsList();
void testMissingOptionValue();
@@ -322,6 +323,17 @@ void tst_QCommandLineParser::testDoubleDash()
QCOMPARE(parser.unknownOptionNames(), QStringList());
}
+void tst_QCommandLineParser::testDefaultValue()
+{
+ QCommandLineOption opt(QStringLiteral("name"), QStringLiteral("desc"),
+ QStringLiteral("valueName"), QStringLiteral("default"));
+ QCOMPARE(opt.defaultValues(), QStringList(QStringLiteral("default")));
+ opt.setDefaultValue(QStringLiteral(""));
+ QCOMPARE(opt.defaultValues(), QStringList());
+ opt.setDefaultValue(QStringLiteral("default"));
+ QCOMPARE(opt.defaultValues(), QStringList(QStringLiteral("default")));
+}
+
void tst_QCommandLineParser::testProcessNotCalled()
{
QCoreApplication app(empty_argc, empty_argv);