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