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)