|
@@ -16,6 +16,7 @@
|
|
|
|
|
|
|
|
class stream_TestSuite : public CxxTest::TestSuite {
|
|
class stream_TestSuite : public CxxTest::TestSuite {
|
|
|
public:
|
|
public:
|
|
|
|
|
+ using int_t = int const &;
|
|
|
using vec_t = std::vector<int>;
|
|
using vec_t = std::vector<int>;
|
|
|
public:
|
|
public:
|
|
|
void test_preserved() {
|
|
void test_preserved() {
|
|
@@ -46,7 +47,7 @@ public:
|
|
|
|
|
|
|
|
void test_map_identity() {
|
|
void test_map_identity() {
|
|
|
vec_t v{1, 2, 3, 4, 5};
|
|
vec_t v{1, 2, 3, 4, 5};
|
|
|
- auto identity = [](int const & i) { return i; };
|
|
|
|
|
|
|
+ auto identity = [](int_t i) { return i; };
|
|
|
auto s = stream::make_stream(v).map( identity );
|
|
auto s = stream::make_stream(v).map( identity );
|
|
|
vec_t o{s.begin(), s.end()};
|
|
vec_t o{s.begin(), s.end()};
|
|
|
TS_ASSERT_EQUALS(v, o);
|
|
TS_ASSERT_EQUALS(v, o);
|
|
@@ -55,7 +56,7 @@ public:
|
|
|
void test_map_change() {
|
|
void test_map_change() {
|
|
|
vec_t v{1, 2, 3, 4, 5};
|
|
vec_t v{1, 2, 3, 4, 5};
|
|
|
vec_t expected{3, 5, 7, 9, 11};
|
|
vec_t expected{3, 5, 7, 9, 11};
|
|
|
- auto fmap = [](int const & i) { return 2*i+1; };
|
|
|
|
|
|
|
+ auto fmap = [](int_t i) { return 2*i+1; };
|
|
|
auto s = stream::make_stream(v).map( fmap );
|
|
auto s = stream::make_stream(v).map( fmap );
|
|
|
vec_t o{s.begin(), s.end()};
|
|
vec_t o{s.begin(), s.end()};
|
|
|
TS_ASSERT_EQUALS(expected, o);
|
|
TS_ASSERT_EQUALS(expected, o);
|
|
@@ -63,7 +64,7 @@ public:
|
|
|
|
|
|
|
|
void test_filter_noop() {
|
|
void test_filter_noop() {
|
|
|
vec_t v{1, 2, 3, 4, 5};
|
|
vec_t v{1, 2, 3, 4, 5};
|
|
|
- auto pass = [](int const & i) { return true; };
|
|
|
|
|
|
|
+ auto pass = [](int_t i) { return true; };
|
|
|
auto s = stream::make_stream(v).filter( pass );
|
|
auto s = stream::make_stream(v).filter( pass );
|
|
|
vec_t o{s.begin(), s.end()};
|
|
vec_t o{s.begin(), s.end()};
|
|
|
TS_ASSERT_EQUALS(v, o);
|
|
TS_ASSERT_EQUALS(v, o);
|
|
@@ -72,7 +73,7 @@ public:
|
|
|
void test_filter_value() {
|
|
void test_filter_value() {
|
|
|
vec_t v{1, 2, 3, 4, 5};
|
|
vec_t v{1, 2, 3, 4, 5};
|
|
|
vec_t expected{2, 4};
|
|
vec_t expected{2, 4};
|
|
|
- auto even = [](int const & i) { return i%2 == 0; };
|
|
|
|
|
|
|
+ auto even = [](int_t i) { return i%2 == 0; };
|
|
|
auto s = stream::make_stream(v).filter( even );
|
|
auto s = stream::make_stream(v).filter( even );
|
|
|
vec_t o{s.begin(), s.end()};
|
|
vec_t o{s.begin(), s.end()};
|
|
|
TS_ASSERT_EQUALS(expected, o);
|
|
TS_ASSERT_EQUALS(expected, o);
|
|
@@ -80,15 +81,16 @@ public:
|
|
|
|
|
|
|
|
void test_accumulate() {
|
|
void test_accumulate() {
|
|
|
vec_t v{1, 2, 3, 4, 5};
|
|
vec_t v{1, 2, 3, 4, 5};
|
|
|
- auto even = [](int const & i) { return i%2 == 0; };
|
|
|
|
|
|
|
+ auto even = [](int_t i) { return i%2 == 0; };
|
|
|
|
|
+ auto sum =[](int_t lhs, int_t rhs) { return lhs + rhs; };
|
|
|
auto s = stream::make_stream(v).filter( even );
|
|
auto s = stream::make_stream(v).filter( even );
|
|
|
- TS_ASSERT_EQUALS( 6 , s.accumulate([](int const & lhs, int const & rhs) { return lhs + rhs; }, 0) );
|
|
|
|
|
|
|
+ TS_ASSERT_EQUALS( 6 , s.accumulate(sum, 0) );
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void test_flatmap_joins_lists() {
|
|
void test_flatmap_joins_lists() {
|
|
|
std::vector<vec_t> vv{{1, 2, 3}, {2, 3, 4}, {3, 4, 5}, {4, 5, 6}, {5, 6, 7}};
|
|
std::vector<vec_t> vv{{1, 2, 3}, {2, 3, 4}, {3, 4, 5}, {4, 5, 6}, {5, 6, 7}};
|
|
|
vec_t expected{1, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 6, 5, 6, 7};
|
|
vec_t expected{1, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 6, 5, 6, 7};
|
|
|
- auto identity = [](int const & i) { return i; };
|
|
|
|
|
|
|
+ auto identity = [](int_t i) { return i; };
|
|
|
auto s = stream::make_stream(vv).flatmap( identity );
|
|
auto s = stream::make_stream(vv).flatmap( identity );
|
|
|
vec_t o{s.begin(), s.end()};
|
|
vec_t o{s.begin(), s.end()};
|
|
|
TS_ASSERT_EQUALS(expected, o);
|
|
TS_ASSERT_EQUALS(expected, o);
|