Browse Source

Adding tests for range-stream and singleton-stream.
Fixing make_stream(T*) function.

Samuel Jaffe 8 years ago
parent
commit
81ea3ad158
2 changed files with 17 additions and 1 deletions
  1. 16 0
      stream.t.h
  2. 1 1
      streams/source.hpp

+ 16 - 0
stream.t.h

@@ -65,6 +65,22 @@ public:
     TS_ASSERT_EQUALS(expected, o);
   }
   
+  void test_singleton_stream() {
+    int_t value = 11;
+    auto even = [](int_t i) { return i%2==0; };
+    auto s = stream::make_stream(&value).filter( even );
+    TS_ASSERT(s.empty());
+  }
+
+  void test_stream_on_subrange() {
+    vec_t v{1, 2, 3, 4, 5};
+    vec_t expected{5, 7};
+    auto fmap = [](int_t i) { return 2*i+1; };
+    auto s = stream::make_stream(v.begin()+1, v.begin()+3).map( fmap );
+    vec_t o{s.begin(), s.end()};
+    TS_ASSERT_EQUALS(expected, o);
+  }
+
   void test_filter_noop() {
     vec_t v{1, 2, 3, 4, 5};
     auto pass = [](int_t i) { return true; };

+ 1 - 1
streams/source.hpp

@@ -54,7 +54,7 @@ namespace stream {
   
   template <typename T>
   detail::stream_base<T&> make_stream(T * ptr) {
-    return detail::range_stream<T*, T>(ptr, ptr+1);
+    return std::make_shared<detail::range_stream<T*, T&>>(ptr, ptr+1);
   }
 
   template <typename It>