#include #include #include #include #include #include #include #include #include "CommonTests.h" #include "boolinq.h" using namespace boolinq; ////////////////////////////////////////////////////////////////////////// TEST(IterRange, ListInt) { std::list lst; lst.push_back(1); lst.push_back(2); lst.push_back(3); lst.push_back(4); lst.push_back(5); int ans[] = {1,2,3,4,5}; CheckRangeEqArray(from(lst), ans); CheckRangeEqArray(from(lst.begin(), lst.end()), ans); CheckRangeEqArray(from(lst.cbegin(), lst.cend()), ans); } TEST(IterRange, DequeInt) { std::deque dck; dck.push_back(1); dck.push_back(2); dck.push_back(3); dck.push_back(4); dck.push_back(5); int ans[] = {1,2,3,4,5}; CheckRangeEqArray(from(dck), ans); CheckRangeEqArray(from(dck.begin(), dck.end()), ans); CheckRangeEqArray(from(dck.cbegin(), dck.cend()), ans); } TEST(IterRange, VectorInt) { std::vector vec; vec.push_back(1); vec.push_back(2); vec.push_back(3); vec.push_back(4); vec.push_back(5); int ans[] = {1,2,3,4,5}; CheckRangeEqArray(from(vec), ans); CheckRangeEqArray(from(vec.begin(), vec.end()), ans); CheckRangeEqArray(from(vec.cbegin(), vec.cend()), ans); } TEST(IterRange, SetInt) { std::set set = {1,2,3,4,5}; int ans[] = {1,2,3,4,5}; CheckRangeEqSet(from(set), ans); CheckRangeEqSet(from(set.begin(), set.end()), ans); CheckRangeEqSet(from(set.cbegin(), set.cend()), ans); } TEST(IterRange, MapInt) { std::map map = {{5,1},{4,2},{3,3},{2,4},{1,5}}; std::pair ans[] = {{5,1},{4,2},{3,3},{2,4},{1,5}}; CheckRangeEqArray(from(map) .orderBy([](std::pair p){ return p.second; }), ans); CheckRangeEqArray(from >(map.begin(), map.end()) .orderBy([](std::pair p){ return p.second; }), ans); CheckRangeEqArray(from >(map.cbegin(), map.cend()) .orderBy([](std::pair p){ return p.second; }), ans); } TEST(IterRange, StdArrayInt) { std::array arr = { {1,2,3,4,5} }; int ans[] = {1,2,3,4,5}; CheckRangeEqArray(from(arr), ans); CheckRangeEqArray(from(arr.begin(), arr.end()), ans); CheckRangeEqArray(from(arr.cbegin(), arr.cend()), ans); } TEST(IterRange, ArrayInt) { int arr[] = {1,2,3,4,5}; int * ptr = static_cast(arr); int ans[] = {1,2,3,4,5}; CheckRangeEqArray(from(arr), ans); CheckRangeEqArray(from(ptr, 5), ans); CheckRangeEqArray(from(ptr, ptr+5), ans); } ////////////////////////////////////////////////////////////////////////// TEST(IterRange, OneElement) { int src[] = {5}; int ans[] = {5}; auto rng = from(src); CheckRangeEqArray(rng, ans); } TEST(IterRange, EmptyVector) { std::vector src; auto rng = from(src); EXPECT_THROW(rng.nextObject(), EnumeratorEndException); }