12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- // (C) Copyright Raffi Enficiaud 2014.
- // 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 dataset_example68
- #include <boost/test/included/unit_test.hpp>
- #include <boost/test/data/test_case.hpp>
- #include <boost/test/data/monomorphic.hpp>
- #include <sstream>
- namespace bdata = boost::unit_test::data;
- // Dataset generating a Fibonacci sequence
- class fibonacci_dataset {
- public:
- // the type of the samples is deduced
- enum { arity = 1 };
- struct iterator {
- iterator() : a(1), b(1) {}
- int operator*() const { return b; }
- void operator++()
- {
- a = a + b;
- std::swap(a, b);
- }
- private:
- int a;
- int b; // b is the output
- };
- fibonacci_dataset() {}
- // size is infinite
- bdata::size_t size() const { return bdata::BOOST_TEST_DS_INFINITE_SIZE; }
- // iterator
- iterator begin() const { return iterator(); }
- };
- namespace boost { namespace unit_test { namespace data { namespace monomorphic {
- // registering fibonacci_dataset as a proper dataset
- template <>
- struct is_dataset<fibonacci_dataset> : boost::mpl::true_ {};
- }}}}
- // Creating a test-driven dataset, the zip is for checking
- BOOST_DATA_TEST_CASE(
- test1,
- fibonacci_dataset() ^ bdata::make( { 1, 2, 3, 5, 8, 13, 21, 35, 56 } ),
- fib_sample, exp)
- {
- BOOST_TEST(fib_sample == exp);
- }
- //]
|