Ejemplo n.º 1
0
    def subtest_cursor(self, query, iterable, expected_results):

        self.assertRaises(ValueError, Cursor, None, None)
        self.assertRaises(ValueError, Cursor, query, None)
        self.assertRaises(ValueError, Cursor, None, iterable)
        cursor = Cursor(query, iterable)
        self.assertEqual(cursor.skipped, 0)
        self.assertEqual(cursor.returned, 0)

        cursor._ensure_modification_is_safe()
        cursor.apply_filter()
        cursor.apply_order()
        cursor.apply_offset()
        cursor.apply_limit()

        cursor_results = []
        for i in cursor:
            self.assertRaises(AssertionError, cursor._ensure_modification_is_safe)
            self.assertRaises(AssertionError, cursor.apply_filter)
            self.assertRaises(AssertionError, cursor.apply_order)
            self.assertRaises(AssertionError, cursor.apply_offset)
            self.assertRaises(AssertionError, cursor.apply_limit)
            cursor_results.append(i)

        # ensure iteration happens only once.
        self.assertRaises(RuntimeError, iter, cursor)

        self.assertEqual(cursor_results, expected_results)
        self.assertEqual(cursor.returned, len(expected_results))
        self.assertEqual(cursor.skipped, query.offset)
        if query.limit:
            self.assertTrue(cursor.returned <= query.limit)