def test_serialize_queryset_by_batch_with_serializer(self):
        queryset = [list(range(10)) for i in range(8)]
        serializer = lambda rows: [list(map(lambda x: 2 * x, row)) for row in rows]

        gen = streaming.serialize_queryset_by_batch(queryset, serializer=serializer, batch_size=10)

        batch = next(gen)
        self.assertEqual(batch[0], list(range(0, 20, 2)))

        self.assertRaises(StopIteration, lambda: next(gen))
    def test_serialize_queryset_by_batch_with_serializer(self):
        queryset = [list(range(10)) for i in range(8)]
        serializer = lambda rows: [list(map(lambda x: 2 * x, row)) for row in rows]

        gen = streaming.serialize_queryset_by_batch(queryset, serializer=serializer, batch_size=10)

        batch = next(gen)
        self.assertEqual(batch[0], list(range(0, 20, 2)))

        self.assertRaises(StopIteration, lambda: next(gen))
    def _test_serialize_queryset_by_batch(self, queryset):
        gen = streaming.serialize_queryset_by_batch(queryset, serializer=lambda x: x, batch_size=10)

        batch = next(gen)
        self.assertEqual(len(batch), 10)
        self.assertTrue(lists_equal(batch[0], list(range(10))))
        self.assertTrue(lists_equal(batch[1], list(range(10, 20))))

        batch = next(gen)
        self.assertEqual(len(batch), 10)
        self.assertTrue(lists_equal(batch[0], list(range(100, 110))))

        batch = next(gen)
        self.assertEqual(len(batch), 7)

        self.assertRaises(StopIteration, lambda: next(gen))
    def test_serialize_queryset_by_batch(self):
        queryset = [list(range(10 * i, 10 * (i + 1))) for i in range(27)]
        gen = streaming.serialize_queryset_by_batch(queryset, serializer=lambda x: x, batch_size=10)

        batch = next(gen)
        self.assertEqual(len(batch), 10)
        self.assertTrue(lists_equal(batch[0], list(range(10))))
        self.assertTrue(lists_equal(batch[1], list(range(10, 20))))

        batch = next(gen)
        self.assertEqual(len(batch), 10)
        self.assertTrue(lists_equal(batch[0], list(range(100, 110))))

        batch = next(gen)
        self.assertEqual(len(batch), 7)

        self.assertRaises(StopIteration, lambda: next(gen))