fcd24729df
- adding tests for custom command line argument passing - using command line argument in global fixtures and raising strong errors - using command line argument in init function and describing the errors - using command line argument dataset test cases and describing the errors - removing sample totally from all the examples
77 lines
2.2 KiB
C++
77 lines
2.2 KiB
C++
// Copyright (c) 2018 Raffi Enficiaud
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
|
// http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
// See http://www.boost.org/libs/test for the library home page.
|
|
|
|
//[example_code
|
|
#define BOOST_TEST_MODULE runtime_configuration2
|
|
#include <boost/test/included/unit_test.hpp>
|
|
using namespace boost::unit_test;
|
|
|
|
/// The interface with the device driver.
|
|
class DeviceInterface {
|
|
public:
|
|
// acquires a specific device based on its name
|
|
static DeviceInterface* factory(std::string const& device_name);
|
|
virtual ~DeviceInterface(){}
|
|
|
|
virtual bool setup() = 0;
|
|
virtual bool teardown() = 0;
|
|
virtual std::string get_device_name() const = 0;
|
|
};
|
|
|
|
class MockDevice: public DeviceInterface {
|
|
bool setup() final {
|
|
return true;
|
|
}
|
|
bool teardown() final {
|
|
return true;
|
|
}
|
|
std::string get_device_name() const {
|
|
return "mock_device";
|
|
}
|
|
};
|
|
|
|
DeviceInterface* DeviceInterface::factory(std::string const& device_name) {
|
|
if(device_name == "mock_device") {
|
|
return new MockDevice();
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
struct CommandLineDeviceInit {
|
|
CommandLineDeviceInit() {
|
|
BOOST_TEST_REQUIRE( framework::master_test_suite().argc == 3 );
|
|
BOOST_TEST_REQUIRE( framework::master_test_suite().argv[1] == "--device-name" );
|
|
}
|
|
void setup() {
|
|
device = DeviceInterface::factory(framework::master_test_suite().argv[2]);
|
|
BOOST_TEST_REQUIRE(
|
|
device != nullptr,
|
|
"Cannot create the device " << framework::master_test_suite().argv[2] );
|
|
BOOST_TEST_REQUIRE(
|
|
device->setup(),
|
|
"Cannot initialize the device " << framework::master_test_suite().argv[2] );
|
|
}
|
|
void teardown() {
|
|
if(device) {
|
|
BOOST_TEST(
|
|
device->teardown(),
|
|
"Cannot tear-down the device " << framework::master_test_suite().argv[2]);
|
|
}
|
|
delete device;
|
|
}
|
|
static DeviceInterface *device;
|
|
};
|
|
DeviceInterface* CommandLineDeviceInit::device = nullptr;
|
|
|
|
BOOST_TEST_GLOBAL_FIXTURE( CommandLineDeviceInit );
|
|
|
|
BOOST_AUTO_TEST_CASE(check_device_has_meaningful_name)
|
|
{
|
|
BOOST_TEST(CommandLineDeviceInit::device->get_device_name() != "");
|
|
}
|
|
//]
|