#include #include #include #include using namespace fuc2; namespace sample1 { void test_push_pop_back() { std::deque ages; for(int i = 0; i < 5; i++) { ages.push_back(i * 34); } CHECK(ages.size() == 5, "wrong count"); for(int i = 0; i < 5; i++) { ages.pop_back(); fmt::println("count: {}", ages.size()); } EQUAL(ages.size(), size_t(0), "wrong count"); NOT_EQUAL(ages.size(), size_t(5), "wrong count"); } void test_push_pop_front() { std::deque ages; for(int i = 0; i < 5; i++) { ages.push_front(i * 34); } CHECK(ages.size() == 5, "wrong count"); for(int i = 0; i < 5; i++) { ages.pop_front(); fmt::println("count: {}", ages.size()); } EQUAL(ages.size(), size_t(0), "wrong count"); } void test_push_blows_up() { std::deque ages; auto runner = [&]() { // uncomment this to see how the C++ stdlib sabotages you // ages.pop_front(); ages.at(10); }; BLOWS_UP(runner, "pop_front empty should crash"); } fuc2::Set TESTS{ .name="std::deque basic operations", .options={ .fail_fast=false }, .tests={ {"push_pop_back", test_push_pop_back}, {"push_pop_front", test_push_pop_front}, {"push_blows_up", test_push_blows_up}, } }; }