Add unit test for tree cursors
This commit is contained in:
parent
52928e3a7c
commit
f3566ebc34
@ -31,6 +31,8 @@ if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3:
|
||||
else:
|
||||
from bsddb import dbshelve, db
|
||||
|
||||
from ..read import DbBsddbTreeCursor
|
||||
|
||||
class Data(object):
|
||||
|
||||
def __init__(self, handle,surname, name):
|
||||
@ -76,6 +78,7 @@ class CursorTest(unittest.TestCase):
|
||||
os.mkdir(env_name)
|
||||
self.env.open(env_name,env_flags)
|
||||
(self.person_map,self.surnames) = self._open_tables()
|
||||
(self.place_map, self.placerefs) = self._open_treetables()
|
||||
|
||||
def _open_tables(self):
|
||||
dbmap = dbshelve.DBShelf(self.env)
|
||||
@ -100,10 +103,36 @@ class CursorTest(unittest.TestCase):
|
||||
person_map.associate(surnames, find_surname, table_flags)
|
||||
|
||||
return (person_map,surnames)
|
||||
|
||||
|
||||
def _open_treetables(self):
|
||||
dbmap = dbshelve.DBShelf(self.env)
|
||||
dbmap.db.set_pagesize(16384)
|
||||
dbmap.open(self.full_name, 'places', db.DB_HASH,
|
||||
db.DB_CREATE|db.DB_AUTO_COMMIT, 0o666)
|
||||
place_map = dbmap
|
||||
|
||||
table_flags = db.DB_CREATE|db.DB_AUTO_COMMIT
|
||||
|
||||
placerefs = db.DB(self.env)
|
||||
placerefs.set_flags(db.DB_DUP|db.DB_DUPSORT)
|
||||
placerefs.open(self.full_name, "placerefs", db.DB_BTREE,
|
||||
flags=table_flags)
|
||||
|
||||
def find_placeref(key,data):
|
||||
val = data[2]
|
||||
if isinstance(val, UNITYPE):
|
||||
val = val.encode('utf-8')
|
||||
return val
|
||||
|
||||
place_map.associate(placerefs, find_placeref, table_flags)
|
||||
|
||||
return (place_map, placerefs)
|
||||
|
||||
def tearDown(self):
|
||||
self.person_map.close()
|
||||
self.surnames.close()
|
||||
self.place_map.close()
|
||||
self.placerefs.close()
|
||||
self.env.close()
|
||||
shutil.rmtree(self._tmpdir)
|
||||
|
||||
@ -183,7 +212,29 @@ class CursorTest(unittest.TestCase):
|
||||
|
||||
self.assertEqual(v.handle, data.handle)
|
||||
|
||||
def test_treecursor(self):
|
||||
#fill with data
|
||||
the_txn = self.env.txn_begin()
|
||||
data = [(b'1', 'countryA', '' ),
|
||||
(b'2', 'localityA', '1' ),
|
||||
(b'3', 'localityB', '1' ),
|
||||
(b'4', 'countryB', '' ),
|
||||
(b'5', 'streetA', '2' ),
|
||||
(b'6', 'countryB', '' )]
|
||||
for d in data:
|
||||
self.place_map.put(d[0], d, txn=the_txn)
|
||||
the_txn.commit()
|
||||
|
||||
cursor_txn = self.env.txn_begin()
|
||||
cursor = DbBsddbTreeCursor(self.placerefs, self.place_map, False,
|
||||
cursor_txn)
|
||||
placenames = set([d[1] for handle, d in cursor])
|
||||
|
||||
cursor.close()
|
||||
cursor_txn.commit()
|
||||
pldata = set([d[1] for d in data])
|
||||
self.assertEqual(placenames, pldata)
|
||||
|
||||
def testSuite():
|
||||
suite = unittest.makeSuite(CursorTest, 'test')
|
||||
return suite
|
||||
|
Loading…
Reference in New Issue
Block a user