Example #1
0
    def test_early_terminating_transducer(self):
        input = [0.0, 0.2, 0.8, 0.9, 1.1, 2.3, 2.6, 3.0, 4.1]
        output = SingularSink()

        iterable_source(iterable=input,
                        target=transduce(first(lambda x: x > 1.0),
                                         target=output()))
        self.assertEqual(output.value, 1.1)
Example #2
0
    def test_two_items_causes_completion(self):
        singular_sink = SingularSink()

        transduce(Transducer,
                  sending(),
                  [23, 78],
                  init=singular_sink())

        self.assertTrue(singular_sink.has_value)
Example #3
0
 def test_one_sent_item_has_value(self):
     singular_sink = SingularSink()
     sink = singular_sink()
     sink.send(78)
     self.assertTrue(singular_sink.has_value)
Example #4
0
 def test_closed_target_exits_with_remaining_items(self):
     items = [4, 7, 2, 1, 4]
     collection = SingularSink()
     sink = collection()
     remaining = poisson_source(1e6, items, sink)
     self.assertListEqual(list(remaining), [7, 2, 1, 4])
Example #5
0
 def test_zero_sent_items_has_no_value(self):
     singular_sink = SingularSink()
     sink = singular_sink()
     self.assertFalse(singular_sink.has_value)
Example #6
0
 def test_closed_sink_raises_stop_iteration(self):
     singular_sink = SingularSink()
     sink = singular_sink()
     sink.close()
     with self.assertRaises(StopIteration):
         sink.send(42)
Example #7
0
 def test_two_items_sent_raises_stop_iteration(self):
     singular_sink = SingularSink()
     sink = singular_sink()
     sink.send(342)
     with self.assertRaises(StopIteration):
         sink.send(124)
Example #8
0
 def test_one_sent_item_can_be_retrieved(self):
     singular_sink = SingularSink()
     sink = singular_sink()
     sink.send(496)
     self.assertEqual(singular_sink.value, 496)
Example #9
0
 def test_no_items_raises_runtime_error(self):
     singular_sink = SingularSink()
     sink = singular_sink()
     with self.assertRaises(RuntimeError):
         _ = singular_sink.value