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)
def test_two_items_causes_completion(self): singular_sink = SingularSink() transduce(Transducer, sending(), [23, 78], init=singular_sink()) self.assertTrue(singular_sink.has_value)
def test_one_sent_item_has_value(self): singular_sink = SingularSink() sink = singular_sink() sink.send(78) self.assertTrue(singular_sink.has_value)
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])
def test_zero_sent_items_has_no_value(self): singular_sink = SingularSink() sink = singular_sink() self.assertFalse(singular_sink.has_value)
def test_closed_sink_raises_stop_iteration(self): singular_sink = SingularSink() sink = singular_sink() sink.close() with self.assertRaises(StopIteration): sink.send(42)
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)
def test_one_sent_item_can_be_retrieved(self): singular_sink = SingularSink() sink = singular_sink() sink.send(496) self.assertEqual(singular_sink.value, 496)
def test_no_items_raises_runtime_error(self): singular_sink = SingularSink() sink = singular_sink() with self.assertRaises(RuntimeError): _ = singular_sink.value