| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- //
- // filter_iterator.t.h
- // iterator
- //
- // Created by Sam Jaffe on 6/17/17.
- //
- #pragma once
- #include <cxxtest/TestSuite.h>
- #include "filter_iterator.hpp"
- class filter_iterator_TestSuite : public CxxTest::TestSuite {
- public:
- void test_returns_subset() {
- int data[] = { 1, 2, 3, 4, 5 };
- auto pred = [](int i) { return i%2 == 0; };
- auto it = make_filter_iterator(pred, data);
- decltype(it) end = {};
- TS_ASSERT_EQUALS(std::distance(it, end), 2);
- TS_ASSERT_EQUALS(*it++, 2);
- TS_ASSERT_EQUALS(*it++, 4);
- }
-
- void test_no_matches_marks_end() {
- int data[] = { 1, 3, 5 };
- auto pred = [](int i) { return i%2 == 0; };
- auto it = make_filter_iterator(pred, data);
- decltype(it) end = {};
- TS_ASSERT_EQUALS(it, end);
- }
-
- void test_cannot_advance_past_end() {
- int data[] = { 1, 2, 3, 4, 5 };
- auto pred = [](int i) { return i%2 == 0; };
- auto it = make_filter_iterator(pred, data);
- decltype(it) end = {};
- ++++it;
- TS_ASSERT_EQUALS(it, end);
- ++it;
- TS_ASSERT_EQUALS(it, end);
- }
- };
|