MCPcopy Index your code
hub / github.com/mongodb/mongo-python-driver / test_getitem_slice_index

Method test_getitem_slice_index

test/test_cursor.py:1017–1069  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1015 # Cursors don't support slicing
1016 @client_context.require_sync
1017 def test_getitem_slice_index(self):
1018 self.db.drop_collection("test")
1019 self.db.test.insert_many([{"i": i} for i in range(100)])
1020
1021 count = itertools.count
1022
1023 self.assertRaises(IndexError, lambda: self.db.test.find()[-1:])
1024 self.assertRaises(IndexError, lambda: self.db.test.find()[1:2:2])
1025
1026 for a, b in zip(count(0), self.db.test.find()): # type: ignore[call-overload]
1027 self.assertEqual(a, b["i"])
1028
1029 self.assertEqual(100, len(list(self.db.test.find()[0:]))) # type: ignore[call-overload]
1030 for a, b in zip(count(0), self.db.test.find()[0:]): # type: ignore[call-overload]
1031 self.assertEqual(a, b["i"])
1032
1033 self.assertEqual(80, len(list(self.db.test.find()[20:]))) # type: ignore[call-overload]
1034 for a, b in zip(count(20), self.db.test.find()[20:]): # type: ignore[call-overload]
1035 self.assertEqual(a, b["i"])
1036
1037 for a, b in zip(count(99), self.db.test.find()[99:]): # type: ignore[call-overload]
1038 self.assertEqual(a, b["i"])
1039
1040 for _i in self.db.test.find()[1000:]:
1041 self.fail()
1042
1043 self.assertEqual(5, len(list(self.db.test.find()[20:25]))) # type: ignore[call-overload]
1044 self.assertEqual(5, len(list(self.db.test.find()[20:25]))) # type: ignore[call-overload]
1045 for a, b in zip(count(20), self.db.test.find()[20:25]): # type: ignore[call-overload]
1046 self.assertEqual(a, b["i"])
1047
1048 self.assertEqual(80, len(list(self.db.test.find()[40:45][20:]))) # type: ignore[call-overload]
1049 for a, b in zip(count(20), self.db.test.find()[40:45][20:]): # type: ignore[call-overload]
1050 self.assertEqual(a, b["i"])
1051
1052 self.assertEqual(80, len(list(self.db.test.find()[40:45].limit(0).skip(20)))) # type: ignore[call-overload]
1053 for a, b in zip(count(20), self.db.test.find()[40:45].limit(0).skip(20)): # type: ignore[call-overload]
1054 self.assertEqual(a, b["i"])
1055
1056 self.assertEqual(80, len(list(self.db.test.find().limit(10).skip(40)[20:]))) # type: ignore[call-overload]
1057 for a, b in zip(count(20), self.db.test.find().limit(10).skip(40)[20:]): # type: ignore[call-overload]
1058 self.assertEqual(a, b["i"])
1059
1060 self.assertEqual(1, len(list(self.db.test.find()[:1]))) # type: ignore[call-overload]
1061 self.assertEqual(5, len(list(self.db.test.find()[:5]))) # type: ignore[call-overload]
1062
1063 self.assertEqual(1, len(list(self.db.test.find()[99:100]))) # type: ignore[call-overload]
1064 self.assertEqual(1, len(list(self.db.test.find()[99:1000]))) # type: ignore[call-overload]
1065 self.assertEqual(0, len(list(self.db.test.find()[10:10]))) # type: ignore[call-overload]
1066 self.assertEqual(0, len(list(self.db.test.find()[:0]))) # type: ignore[call-overload]
1067 self.assertEqual(80, len(list(self.db.test.find()[10:10].limit(0).skip(20)))) # type: ignore[call-overload]
1068
1069 self.assertRaises(IndexError, lambda: self.db.test.find()[10:8])
1070
1071 # Cursors don't support slicing
1072 @client_context.require_sync

Callers

nothing calls this directly

Calls 5

drop_collectionMethod · 0.45
insert_manyMethod · 0.45
findMethod · 0.45
skipMethod · 0.45
limitMethod · 0.45

Tested by

no test coverage detected