These are generic vehicles to verify computation structures. Since they are in no way related to our models, they belong into »Vault« layer Furthermore this reorganisation of test support components is prerequisite to also move further generic facilities down into the Vault
99 lines
3.2 KiB
C++
99 lines
3.2 KiB
C++
/*
|
||
TestRunnerConfig(Test) - parsing of cmd line options for running Testcases
|
||
|
||
Copyright (C)
|
||
2008, Hermann Vosseler <Ichthyostega@web.de>
|
||
|
||
**Lumiera** 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 for further details.
|
||
|
||
* *****************************************************************/
|
||
|
||
/** @file test-runner-config-test.cpp
|
||
** unit test \ref TestRunnerConfig_test
|
||
*/
|
||
|
||
|
||
#include "test/run.hpp"
|
||
#include "test/test-helper.hpp"
|
||
#include "test/test-runner-config.hpp"
|
||
#include "lib/format-cout.hpp"
|
||
#include "lib/util.hpp"
|
||
|
||
#include <memory>
|
||
|
||
using std::make_unique;
|
||
using lib::Cmdline;
|
||
using util::isnil;
|
||
|
||
namespace test {
|
||
|
||
/************************************************************//**
|
||
* invokes the TestOption parser for various example commandlines
|
||
* @test for test::TestOption, parsing of commandline options
|
||
* @see test::Suite
|
||
* @see util::Cmdline
|
||
*/
|
||
class TestRunnerConfig_test : public Test
|
||
{
|
||
void
|
||
run (Arg)
|
||
{
|
||
noOptions();
|
||
help();
|
||
groupID();
|
||
singleTest();
|
||
groupFilter1();
|
||
groupFilter2();
|
||
additionalCmd();
|
||
additionalCmd2();
|
||
verify_seed();
|
||
}
|
||
|
||
|
||
/** @test performs the actual test for the option parser test::TestOption */
|
||
auto
|
||
doIt (const string cmdline)
|
||
{
|
||
cout << "Testing invocation with cmdline: " << cmdline << "..." << endl;
|
||
|
||
Cmdline args(cmdline);
|
||
auto optparser = make_unique<TestOption>(args);
|
||
const string testID = optparser->getTestID();
|
||
cout << "--> Testgroup=" << optparser->getTestgroup() << endl;
|
||
cout << "--> Test-ID =" << (isnil(testID)? "--missing--" : testID ) << endl;
|
||
cout << "--> remaining=" << args << endl;
|
||
return optparser;
|
||
}
|
||
|
||
void noOptions() { doIt (""); }
|
||
void help() { doIt ("--help"); }
|
||
void groupID() { doIt ("--group TestGroupID"); }
|
||
void singleTest() { doIt (" SingleTestID"); }
|
||
void groupFilter1() { doIt (" SingleTestID --group TestGroupID"); }
|
||
void groupFilter2() { doIt (" --group TestGroupID SingleTestID "); }
|
||
void additionalCmd() { doIt (" --group TestGroupID SingleTestID spam eggs"); }
|
||
void additionalCmd2() { doIt ("\t\tSingleTestID spam --group TestGroupID \t --eggs"); }
|
||
|
||
void
|
||
verify_seed()
|
||
{
|
||
CHECK ( not doIt("ham --group spam")->optSeed());
|
||
CHECK (7 == * doIt("ham --seed 7 spam")->optSeed());
|
||
CHECK (0 == * doIt("ham --seed 0 spam")->optSeed());
|
||
|
||
VERIFY_FAIL("argument (\'spam\') for option \'--seed\' is invalid"
|
||
, doIt("ham --seed spam"));
|
||
|
||
// yet negative numbers are parsed and force-converted
|
||
CHECK (std::numeric_limits<uint64_t>::max()
|
||
== * doIt("--seed=-1")->optSeed());
|
||
}
|
||
};
|
||
|
||
LAUNCHER (TestRunnerConfig_test, "function common");
|
||
|
||
|
||
} // namespace test
|