fork
Fork of cpputest by
Diff: include/CppUTest/CommandLineArguments.h
- Revision:
- 0:0b799af9d58e
- Child:
- 1:4769360130ed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/CppUTest/CommandLineArguments.h Tue Jan 28 09:27:41 2014 +0000 @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the <organization> nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef D_CommandLineArguments_H +#define D_CommandLineArguments_H + +#include "SimpleString.h" +#include "TestOutput.h" +#include "TestFilter.h" + +class TestPlugin; + +class CommandLineArguments +{ +public: + explicit CommandLineArguments(int ac, const char** av); + virtual ~CommandLineArguments(); + + bool parse(TestPlugin* plugin); + bool isVerbose() const; + int getRepeatCount() const; + TestFilter getGroupFilter() const; + TestFilter getNameFilter() const; + bool isJUnitOutput() const; + bool isEclipseOutput() const; + bool runTestsInSeperateProcess() const; + const char* usage() const; + +private: + + enum OutputType + { + OUTPUT_ECLIPSE, OUTPUT_JUNIT + }; + int ac_; + const char** av_; + + bool verbose_; + bool runTestsAsSeperateProcess_; + int repeat_; + TestFilter groupFilter_; + TestFilter nameFilter_; + OutputType outputType_; + + SimpleString getParameterField(int ac, const char** av, int& i, const SimpleString& parameterName); + void SetRepeatCount(int ac, const char** av, int& index); + void SetGroupFilter(int ac, const char** av, int& index); + void SetStrictGroupFilter(int ac, const char** av, int& index); + void SetNameFilter(int ac, const char** av, int& index); + void SetStrictNameFilter(int ac, const char** av, int& index); + void SetTestToRunBasedOnVerboseOutput(int ac, const char** av, int& index, const char* parameterName); + bool SetOutputType(int ac, const char** av, int& index); + + CommandLineArguments(const CommandLineArguments&); + CommandLineArguments& operator=(const CommandLineArguments&); + +}; + +#endif