(self)
| 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 |
nothing calls this directly
no test coverage detected