summaryrefslogtreecommitdiffstats
path: root/Lib/bsddb/test/test_dbtables.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/bsddb/test/test_dbtables.py')
-rw-r--r--Lib/bsddb/test/test_dbtables.py276
1 files changed, 143 insertions, 133 deletions
diff --git a/Lib/bsddb/test/test_dbtables.py b/Lib/bsddb/test/test_dbtables.py
index fdec618..31b7187 100644
--- a/Lib/bsddb/test/test_dbtables.py
+++ b/Lib/bsddb/test/test_dbtables.py
@@ -20,25 +20,16 @@
#
# $Id$
-import sys, os, re
-import pickle
-import tempfile
-
-import unittest
-from bsddb.test.test_all import verbose
-
-try:
- # For Pythons w/distutils pybsddb
- from bsddb3 import db, dbtables
-except ImportError:
- # For Python 2.3
- from bsddb import db, dbtables
-
+import os, re
try:
- from bsddb3 import test_support
+ import pickle
+ pickle = pickle
except ImportError:
- from test import support as test_support
+ import pickle
+import unittest
+from .test_all import db, dbtables, test_support, verbose, \
+ get_new_environment_path, get_new_database_path
#----------------------------------------------------------------------
@@ -46,16 +37,21 @@ class TableDBTestCase(unittest.TestCase):
db_name = 'test-table.db'
def setUp(self):
- homeDir = tempfile.mkdtemp()
- self.testHomeDir = homeDir
- try: os.mkdir(homeDir)
- except os.error: pass
+ import sys
+ if sys.version_info[0] >= 3 :
+ from .test_all import do_proxy_db_py3k
+ self._flag_proxy_db_py3k = do_proxy_db_py3k(False)
+ self.testHomeDir = get_new_environment_path()
self.tdb = dbtables.bsdTableDB(
- filename='tabletest.db', dbhome=homeDir, create=1)
+ filename='tabletest.db', dbhome=self.testHomeDir, create=1)
def tearDown(self):
self.tdb.close()
+ import sys
+ if sys.version_info[0] >= 3 :
+ from .test_all import do_proxy_db_py3k
+ do_proxy_db_py3k(self._flag_proxy_db_py3k)
test_support.rmtree(self.testHomeDir)
def test01(self):
@@ -66,21 +62,26 @@ class TableDBTestCase(unittest.TestCase):
except dbtables.TableDBError:
pass
self.tdb.CreateTable(tabname, [colname])
- try:
+ import sys
+ if sys.version_info[0] < 3 :
self.tdb.Insert(tabname, {colname: pickle.dumps(3.14159, 1)})
- except Exception:
- import traceback
- traceback.print_exc()
+ else :
+ self.tdb.Insert(tabname, {colname: pickle.dumps(3.14159,
+ 1).decode("iso8859-1")}) # 8 bits
if verbose:
self.tdb._db_print()
values = self.tdb.Select(
tabname, [colname], conditions={colname: None})
- values = list(values)
- colval = pickle.loads(values[0][colname])
- self.assertTrue(colval > 3.141 and colval < 3.142)
+ import sys
+ if sys.version_info[0] < 3 :
+ colval = pickle.loads(values[0][colname])
+ else :
+ colval = pickle.loads(bytes(values[0][colname], "iso8859-1"))
+ self.assert_(colval > 3.141)
+ self.assert_(colval < 3.142)
def test02(self):
@@ -88,11 +89,23 @@ class TableDBTestCase(unittest.TestCase):
col0 = 'coolness factor'
col1 = 'but can it fly?'
col2 = 'Species'
- testinfo = [
- {col0: pickle.dumps(8, 1), col1: b'no', col2: b'Penguin'},
- {col0: pickle.dumps(-1, 1), col1: b'no', col2: b'Turkey'},
- {col0: pickle.dumps(9, 1), col1: b'yes', col2: b'SR-71A Blackbird'}
- ]
+
+ import sys
+ if sys.version_info[0] < 3 :
+ testinfo = [
+ {col0: pickle.dumps(8, 1), col1: 'no', col2: 'Penguin'},
+ {col0: pickle.dumps(-1, 1), col1: 'no', col2: 'Turkey'},
+ {col0: pickle.dumps(9, 1), col1: 'yes', col2: 'SR-71A Blackbird'}
+ ]
+ else :
+ testinfo = [
+ {col0: pickle.dumps(8, 1).decode("iso8859-1"),
+ col1: 'no', col2: 'Penguin'},
+ {col0: pickle.dumps(-1, 1).decode("iso8859-1"),
+ col1: 'no', col2: 'Turkey'},
+ {col0: pickle.dumps(9, 1).decode("iso8859-1"),
+ col1: 'yes', col2: 'SR-71A Blackbird'}
+ ]
try:
self.tdb.Drop(tabname)
@@ -102,19 +115,24 @@ class TableDBTestCase(unittest.TestCase):
for row in testinfo :
self.tdb.Insert(tabname, row)
- values = self.tdb.Select(tabname, [col2],
- conditions={col0: lambda x: pickle.loads(x) >= 8})
- values = list(values)
-
- self.assertEquals(len(values), 2)
- if values[0]['Species'] == b'Penguin' :
- self.assertEquals(values[1]['Species'], b'SR-71A Blackbird')
- elif values[0]['Species'] == b'SR-71A Blackbird' :
- self.assertEquals(values[1]['Species'], b'Penguin')
+ import sys
+ if sys.version_info[0] < 3 :
+ values = self.tdb.Select(tabname, [col2],
+ conditions={col0: lambda x: pickle.loads(x) >= 8})
+ else :
+ values = self.tdb.Select(tabname, [col2],
+ conditions={col0: lambda x:
+ pickle.loads(bytes(x, "iso8859-1")) >= 8})
+
+ self.assertEqual(len(values), 2)
+ if values[0]['Species'] == 'Penguin' :
+ self.assertEqual(values[1]['Species'], 'SR-71A Blackbird')
+ elif values[0]['Species'] == 'SR-71A Blackbird' :
+ self.assertEqual(values[1]['Species'], 'Penguin')
else :
if verbose:
print("values= %r" % (values,))
- self.fail("Wrong values returned!")
+ raise RuntimeError("Wrong values returned!")
def test03(self):
tabname = "test03"
@@ -140,57 +158,55 @@ class TableDBTestCase(unittest.TestCase):
{'a': "",
'e': pickle.dumps([{4:5, 6:7}, 'foo'], 1),
'f': "Zero"})
- self.fail("exception not raised")
+ self.fail('Expected an exception')
except dbtables.TableDBError:
pass
try:
self.tdb.Select(tabname, [], conditions={'foo': '123'})
- self.fail("exception not raised")
+ self.fail('Expected an exception')
except dbtables.TableDBError:
pass
self.tdb.Insert(tabname,
- {'a': b'42',
- 'b': b'bad',
- 'c': b'meep',
- 'e': b'Fuzzy wuzzy was a bear'})
+ {'a': '42',
+ 'b': "bad",
+ 'c': "meep",
+ 'e': 'Fuzzy wuzzy was a bear'})
self.tdb.Insert(tabname,
- {'a': b'581750',
- 'b': b'good',
- 'd': b'bla',
- 'c': b'black',
- 'e': b'fuzzy was here'})
+ {'a': '581750',
+ 'b': "good",
+ 'd': "bla",
+ 'c': "black",
+ 'e': 'fuzzy was here'})
self.tdb.Insert(tabname,
- {'a': b'800000',
- 'b': b'good',
- 'd': b'bla',
- 'c': b'black',
- 'e': b'Fuzzy wuzzy is a bear'})
+ {'a': '800000',
+ 'b': "good",
+ 'd': "bla",
+ 'c': "black",
+ 'e': 'Fuzzy wuzzy is a bear'})
if verbose:
self.tdb._db_print()
# this should return two rows
values = self.tdb.Select(tabname, ['b', 'a', 'd'],
- conditions={'e': re.compile(b'wuzzy').search,
- 'a': re.compile(b'^[0-9]+$').match})
- self.assertEquals(len(values), 2)
+ conditions={'e': re.compile('wuzzy').search,
+ 'a': re.compile('^[0-9]+$').match})
+ self.assertEqual(len(values), 2)
# now lets delete one of them and try again
self.tdb.Delete(tabname, conditions={'b': dbtables.ExactCond('good')})
values = self.tdb.Select(
tabname, ['a', 'd', 'b'],
conditions={'e': dbtables.PrefixCond('Fuzzy')})
- values = list(values)
- self.assertEquals(len(values), 1)
- self.assertEquals(values[0]['d'], None)
+ self.assertEqual(len(values), 1)
+ self.assertEqual(values[0]['d'], None)
values = self.tdb.Select(tabname, ['b'],
- conditions={'c': lambda c: c.decode("ascii") == 'meep'})
- values = list(values)
- self.assertEquals(len(values), 1)
- self.assertEquals(values[0]['b'], b"bad")
+ conditions={'c': lambda c: c == 'meep'})
+ self.assertEqual(len(values), 1)
+ self.assertEqual(values[0]['b'], "bad")
def test04_MultiCondSelect(self):
@@ -203,19 +219,19 @@ class TableDBTestCase(unittest.TestCase):
try:
self.tdb.Insert(tabname,
- {'a': b"",
+ {'a': "",
'e': pickle.dumps([{4:5, 6:7}, 'foo'], 1),
- 'f': b"Zero"})
- self.fail("exception not raised")
+ 'f': "Zero"})
+ self.fail('Expected an exception')
except dbtables.TableDBError:
pass
- self.tdb.Insert(tabname, {'a': b"A", 'b': b"B", 'c': b"C",
- 'd': b"D", 'e': b"E"})
- self.tdb.Insert(tabname, {'a': b"-A", 'b': b"-B", 'c': b"-C",
- 'd': b"-D", 'e': b"-E"})
- self.tdb.Insert(tabname, {'a': b"A-", 'b': b"B-", 'c': b"C-",
- 'd': b"D-", 'e': b"E-"})
+ self.tdb.Insert(tabname, {'a': "A", 'b': "B", 'c': "C", 'd': "D",
+ 'e': "E"})
+ self.tdb.Insert(tabname, {'a': "-A", 'b': "-B", 'c': "-C", 'd': "-D",
+ 'e': "-E"})
+ self.tdb.Insert(tabname, {'a': "A-", 'b': "B-", 'c': "C-", 'd': "D-",
+ 'e': "E-"})
if verbose:
self.tdb._db_print()
@@ -230,7 +246,7 @@ class TableDBTestCase(unittest.TestCase):
'a': dbtables.ExactCond('A'),
'd': dbtables.PrefixCond('-')
} )
- self.assertEquals(len(values), 0, values)
+ self.assertEqual(len(values), 0, values)
def test_CreateOrExtend(self):
@@ -240,9 +256,9 @@ class TableDBTestCase(unittest.TestCase):
tabname, ['name', 'taste', 'filling', 'alcohol content', 'price'])
try:
self.tdb.Insert(tabname,
- {'taste': b'crap',
- 'filling': b'no',
- 'is it Guinness?': b'no'})
+ {'taste': 'crap',
+ 'filling': 'no',
+ 'is it Guinness?': 'no'})
self.fail("Insert should've failed due to bad column name")
except:
pass
@@ -250,11 +266,11 @@ class TableDBTestCase(unittest.TestCase):
['name', 'taste', 'is it Guinness?'])
# these should both succeed as the table should contain the union of both sets of columns.
- self.tdb.Insert(tabname, {'taste': b'crap', 'filling': b'no',
- 'is it Guinness?': b'no'})
- self.tdb.Insert(tabname, {'taste': b'great', 'filling': b'yes',
- 'is it Guinness?': b'yes',
- 'name': b'Guinness'})
+ self.tdb.Insert(tabname, {'taste': 'crap', 'filling': 'no',
+ 'is it Guinness?': 'no'})
+ self.tdb.Insert(tabname, {'taste': 'great', 'filling': 'yes',
+ 'is it Guinness?': 'yes',
+ 'name': 'Guinness'})
def test_CondObjs(self):
@@ -262,33 +278,31 @@ class TableDBTestCase(unittest.TestCase):
self.tdb.CreateTable(tabname, ['a', 'b', 'c', 'd', 'e', 'p'])
- self.tdb.Insert(tabname, {'a': b"the letter A",
- 'b': b"the letter B",
- 'c': b"is for cookie"})
- self.tdb.Insert(tabname, {'a': b"is for aardvark",
- 'e': b"the letter E",
- 'c': b"is for cookie",
- 'd': b"is for dog"})
- self.tdb.Insert(tabname, {'a': b"the letter A",
- 'e': b"the letter E",
- 'c': b"is for cookie",
- 'p': b"is for Python"})
+ self.tdb.Insert(tabname, {'a': "the letter A",
+ 'b': "the letter B",
+ 'c': "is for cookie"})
+ self.tdb.Insert(tabname, {'a': "is for aardvark",
+ 'e': "the letter E",
+ 'c': "is for cookie",
+ 'd': "is for dog"})
+ self.tdb.Insert(tabname, {'a': "the letter A",
+ 'e': "the letter E",
+ 'c': "is for cookie",
+ 'p': "is for Python"})
values = self.tdb.Select(
tabname, ['p', 'e'],
conditions={'e': dbtables.PrefixCond('the l')})
- values = list(values)
- self.assertEquals(len(values), 2)
- self.assertEquals(values[0]['e'], values[1]['e'])
- self.assertNotEquals(values[0]['p'], values[1]['p'])
+ self.assertEqual(len(values), 2, values)
+ self.assertEqual(values[0]['e'], values[1]['e'], values)
+ self.assertNotEqual(values[0]['p'], values[1]['p'], values)
values = self.tdb.Select(
tabname, ['d', 'a'],
conditions={'a': dbtables.LikeCond('%aardvark%')})
- values = list(values)
- self.assertEquals(len(values), 1)
- self.assertEquals(values[0]['d'], b"is for dog")
- self.assertEquals(values[0]['a'], b"is for aardvark")
+ self.assertEqual(len(values), 1, values)
+ self.assertEqual(values[0]['d'], "is for dog", values)
+ self.assertEqual(values[0]['a'], "is for aardvark", values)
values = self.tdb.Select(tabname, None,
{'b': dbtables.Cond(),
@@ -297,10 +311,9 @@ class TableDBTestCase(unittest.TestCase):
'd':dbtables.ExactCond('is for dog'),
'c':dbtables.PrefixCond('is for'),
'p':lambda s: not s})
- values = list(values)
- self.assertEquals(len(values), 1)
- self.assertEquals(values[0]['d'], b"is for dog")
- self.assertEquals(values[0]['a'], b"is for aardvark")
+ self.assertEqual(len(values), 1, values)
+ self.assertEqual(values[0]['d'], "is for dog", values)
+ self.assertEqual(values[0]['a'], "is for aardvark", values)
def test_Delete(self):
tabname = "test_Delete"
@@ -310,30 +323,30 @@ class TableDBTestCase(unittest.TestCase):
# fail if it encountered any rows that did not have values in
# every column.
# Hunted and Squashed by <Donwulff> (Jukka Santala - donwulff@nic.fi)
- self.tdb.Insert(tabname, {'x': b'X1', 'y':b'Y1'})
- self.tdb.Insert(tabname, {'x': b'X2', 'y':b'Y2', 'z': b'Z2'})
+ self.tdb.Insert(tabname, {'x': 'X1', 'y':'Y1'})
+ self.tdb.Insert(tabname, {'x': 'X2', 'y':'Y2', 'z': 'Z2'})
self.tdb.Delete(tabname, conditions={'x': dbtables.PrefixCond('X')})
values = self.tdb.Select(tabname, ['y'],
conditions={'x': dbtables.PrefixCond('X')})
- self.assertEquals(len(values), 0)
+ self.assertEqual(len(values), 0)
def test_Modify(self):
tabname = "test_Modify"
self.tdb.CreateTable(tabname, ['Name', 'Type', 'Access'])
- self.tdb.Insert(tabname, {'Name': b'Index to MP3 files.doc',
- 'Type': b'Word', 'Access': b'8'})
- self.tdb.Insert(tabname, {'Name': b'Nifty.MP3', 'Access': b'1'})
- self.tdb.Insert(tabname, {'Type': b'Unknown', 'Access': b'0'})
+ self.tdb.Insert(tabname, {'Name': 'Index to MP3 files.doc',
+ 'Type': 'Word', 'Access': '8'})
+ self.tdb.Insert(tabname, {'Name': 'Nifty.MP3', 'Access': '1'})
+ self.tdb.Insert(tabname, {'Type': 'Unknown', 'Access': '0'})
def set_type(type):
- if type is None:
- return b'MP3'
+ if type == None:
+ return 'MP3'
return type
def increment_access(count):
- return str(int(count)+1).encode('ascii')
+ return str(int(count)+1)
def remove_value(value):
return None
@@ -351,7 +364,7 @@ class TableDBTestCase(unittest.TestCase):
try:
self.tdb.Modify(tabname,
conditions={'Name': dbtables.LikeCond('%')},
- mappings={'Access': b'What is your quest?'})
+ mappings={'Access': 'What is your quest?'})
except TypeError:
# success, the string value in mappings isn't callable
pass
@@ -362,27 +375,24 @@ class TableDBTestCase(unittest.TestCase):
values = self.tdb.Select(
tabname, None,
conditions={'Type': dbtables.ExactCond('Unknown')})
- values = list(values)
- self.assertEquals(len(values), 1)
- self.assertEquals(values[0]['Name'], None)
- self.assertEquals(values[0]['Access'], None)
+ self.assertEqual(len(values), 1, values)
+ self.assertEqual(values[0]['Name'], None, values)
+ self.assertEqual(values[0]['Access'], None, values)
# Modify value by select conditions
values = self.tdb.Select(
tabname, None,
conditions={'Name': dbtables.ExactCond('Nifty.MP3')})
- values = list(values)
- self.assertEquals(len(values), 1)
- self.assertEquals(values[0]['Type'], b"MP3")
- self.assertEquals(values[0]['Access'], b"2")
+ self.assertEqual(len(values), 1, values)
+ self.assertEqual(values[0]['Type'], "MP3", values)
+ self.assertEqual(values[0]['Access'], "2", values)
# Make sure change applied only to select conditions
values = self.tdb.Select(
tabname, None, conditions={'Name': dbtables.LikeCond('%doc%')})
- values = list(values)
- self.assertEquals(len(values), 1)
- self.assertEquals(values[0]['Type'], b"Word")
- self.assertEquals(values[0]['Access'], b"9")
+ self.assertEqual(len(values), 1, values)
+ self.assertEqual(values[0]['Type'], "Word", values)
+ self.assertEqual(values[0]['Access'], "9", values)
def test_suite():