tail.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 127 行

CPP
127
字号
//  (C) Copyright Eric Niebler 2005.//  Use, modification and distribution are subject to 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)#include <boost/foreach.hpp>#include <boost/test/unit_test.hpp>#include <boost/accumulators/accumulators.hpp>#include <boost/accumulators/statistics/stats.hpp>#include <boost/accumulators/statistics/tail.hpp>#include <boost/accumulators/statistics/tail_variate.hpp>#include <boost/accumulators/statistics/variates/covariate.hpp>using namespace boost;using namespace unit_test;using namespace accumulators;template<typename Range>void check_tail(Range const &rng, char const *expected){    BOOST_FOREACH(int i, rng)    {        if(!*expected)        {            BOOST_CHECK(false);            return;        }        BOOST_CHECK_EQUAL(i, *expected++);    }    BOOST_CHECK(!*expected);}///////////////////////////////////////////////////////////////////////////////// test_right_tail//void test_right_tail(){    accumulator_set<int, stats<tag::tail_weights<right>, tag::tail_variate<int, tag::covariate1, right> >, int > acc(        right_tail_cache_size = 4    );    acc(010, weight = 2, covariate1 = 3);    check_tail(tail(acc), "\10");    check_tail(tail_variate(acc), "\3");    check_tail(tail_weights(acc), "\2");    acc(020, weight = 7, covariate1 = 1);    check_tail(tail(acc), "\20\10");    check_tail(tail_variate(acc), "\1\3");    check_tail(tail_weights(acc), "\7\2");    acc(014, weight = 6, covariate1 = 4);    check_tail(tail(acc), "\20\14\10");    check_tail(tail_variate(acc), "\1\4\3");    check_tail(tail_weights(acc), "\7\6\2");    acc(030, weight = 4, covariate1 = 5);    check_tail(tail(acc), "\30\20\14\10");    check_tail(tail_variate(acc), "\5\1\4\3");    check_tail(tail_weights(acc), "\4\7\6\2");    acc(001, weight = 1, covariate1 = 9);    check_tail(tail(acc), "\30\20\14\10");    check_tail(tail_variate(acc), "\5\1\4\3");    check_tail(tail_weights(acc), "\4\7\6\2");    acc(011, weight = 3, covariate1 = 7);    check_tail(tail(acc), "\30\20\14\11");    check_tail(tail_variate(acc), "\5\1\4\7");    check_tail(tail_weights(acc), "\4\7\6\3");}///////////////////////////////////////////////////////////////////////////////// test_left_tail//void test_left_tail(){    accumulator_set<int, stats<tag::tail_weights<left>, tag::tail_variate<int, tag::covariate1, left> >, int > acc(        left_tail_cache_size = 4    );    acc(010, weight = 2, covariate1 = 3);    check_tail(tail(acc), "\10");    check_tail(tail_variate(acc), "\3");    check_tail(tail_weights(acc), "\2");    acc(020, weight = 7, covariate1 = 1);    check_tail(tail(acc), "\10\20");    check_tail(tail_variate(acc), "\3\1");    check_tail(tail_weights(acc), "\2\7");    acc(014, weight = 6, covariate1 = 4);    check_tail(tail(acc), "\10\14\20");    check_tail(tail_variate(acc), "\3\4\1");    check_tail(tail_weights(acc), "\2\6\7");    acc(030, weight = 4, covariate1 = 5);    check_tail(tail(acc), "\10\14\20\30");    check_tail(tail_variate(acc), "\3\4\1\5");    check_tail(tail_weights(acc), "\2\6\7\4");    acc(001, weight = 1, covariate1 = 9);    check_tail(tail(acc), "\1\10\14\20");    check_tail(tail_variate(acc), "\x9\3\4\1");    check_tail(tail_weights(acc), "\1\2\6\7");    acc(011, weight = 3, covariate1 = 7);    check_tail(tail(acc), "\1\10\11\14");    check_tail(tail_variate(acc), "\x9\3\7\4");    check_tail(tail_weights(acc), "\1\2\3\6");}///////////////////////////////////////////////////////////////////////////////// init_unit_test_suite//test_suite* init_unit_test_suite( int argc, char* argv[] ){    test_suite *test = BOOST_TEST_SUITE("tail test");    test->add(BOOST_TEST_CASE(&test_right_tail));    test->add(BOOST_TEST_CASE(&test_left_tail));    return test;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?