From a6e914c7018b6c597afa54ee467d5ae1af0885c3 Mon Sep 17 00:00:00 2001 From: Gabriel Schlozer Date: Thu, 8 Sep 2016 16:06:58 +0200 Subject: [PATCH] extracted in a dedicated class --- UnitTest++/SuitePredicateCmdBuilder.cpp | 56 +++++++++++++++++++++++++ UnitTest++/SuitePredicateCmdBuilder.h | 24 +++++++++++ UnitTest++/TestRunner.cpp | 47 ++------------------- 3 files changed, 83 insertions(+), 44 deletions(-) create mode 100644 UnitTest++/SuitePredicateCmdBuilder.cpp create mode 100644 UnitTest++/SuitePredicateCmdBuilder.h diff --git a/UnitTest++/SuitePredicateCmdBuilder.cpp b/UnitTest++/SuitePredicateCmdBuilder.cpp new file mode 100644 index 0000000..35af5b9 --- /dev/null +++ b/UnitTest++/SuitePredicateCmdBuilder.cpp @@ -0,0 +1,56 @@ +#include "SuitePredicateCmdBuilder.h" + +using namespace UnitTest; + + +SuitePredicateCmdBuilder::SuitePredicateCmdBuilder(int argc, char**argv) + : _arguments(argc, argv) +{ +} + + +SuitePredicate SuitePredicateCmdBuilder::buildPredicate() +{ + SuitePredicate predicate; + + bool specific = false; + specific |= readSuiteArgument(_arguments, predicate, "--suite"); + specific |= readTestArgument(_arguments, predicate, "--test"); + specific |= readTestArgument(_arguments, predicate, ""); + + if (!specific) + { + predicate.addAll(); + } + return predicate; +} + + +bool SuitePredicateCmdBuilder::readSuiteArgument(ArgumentsReader & arguments, SuitePredicate & predicate, const string & arg) +{ + int from, count; + if (!arguments.findArgumentListIndex(arg, from, count)) + { + return false; + } + for (int i = from; i < from + count; i++) + { + predicate.addSuite(arguments.getArgument(i).c_str()); + } + return true; +} + + +bool SuitePredicateCmdBuilder::readTestArgument(ArgumentsReader & arguments, SuitePredicate & predicate, const string & arg) +{ + int from, count; + if (!arguments.findArgumentListIndex(arg, from, count)) + { + return false; + } + for (int i = from; i < from + count; i++) + { + predicate.addTest(arguments.getArgument(i).c_str()); + } + return true; +} diff --git a/UnitTest++/SuitePredicateCmdBuilder.h b/UnitTest++/SuitePredicateCmdBuilder.h new file mode 100644 index 0000000..928f1e2 --- /dev/null +++ b/UnitTest++/SuitePredicateCmdBuilder.h @@ -0,0 +1,24 @@ +#ifndef UNITTEST_TESTRUNNERCMD_H +#define UNITTEST_TESTRUNNERCMD_H + +#include "ArgumentsReader.h" +#include "SuitePredicate.h" + +namespace UnitTest { + + class SuitePredicateCmdBuilder + { + public: + SuitePredicateCmdBuilder(int argc, char**argv); + SuitePredicate buildPredicate(); + + protected: + bool readSuiteArgument(ArgumentsReader & arguments, SuitePredicate & predicate, const string & arg); + bool readTestArgument(ArgumentsReader & arguments, SuitePredicate & predicate, const string & arg); + + private: + ArgumentsReader _arguments; + }; +} + +#endif \ No newline at end of file diff --git a/UnitTest++/TestRunner.cpp b/UnitTest++/TestRunner.cpp index 2e3539a..c349eb6 100644 --- a/UnitTest++/TestRunner.cpp +++ b/UnitTest++/TestRunner.cpp @@ -5,7 +5,7 @@ #include "TimeHelpers.h" #include "MemoryOutStream.h" #include "SuitePredicate.h" -#include "ArgumentsReader.h" +#include "SuitePredicateCmdBuilder.h" #include @@ -20,54 +20,13 @@ namespace UnitTest { } - bool readSuiteArgument(ArgumentsReader & arguments, SuitePredicate & predicate, char const* argument) - { - int from, count; - if (!arguments.findArgumentListIndex(argument, from, count)) - { - return false; - } - for (int i = from; i < from + count; i++) - { - predicate.addSuite(arguments.getArgument(i).c_str()); - } - return true; - } - - bool readTestArgument(ArgumentsReader & arguments, SuitePredicate & predicate, char const* argument) - { - int from, count; - if (!arguments.findArgumentListIndex(argument, from, count)) - { - return false; - } - for (int i = from; i < from + count; i++) - { - predicate.addTest(arguments.getArgument(i).c_str()); - } - return true; - } - int RunTestsCmd(int argc, char**argv) { - ArgumentsReader arguments(argc, argv); - SuitePredicate predicate; - - bool specific = false; - specific |= readSuiteArgument(arguments, predicate, "--suite"); - specific |= readTestArgument(arguments, predicate, "--test"); - specific |= readTestArgument(arguments, predicate, ""); - - if (!specific) - { - predicate.addAll(); - } - - //run selected test(s) only + SuitePredicateCmdBuilder suiteCmd(argc, argv); TestReporterStdout reporter; TestRunner runner(reporter); - return runner.RunTestsIf(Test::GetTestList(), 0, predicate, 0); + return runner.RunTestsIf(Test::GetTestList(), 0, suiteCmd.buildPredicate(), 0); } TestRunner::TestRunner(TestReporter& reporter)