| 334 | self.assertEqual(docs, decode_all(mm)) |
| 335 | |
| 336 | def test_decode_buffer_protocol(self): |
| 337 | doc = {"foo": "bar"} |
| 338 | bs = encode(doc) |
| 339 | self.assertEqual(doc, decode(bs)) |
| 340 | self.assertEqual(doc, decode(bytearray(bs))) |
| 341 | self.assertEqual(doc, decode(memoryview(bs))) |
| 342 | self.assertEqual(doc, decode(memoryview(b"1" + bs + b"1")[1:-1])) |
| 343 | self.assertEqual(doc, decode(array.array("B", bs))) |
| 344 | with mmap.mmap(-1, len(bs)) as mm: |
| 345 | mm.write(bs) |
| 346 | mm.seek(0) |
| 347 | self.assertEqual(doc, decode(mm)) |
| 348 | |
| 349 | def test_invalid_decodes(self): |
| 350 | # Invalid object size (not enough bytes in document for even |