boost.test:无法压缩自定义数据集

时间:2017-12-07 17:19:46

标签: c++ unit-testing boost

我试图了解如何在boost.test库中使用数据集。我正在关注文档here并创建了我的数据集,如下所示:

namespace bdata = boost::unit_test::data;

struct test_set {

    class iterator {

        int m_a;

    public:

        iterator()
        : m_a(0){}

        void operator++() {
            ++m_a;
        }

        int operator*() const {
            return m_a;
        }
    };

    using sample = int;
    enum {arity = 1};

    auto begin() const {
        return iterator{};
    }

    bdata::size_t size() const {
        return 5; // let's assume only 5 numbers
    }
};

namespace boost { namespace unit_test { namespace data  { namespace monomorphic {

                template <>
                struct is_dataset<test_set> : std::true_type{};
            }}}}

非常简单,迭代从0到4的数字。

以下简单测试编译并运行得很好:

// this works as expected and prints 0, 1, 2, 3, 4
BOOST_DATA_TEST_CASE(
example_test1,
test_set(),
my_datum) {

        std::cout << my_datum << std::endl;
}

然而,当我尝试zip两个这样的数据集时,它无法编译(Apple LLVM版本9.0.0(clang-900.0.38)):

// error: invalid operands to binary expression ('typename data::result_of::make<test_set>::type' (aka 'test_set') and 'test_set') test_set() ^ test_set(),
//                                                                                                                                 ~~~~~~~~~~~^~~~~~~~~~~~~
BOOST_DATA_TEST_CASE(
example_test2,
test_set() ^ test_set(),
my_datum1, my_datum2) {

        std::cout << my_datum1 << " " << my_datum2 << std::endl;
}

我想做的是合法的吗?如果是这样,实现它的正确方法是什么?谢谢你的帮助!

直播代码here

0 个答案:

没有答案