| 1 | #define BOOST_TEST_MODULE "My Test Suite"
|
|---|
| 2 |
|
|---|
| 3 | #include <boost/test/included/unit_test.hpp>
|
|---|
| 4 | #include <boost/test/data/test_case.hpp>
|
|---|
| 5 | #include <boost/test/data/monomorphic.hpp>
|
|---|
| 6 |
|
|---|
| 7 | #include <vector>
|
|---|
| 8 | #include <iostream>
|
|---|
| 9 |
|
|---|
| 10 | namespace my_test {
|
|---|
| 11 |
|
|---|
| 12 | struct dataset_loader
|
|---|
| 13 | {
|
|---|
| 14 | typedef std::vector<std::string> dataset_type;
|
|---|
| 15 |
|
|---|
| 16 | class data_set;
|
|---|
| 17 |
|
|---|
| 18 | data_set input() const;
|
|---|
| 19 | data_set expect() const;
|
|---|
| 20 |
|
|---|
| 21 | dataset_loader()
|
|---|
| 22 | : m_input{ "foo", "bar" }
|
|---|
| 23 | , m_expected{ "foo", "baz" }
|
|---|
| 24 | { /* load the files by given path */}
|
|---|
| 25 |
|
|---|
| 26 | dataset_type m_input;
|
|---|
| 27 | dataset_type m_expected;
|
|---|
| 28 | };
|
|---|
| 29 |
|
|---|
| 30 | struct dataset_loader::data_set
|
|---|
| 31 | {
|
|---|
| 32 | typedef dataset_type::const_iterator iterator;
|
|---|
| 33 |
|
|---|
| 34 | data_set(dataset_type const& data)
|
|---|
| 35 | : m_data{ data }
|
|---|
| 36 | { }
|
|---|
| 37 |
|
|---|
| 38 | // boost.test dataset API
|
|---|
| 39 | enum { arity = 1 };
|
|---|
| 40 | using sample = dataset_type::value_type;
|
|---|
| 41 | boost::unit_test::data::size_t size() const { return m_data.size(); }
|
|---|
| 42 | iterator begin() const { return m_data.begin(); }
|
|---|
| 43 |
|
|---|
| 44 | dataset_type const& m_data;
|
|---|
| 45 | };
|
|---|
| 46 |
|
|---|
| 47 | dataset_loader::data_set dataset_loader::input() const
|
|---|
| 48 | {
|
|---|
| 49 | return data_set(m_input);
|
|---|
| 50 | }
|
|---|
| 51 |
|
|---|
| 52 | dataset_loader::data_set dataset_loader::expect() const
|
|---|
| 53 | {
|
|---|
| 54 | return data_set(m_expected);
|
|---|
| 55 | }
|
|---|
| 56 |
|
|---|
| 57 | using ::boost::unit_test::data::monomorphic::operator^;
|
|---|
| 58 |
|
|---|
| 59 | } // namespace my_test
|
|---|
| 60 |
|
|---|
| 61 |
|
|---|
| 62 | namespace boost { namespace unit_test { namespace data { namespace monomorphic {
|
|---|
| 63 | template <>
|
|---|
| 64 | struct is_dataset<my_test::dataset_loader::data_set> : boost::mpl::true_ {};
|
|---|
| 65 | }}}}
|
|---|
| 66 |
|
|---|
| 67 |
|
|---|
| 68 | BOOST_AUTO_TEST_SUITE( basic_productions )
|
|---|
| 69 |
|
|---|
| 70 | struct my_dataset : public ::my_test::dataset_loader {};
|
|---|
| 71 |
|
|---|
| 72 | BOOST_DATA_TEST_CASE_F(my_dataset, cool_test,
|
|---|
| 73 | my_dataset.input() ^ my_dataset.expect(),
|
|---|
| 74 | input, expect)
|
|---|
| 75 | {
|
|---|
| 76 | BOOST_TEST(input == expect);
|
|---|
| 77 | }
|
|---|
| 78 |
|
|---|
| 79 | BOOST_AUTO_TEST_SUITE_END()
|
|---|
| 80 |
|
|---|
| 81 |
|
|---|