def test_taking_value_error_message(self):
     try:
         crt.taking(-5)
     except ValueError as e:
         self.assertEqual(
             e.args[0],
             'taking() requires a positive value.')
 def test_taking_doctest(self):
     result = []
     crt.consume(crt.taking(5)(
         crt.append(result)), range(1000))
     self.assertListEqual(
         result,
         list(range(5)))
    def test_reuse_single_taking_instance(self):
        take_5 = crt.taking(5)
        composed = compose(take_5, crt.mapping(lambda x: x * 2), take_5)

        result = []
        f = composed(crt.append(result))
        try:
            for i in range(1000):
                f.send(i)
        except crt.StopConsumption:
            pass

        expected = list(
            itertools.islice((x * 2 for x in itertools.islice(range(1000), 5)),
                             5))

        self.assertListEqual(result, expected)
    def test_reuse_single_taking_instance(self):
        take_5 = crt.taking(5)
        composed = compose(
            take_5,
            crt.mapping(lambda x: x * 2),
            take_5)

        result = []
        f = composed(crt.append(result))
        try:
            for i in range(1000):
                f.send(i)
        except crt.StopConsumption:
            pass

        expected = list(itertools.islice(
            (x * 2 for x in itertools.islice(range(1000), 5)), 5))

        self.assertListEqual(
            result,
            expected)
 def test_taking_works_for_size_one(self):
     crt.taking(1)
 def test_taking_value_error_message(self):
     try:
         crt.taking(-5)
     except ValueError as e:
         self.assertEqual(e.args[0], 'taking() requires a positive value.')
    def test_taking_requires_a_positive_argument(self):
        with self.assertRaises(ValueError):
            crt.taking(-5)

        with self.assertRaises(ValueError):
            crt.taking(0)
 def test_taking_doctest(self):
     result = []
     crt.consume(crt.taking(5)(crt.append(result)), range(1000))
     self.assertListEqual(result, list(range(5)))
 def test_taking_works_for_size_one(self):
     crt.taking(1)
    def test_taking_requires_a_positive_argument(self):
        with self.assertRaises(ValueError):
            crt.taking(-5)

        with self.assertRaises(ValueError):
            crt.taking(0)