Ticket #12953: bt_dataset_fixture.cpp

File bt_dataset_fixture.cpp, 1.8 KB (added by anonymous, 6 years ago)
Line 
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
10namespace my_test {
11
12struct 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
30struct 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
47dataset_loader::data_set dataset_loader::input() const
48{
49 return data_set(m_input);
50}
51
52dataset_loader::data_set dataset_loader::expect() const
53{
54 return data_set(m_expected);
55}
56
57using ::boost::unit_test::data::monomorphic::operator^;
58
59} // namespace my_test
60
61
62namespace 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
68BOOST_AUTO_TEST_SUITE( basic_productions )
69
70struct my_dataset : public ::my_test::dataset_loader {};
71
72BOOST_DATA_TEST_CASE_F(my_dataset, cool_test,
73my_dataset.input() ^ my_dataset.expect(),
74 input, expect)
75{
76 BOOST_TEST(input == expect);
77}
78
79BOOST_AUTO_TEST_SUITE_END()
80
81