#include #include #include #include #include #define ASSERT_THROWS(expression) \ try { \ (expression); \ assert(false && "Expected exception did not throw: " #expression); \ } catch (...) { \ } #define TEST_CONTAINER(container) \ for (int i = 0; i < size; ++i) \ assert(easyfind((container), array[i]) == i); \ ASSERT_THROWS(easyfind((container), 256)); int main() { const int array[] = {1, 2, 4, 8, 16, 32, 64, 128}; const int size = sizeof(array) / sizeof(array[0]); const int* last = array + size; { std::vector vector(array, last); std::deque deque(array, last); std::list list(array, last); TEST_CONTAINER(vector); TEST_CONTAINER(deque); TEST_CONTAINER(list); } { const std::vector vector(array, last); const std::deque deque(array, last); const std::list list(array, last); TEST_CONTAINER(vector); TEST_CONTAINER(deque); TEST_CONTAINER(list); } }