mirror of
https://github.com/python/cpython.git
synced 2025-11-03 11:23:31 +00:00
bsddb code updated to version 4.7.3pre2. This code is the same than
Python 2.6 one, since the intention is to keep an unified 2.x/3.x codebase. The Python code is automatically translated using "2to3". Please, do not update this code in Python 3.0 by hand. Update the 2.6 one and then do "2to3".
This commit is contained in:
parent
73c96dbf34
commit
6ba3329c27
33 changed files with 5396 additions and 2692 deletions
|
|
@ -1,27 +1,12 @@
|
|||
"""TestCases for using the DB.join and DBCursor.join_item methods.
|
||||
"""
|
||||
|
||||
import shutil
|
||||
import sys, os
|
||||
import tempfile
|
||||
import time
|
||||
from pprint import pprint
|
||||
|
||||
try:
|
||||
from threading import Thread, current_thread
|
||||
have_threads = 1
|
||||
except ImportError:
|
||||
have_threads = 0
|
||||
import os
|
||||
|
||||
import unittest
|
||||
from bsddb.test.test_all import verbose
|
||||
|
||||
from bsddb import db, dbshelve, StringKeys
|
||||
|
||||
try:
|
||||
from bsddb3 import test_support
|
||||
except ImportError:
|
||||
from test import support as test_support
|
||||
from .test_all import db, dbshelve, test_support, verbose, \
|
||||
get_new_environment_path, get_new_database_path
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
|
|
@ -44,18 +29,12 @@ ColorIndex = [
|
|||
('black', "shotgun"),
|
||||
]
|
||||
|
||||
def ASCII(s):
|
||||
return s.encode("ascii")
|
||||
|
||||
class JoinTestCase(unittest.TestCase):
|
||||
keytype = ''
|
||||
|
||||
def setUp(self):
|
||||
self.filename = self.__class__.__name__ + '.db'
|
||||
homeDir = os.path.join(tempfile.gettempdir(), 'db_home%d'%os.getpid())
|
||||
self.homeDir = homeDir
|
||||
try: os.mkdir(homeDir)
|
||||
except os.error: pass
|
||||
self.homeDir = get_new_environment_path()
|
||||
self.env = db.DBEnv()
|
||||
self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL | db.DB_INIT_LOCK )
|
||||
|
||||
|
|
@ -72,13 +51,13 @@ class JoinTestCase(unittest.TestCase):
|
|||
# create and populate primary index
|
||||
priDB = db.DB(self.env)
|
||||
priDB.open(self.filename, "primary", db.DB_BTREE, db.DB_CREATE)
|
||||
[priDB.put(ASCII(k),ASCII(v)) for k,v in ProductIndex]
|
||||
list(map(lambda t, priDB=priDB: priDB.put(*t), ProductIndex))
|
||||
|
||||
# create and populate secondary index
|
||||
secDB = db.DB(self.env)
|
||||
secDB.set_flags(db.DB_DUP | db.DB_DUPSORT)
|
||||
secDB.open(self.filename, "secondary", db.DB_BTREE, db.DB_CREATE)
|
||||
[secDB.put(ASCII(k),ASCII(v)) for k,v in ColorIndex]
|
||||
list(map(lambda t, secDB=secDB: secDB.put(*t), ColorIndex))
|
||||
|
||||
sCursor = None
|
||||
jCursor = None
|
||||
|
|
@ -87,19 +66,19 @@ class JoinTestCase(unittest.TestCase):
|
|||
sCursor = secDB.cursor()
|
||||
# Don't do the .set() in an assert, or you can get a bogus failure
|
||||
# when running python -O
|
||||
tmp = sCursor.set(b'red')
|
||||
assert tmp
|
||||
tmp = sCursor.set('red')
|
||||
self.assert_(tmp)
|
||||
|
||||
# FIXME: jCursor doesn't properly hold a reference to its
|
||||
# cursors, if they are closed before jcursor is used it
|
||||
# can cause a crash.
|
||||
jCursor = priDB.join([sCursor])
|
||||
|
||||
if jCursor.get(0) != (b'apple', b"Convenience Store"):
|
||||
if jCursor.get(0) != ('apple', "Convenience Store"):
|
||||
self.fail("join cursor positioned wrong")
|
||||
if jCursor.join_item() != b'chainsaw':
|
||||
if jCursor.join_item() != 'chainsaw':
|
||||
self.fail("DBCursor.join_item returned wrong item")
|
||||
if jCursor.get(0)[0] != b'strawberry':
|
||||
if jCursor.get(0)[0] != 'strawberry':
|
||||
self.fail("join cursor returned wrong thing")
|
||||
if jCursor.get(0): # there were only three red items to return
|
||||
self.fail("join cursor returned too many items")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue