Skip to content
This repository was archived by the owner on Aug 30, 2024. It is now read-only.

Commit c1fa2df

Browse files
committed
Add all docs iterator test
1 parent 9b82d4c commit c1fa2df

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

src/cloudant/_2to3.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@
3232
# pylint: disable=undefined-variable
3333
LONGTYPE = long if PY2 else int
3434

35+
# pylint: disable=undefined-variable
36+
UNICHR = unichr if PY2 else chr
37+
3538
if PY2:
3639
# pylint: disable=wrong-import-position,no-name-in-module,import-error,unused-import
3740
from urllib import quote as url_quote, quote_plus as url_quote_plus

tests/unit/database_tests.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import os
3030
import uuid
3131

32+
from cloudant._2to3 import UNICHR
3233
from cloudant.result import Result, QueryResult
3334
from cloudant.error import CloudantArgumentError, CloudantDatabaseException
3435
from cloudant.document import Document
@@ -605,6 +606,39 @@ def test_document_iteration_over_fetch_limit(self):
605606
self.assertEqual(doc['name'], 'julia')
606607
self.assertEqual(doc['age'], int(id[len(id) - 3: len(id)]))
607608

609+
def test_document_iteration_completeness(self):
610+
"""
611+
Test __iter__ works as expected, fetching all documents from the
612+
database.
613+
"""
614+
for _ in self.db:
615+
self.fail('There should be no documents in the database yet!!')
616+
617+
# sample code point ranges
618+
include_ranges = [
619+
(0x0023, 0x0026),
620+
(0x00A1, 0x00AC),
621+
(0x0370, 0x0377),
622+
(0x037A, 0x037E),
623+
(0x0384, 0x038A),
624+
(0x16A0, 0x16F0),
625+
(0x2C60, 0x2C7F)
626+
]
627+
628+
all_docs = [{'_id': UNICHR(i) + UNICHR(j)} for a, b in include_ranges
629+
for i in range(a, b)
630+
for j in range(a, b)]
631+
batch_size = 500
632+
for i in range(0, len(all_docs), batch_size):
633+
self.db.bulk_docs(all_docs[i:i+batch_size])
634+
635+
doc_count = 0
636+
for i, doc in enumerate(self.db):
637+
doc_count += 1
638+
self.assertEqual(doc['_id'], all_docs[i]['_id'])
639+
640+
self.assertEqual(doc_count, len(all_docs))
641+
608642
def test_document_iteration_returns_valid_documents(self):
609643
"""
610644
This test will check that the __iter__ method returns documents that are

0 commit comments

Comments
 (0)