LUMIERA.clone/tests/test/test-runner-config-test.cpp
Ichthyostega cc9dbd8a40 BufferProvider: relocate TestFrame and dummy-hash computations
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
2026-03-07 23:02:35 +01:00

99 lines
3.2 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
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