📄 common.ipp
字号:
BOOST_CHECK(it3 == cb3.end()); BOOST_CHECK(cb3[0] == 1); BOOST_CHECK(cb3[1] == 2); generic_test(cb1); generic_test(cb2); generic_test(cb3);}void erase_range_test() { CB_CONTAINER<MyInteger> cb1(4); cb1.push_back(1); cb1.push_back(2); cb1.push_back(3); cb1.push_back(4); CB_CONTAINER<MyInteger>::iterator it1 = cb1.erase(cb1.begin() + 1, cb1.begin() + 3); CB_CONTAINER<MyInteger> cb2(4); cb2.push_back(1); cb2.push_back(2); cb2.push_back(3); cb2.push_back(4); CB_CONTAINER<MyInteger>::iterator it2 = cb2.erase(cb2.begin(), cb2.begin()); CB_CONTAINER<MyInteger> cb3(4); cb3.push_back(1); cb3.push_back(2); cb3.push_back(3); cb3.push_back(4); CB_CONTAINER<MyInteger>::iterator it3 = cb3.erase(cb3.begin() + 2, cb3.end()); CB_CONTAINER<MyInteger> cb4(10, 1); CB_CONTAINER<MyInteger>::iterator it4 = cb4.erase(cb4.begin(), cb4.end()); BOOST_CHECK(cb1.size() == 2); BOOST_CHECK(cb1.capacity() == 4); BOOST_CHECK(cb1[0] == 1); BOOST_CHECK(cb1[1] == 4); BOOST_CHECK(*it1 == 4); BOOST_CHECK(cb2.size() == 4); BOOST_CHECK(cb2[0] == 1); BOOST_CHECK(cb2[3] == 4); BOOST_CHECK(*it2 == 1); BOOST_CHECK(cb3.size() == 2); BOOST_CHECK(cb3.capacity() == 4); BOOST_CHECK(cb3[0] == 1); BOOST_CHECK(cb3[1] == 2); BOOST_CHECK(it3 == cb3.end()); BOOST_CHECK(cb4.size() == 0); BOOST_CHECK(cb4.capacity() == 10); BOOST_CHECK(it4 == cb4.end()); generic_test(cb1); generic_test(cb2); generic_test(cb3); generic_test(cb4);}void rerase_test() { CB_CONTAINER<MyInteger> cb1(4); cb1.push_back(1); cb1.push_back(2); cb1.push_back(3); CB_CONTAINER<MyInteger>::iterator it1 = cb1.rerase(cb1.begin() + 1); CB_CONTAINER<MyInteger> cb2(1, 1); CB_CONTAINER<MyInteger>::iterator it2 = cb2.rerase(cb2.begin()); CB_CONTAINER<MyInteger> cb3(4); cb3.push_back(1); cb3.push_back(2); cb3.push_back(3); CB_CONTAINER<MyInteger>::iterator it3 = cb3.rerase(cb3.begin()); BOOST_CHECK(cb1.size() == 2); BOOST_CHECK(cb1.capacity() == 4); BOOST_CHECK(*it1 == 1); BOOST_CHECK(cb1[0] == 1); BOOST_CHECK(cb1[1] == 3); BOOST_CHECK(cb2.size() == 0); BOOST_CHECK(cb2.capacity() == 1); BOOST_CHECK(it2 == cb2.begin()); BOOST_CHECK(cb3.size() == 2); BOOST_CHECK(cb3.capacity() == 4); BOOST_CHECK(it3 == cb3.begin()); BOOST_CHECK(*it3 == 2); BOOST_CHECK(cb3[0] == 2); BOOST_CHECK(cb3[1] == 3); generic_test(cb1); generic_test(cb2); generic_test(cb3);}void rerase_range_test() { CB_CONTAINER<MyInteger> cb1(4); cb1.push_back(1); cb1.push_back(2); cb1.push_back(3); cb1.push_back(4); CB_CONTAINER<MyInteger>::iterator it1 = cb1.rerase(cb1.begin() + 1, cb1.begin() + 3); CB_CONTAINER<MyInteger> cb2(4); cb2.push_back(1); cb2.push_back(2); cb2.push_back(3); cb2.push_back(4); CB_CONTAINER<MyInteger>::iterator it2 = cb2.rerase(cb2.begin(), cb2.begin()); CB_CONTAINER<MyInteger> cb3(4); cb3.push_back(1); cb3.push_back(2); cb3.push_back(3); cb3.push_back(4); CB_CONTAINER<MyInteger>::iterator it3 = cb3.rerase(cb3.begin(), cb3.begin() + 2); CB_CONTAINER<MyInteger> cb4(10, 1); CB_CONTAINER<MyInteger>::iterator it4 = cb4.rerase(cb4.begin(), cb4.end()); BOOST_CHECK(cb1.size() == 2); BOOST_CHECK(cb1.capacity() == 4); BOOST_CHECK(cb1[0] == 1); BOOST_CHECK(cb1[1] == 4); BOOST_CHECK(*it1 == 1); BOOST_CHECK(cb2.size() == 4); BOOST_CHECK(cb2[0] == 1); BOOST_CHECK(cb2[3] == 4); BOOST_CHECK(*it2 == 1); BOOST_CHECK(cb3.size() == 2); BOOST_CHECK(cb3.capacity() == 4); BOOST_CHECK(cb3[0] == 3); BOOST_CHECK(cb3[1] == 4); BOOST_CHECK(it3 == cb3.begin()); BOOST_CHECK(cb4.size() == 0); BOOST_CHECK(cb4.capacity() == 10); BOOST_CHECK(it4 == cb4.begin()); generic_test(cb1); generic_test(cb2); generic_test(cb3); generic_test(cb4);}void clear_test() { CB_CONTAINER<MyInteger> cb(4); cb.push_back(1); cb.push_back(2); cb.push_back(3); cb.push_back(4); cb.clear(); BOOST_CHECK(cb.empty()); generic_test(cb);}void equality_test() { CB_CONTAINER<MyInteger> cb1(4); cb1.push_back(1); cb1.push_back(2); cb1.push_back(3); cb1.push_back(4); CB_CONTAINER<MyInteger> cb2(10); cb2.push_back(1); cb2.push_back(2); cb2.push_back(3); cb2.push_back(4); BOOST_CHECK(cb1 == cb2); BOOST_CHECK(!(cb2 != cb1)); generic_test(cb1); generic_test(cb2);}void lexicographical_comparison_test() { CB_CONTAINER<char> cb1(10); cb1.push_back('a'); cb1.push_back('d'); cb1.push_back('a'); cb1.push_back('m'); CB_CONTAINER<char> cb2(5); cb2.push_back('j'); cb2.push_back('o'); cb2.push_back('h'); cb2.push_back('n'); BOOST_CHECK(cb2 > cb1); BOOST_CHECK(cb1 < cb2);}void assign_range_test() { vector<int> v; v.push_back(11); v.push_back(12); v.push_back(13); CB_CONTAINER<MyInteger> cb1(4); cb1.push_back(1); cb1.push_back(2); cb1.push_back(3); cb1.assign(v.begin() + 1, v.end()); CB_CONTAINER<MyInteger> cb2(2); cb2.push_back(1); cb2.push_back(2); cb2.assign(v.begin(), v.end()); BOOST_CHECK(cb1.capacity() == 2); BOOST_CHECK(cb1[0] == 12); BOOST_CHECK(cb1[1] == 13); BOOST_CHECK(cb2.full()); BOOST_CHECK(cb2.capacity() == 3); BOOST_CHECK(cb2[0] == 11); BOOST_CHECK(cb2[1] == 12); BOOST_CHECK(cb2[2] == 13); BOOST_CHECK(cb2.size() == (size_t)distance(v.begin(), v.end())); generic_test(cb1); generic_test(cb2);}// test of the example (introduced in the documentation)void example_test() { CB_CONTAINER<int> cb1(3); cb1.push_back(1); cb1.push_back(2); BOOST_CHECK(cb1[0] == 1); BOOST_CHECK(cb1[1] == 2); BOOST_CHECK(!cb1.full()); BOOST_CHECK(cb1.size() == 2); BOOST_CHECK(cb1.capacity() == 3); cb1.push_back(3); cb1.push_back(4); int sum = accumulate(cb1.begin(), cb1.end(), 0); BOOST_CHECK(cb1[0] == 2); BOOST_CHECK(cb1[1] == 3); BOOST_CHECK(cb1[2] == 4); BOOST_CHECK(*cb1.begin() == 2); BOOST_CHECK(cb1.front() == 2); BOOST_CHECK(cb1.back() == 4); BOOST_CHECK(sum == 9); BOOST_CHECK(cb1.full()); BOOST_CHECK(cb1.size() == 3); BOOST_CHECK(cb1.capacity() == 3); CB_CONTAINER<int> cb2(5, 1); cb2.insert(cb2.begin(), 2); BOOST_CHECK(cb2[0] == 1); BOOST_CHECK(cb2[1] == 1); BOOST_CHECK(cb2[2] == 1); BOOST_CHECK(cb2[3] == 1); BOOST_CHECK(cb2[4] == 1); vector<int> v; v.push_back(100); v.push_back(200); v.push_back(300); cb2.insert(cb2.begin() + 1, v.begin(), v.end()); BOOST_CHECK(cb2[0] == 300); BOOST_CHECK(cb2[1] == 1); BOOST_CHECK(cb2[2] == 1); BOOST_CHECK(cb2[3] == 1); BOOST_CHECK(cb2[4] == 1); CB_CONTAINER<int> cb3(3); cb3.push_back(1); cb3.push_back(2); cb3.push_back(3); BOOST_CHECK(cb3[0] == 1); BOOST_CHECK(cb3[1] == 2); BOOST_CHECK(cb3[2] == 3); cb3.push_back(4); cb3.push_back(5); BOOST_CHECK(cb3[0] == 3); BOOST_CHECK(cb3[1] == 4); BOOST_CHECK(cb3[2] == 5); cb3.pop_back(); cb3.pop_front(); BOOST_CHECK(cb3[0] == 4);}void element_destruction_test() { CB_CONTAINER<InstanceCounter> cb(5); cb.push_back(InstanceCounter()); cb.push_back(InstanceCounter()); cb.push_back(InstanceCounter()); int prevCount = InstanceCounter::count(); cb.clear(); BOOST_CHECK(cb.empty()); BOOST_CHECK(prevCount == 3); BOOST_CHECK(InstanceCounter::count() == 0);}void const_methods_test() { vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); v.push_back(5); const CB_CONTAINER<MyInteger> cb(5, v.begin(), v.end()); BOOST_CHECK(*cb.begin() == 1); BOOST_CHECK(*(cb.end() - 1) == 5); BOOST_CHECK(*cb.rbegin() == 5); BOOST_CHECK(*(cb.rend() - 1) == 1); BOOST_CHECK(cb[0] == 1); BOOST_CHECK(cb.at(1) == 2); BOOST_CHECK(cb.front() == 1); BOOST_CHECK(cb.back() == 5);}void rotate_test() { CB_CONTAINER<MyInteger> cb1(10); cb1.push_back(1); cb1.push_back(2); cb1.push_back(3); cb1.push_back(4); cb1.push_back(5); cb1.push_back(6); cb1.push_back(7); CB_CONTAINER<MyInteger> cb2 = cb1; CB_CONTAINER<MyInteger>::iterator it1 = cb1.begin() + 2; int v1_0 = *it1; int v1_1 = *(it1 + 1); int v1_2 = *(it1 + 2); int v1_3 = *(it1 + 3); int v1_4 = *(it1 + 4); int v1_r1 = *(it1 - 1); int v1_r2 = *(it1 - 2); cb1.rotate(it1); rotate(cb2.begin(), cb2.begin() + 2, cb2.end()); CB_CONTAINER<MyInteger> cb3(7); cb3.push_back(1); cb3.push_back(2); cb3.push_back(3); cb3.push_back(4); cb3.push_back(5); cb3.push_back(6); cb3.push_back(7); cb3.push_back(8); cb3.push_back(9); CB_CONTAINER<MyInteger> cb4 = cb3; CB_CONTAINER<MyInteger>::iterator it2 = cb3.begin() + 1; int v2_0 = *it2; int v2_1 = *(it2 + 1); int v2_2 = *(it2 + 2); int v2_3 = *(it2 + 3); int v2_4 = *(it2 + 4); int v2_5 = *(it2 + 5); int v2_r1 = *(it2 - 1); cb3.rotate(it2); rotate(cb4.begin(), cb4.begin() + 1, cb4.end()); CB_CONTAINER<MyInteger> cb5(10); cb5.push_back(1); cb5.push_back(2); cb5.push_back(3); cb5.push_back(4); cb5.push_back(5); cb5.push_back(6); cb5.push_back(7); CB_CONTAINER<MyInteger> cb6 = cb5; CB_CONTAINER<MyInteger>::iterator it3 = cb5.begin() + 5; int v3_0 = *it3; int v3_1 = *(it3 + 1); int v3_r1 = *(it3 - 1); int v3_r2 = *(it3 - 2); int v3_r3 = *(it3 - 3); int v3_r4 = *(it3 - 4); int v3_r5 = *(it3 - 5); cb5.rotate(it3); rotate(cb6.begin(), cb6.begin() + 5, cb6.end()); BOOST_CHECK(!cb1.full()); BOOST_CHECK(cb1 == cb2); BOOST_CHECK(v1_0 == *it1); BOOST_CHECK(v1_1 == *(it1 + 1)); BOOST_CHECK(v1_2 == *(it1 + 2)); BOOST_CHECK(v1_3 == *(it1 + 3)); BOOST_CHECK(v1_4 == *(it1 + 4)); BOOST_CHECK(v1_r1 == *(it1 + 6)); BOOST_CHECK(v1_r2 == *(it1 + 5)); BOOST_CHECK(cb1.begin() == it1); BOOST_CHECK(v1_0 == cb1[0]); BOOST_CHECK(v1_1 == cb1[1]); BOOST_CHECK(v1_2 == cb1[2]); BOOST_CHECK(v1_3 == cb1[3]); BOOST_CHECK(v1_4 == cb1[4]); BOOST_CHECK(v1_r1 == cb1[6]); BOOST_CHECK(v1_r2 == cb1[5]); BOOST_CHECK(cb3.full()); BOOST_CHECK(cb3 == cb4); BOOST_CHECK(v2_0 == *it2); BOOST_CHECK(v2_1 == *(it2 + 1)); BOOST_CHECK(v2_2 == *(it2 + 2)); BOOST_CHECK(v2_3 == *(it2 + 3)); BOOST_CHECK(v2_4 == *(it2 + 4)); BOOST_CHECK(v2_5 == *(it2 + 5)); BOOST_CHECK(v2_r1 == *(it2 + 6)); BOOST_CHECK(cb3.begin() == it2); BOOST_CHECK(v2_0 == cb3[0]); BOOST_CHECK(v2_1 == cb3[1]); BOOST_CHECK(v2_2 == cb3[2]); BOOST_CHECK(v2_3 == cb3[3]); BOOST_CHECK(v2_4 == cb3[4]); BOOST_CHECK(v2_5 == cb3[5]); BOOST_CHECK(v2_r1 == cb3[6]); BOOST_CHECK(!cb5.full()); BOOST_CHECK(cb5 == cb6); BOOST_CHECK(v3_0 == cb5[0]); BOOST_CHECK(v3_1 == cb5[1]); BOOST_CHECK(v3_r1 == cb5[6]); BOOST_CHECK(v3_r2 == cb5[5]); BOOST_CHECK(v3_r3 == cb5[4]); BOOST_CHECK(v3_r4 == cb5[3]); BOOST_CHECK(v3_r5 == cb5[2]); generic_test(cb1); generic_test(cb2); generic_test(cb3); generic_test(cb4); generic_test(cb5); generic_test(cb6);}int MyInteger::ms_exception_trigger = 0;int InstanceCounter::ms_count = 0;// add common tests into a test suitevoid add_common_tests(test_suite* tests) { tests->add(BOOST_TEST_CASE(&basic_test)); tests->add(BOOST_TEST_CASE(&constructor_and_element_access_test)); tests->add(BOOST_TEST_CASE(&size_test)); tests->add(BOOST_TEST_CASE(&allocator_test)); tests->add(BOOST_TEST_CASE(&begin_and_end_test)); tests->add(BOOST_TEST_CASE(&rbegin_and_rend_test)); tests->add(BOOST_TEST_CASE(&element_access_and_insert_test)); tests->add(BOOST_TEST_CASE(&at_test)); tests->add(BOOST_TEST_CASE(&front_and_back_test)); tests->add(BOOST_TEST_CASE(&linearize_test)); tests->add(BOOST_TEST_CASE(&array_range_test)); tests->add(BOOST_TEST_CASE(&capacity_and_reserve_test)); tests->add(BOOST_TEST_CASE(&full_and_empty_test)); tests->add(BOOST_TEST_CASE(&set_capacity_test)); tests->add(BOOST_TEST_CASE(&rset_capacity_test)); tests->add(BOOST_TEST_CASE(&resize_test)); tests->add(BOOST_TEST_CASE(&rresize_test)); tests->add(BOOST_TEST_CASE(&constructor_test)); tests->add(BOOST_TEST_CASE(&assign_test)); tests->add(BOOST_TEST_CASE(©_constructor_and_assign_test)); tests->add(BOOST_TEST_CASE(&swap_test)); tests->add(BOOST_TEST_CASE(&push_back_test)); tests->add(BOOST_TEST_CASE(&pop_back_test)); tests->add(BOOST_TEST_CASE(&insert_test)); tests->add(BOOST_TEST_CASE(&insert_n_test)); tests->add(BOOST_TEST_CASE(&insert_range_test)); tests->add(BOOST_TEST_CASE(&push_front_test)); tests->add(BOOST_TEST_CASE(&pop_front_test)); tests->add(BOOST_TEST_CASE(&rinsert_test)); tests->add(BOOST_TEST_CASE(&rinsert_n_test)); tests->add(BOOST_TEST_CASE(&rinsert_range_test)); tests->add(BOOST_TEST_CASE(&erase_test)); tests->add(BOOST_TEST_CASE(&erase_range_test)); tests->add(BOOST_TEST_CASE(&rerase_test)); tests->add(BOOST_TEST_CASE(&rerase_range_test)); tests->add(BOOST_TEST_CASE(&clear_test)); tests->add(BOOST_TEST_CASE(&equality_test)); tests->add(BOOST_TEST_CASE(&lexicographical_comparison_test)); tests->add(BOOST_TEST_CASE(&assign_range_test)); tests->add(BOOST_TEST_CASE(&example_test)); tests->add(BOOST_TEST_CASE(&element_destruction_test)); tests->add(BOOST_TEST_CASE(&const_methods_test)); tests->add(BOOST_TEST_CASE(&rotate_test));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -