/*-----------------------------------------------------------------------------+ Copyright (c) 2008-2009: Joachim Faulhaber +------------------------------------------------------------------------------+ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENCE.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +-----------------------------------------------------------------------------*/ #define BOOST_TEST_MODULE icl::test_doc_code unit test #include #include #include #include #include #include #include "../unit_test_unwarned.hpp" // interval instance types #include "../test_type_lists.hpp" #include "../test_value_maker.hpp" #include #include #include #include #include "../test_laws.hpp" using namespace std; using namespace boost; using namespace unit_test; using namespace boost::icl; BOOST_AUTO_TEST_CASE(intro_sample_telecast) { // Switch on my favorite telecasts using an interval_set interval::type news(2000, 2015); interval::type talk_show(2245, 2330); interval_set myTvProgram; myTvProgram.add(news).add(talk_show); // Iterating over elements (seconds) would be silly ... for(interval_set::iterator telecast = myTvProgram.begin(); telecast != myTvProgram.end(); ++telecast) //...so this iterates over intervals //TV.switch_on(*telecast); cout << *telecast; cout << endl; } BOOST_AUTO_TEST_CASE(interface_sample_identifiers) { typedef interval_set > IdentifiersT; IdentifiersT identifiers, excluded; // special identifiers shall be excluded identifiers += continuous_interval::right_open("a", "c"); identifiers -= std::string("boost"); cout << "identifiers: " << identifiers << endl; excluded = IdentifiersT(icl::hull(identifiers)) - identifiers; cout << "excluded : " << excluded << endl; if(icl::contains(identifiers, std::string("boost"))) cout << "error, identifiers.contains('boost')\n"; } BOOST_AUTO_TEST_CASE(function_reference_element_iteration) { // begin of doc code ------------------------------------------------------- interval_set inter_set; inter_set.add(interval::right_open(0,3)) .add(interval::right_open(7,9)); for(interval_set::element_const_iterator creeper = elements_begin(inter_set); creeper != elements_end(inter_set); ++creeper) cout << *creeper << " "; cout << endl; //Program output: 0 1 2 7 8 for(interval_set::element_reverse_iterator repeerc = elements_rbegin(inter_set); repeerc != elements_rend(inter_set); ++repeerc) cout << *repeerc << " "; cout << endl; //Program output: 8 7 2 1 0 // end of doc code --------------------------------------------------------- // Testcode std::stringstream result; for(interval_set::element_iterator creeper2 = elements_begin(inter_set); creeper2 != elements_end(inter_set); ++creeper2) result << *creeper2 << " "; BOOST_CHECK_EQUAL(result.str(), std::string("0 1 2 7 8 ")); std::stringstream tluser; for(interval_set::element_const_reverse_iterator repeerc2 = elements_rbegin(const_cast&>(inter_set)); repeerc2 != elements_rend(const_cast&>(inter_set)); ++repeerc2) tluser << *repeerc2 << " "; BOOST_CHECK_EQUAL(tluser.str(), std::string("8 7 2 1 0 ")); }