diff options
author | Benjamin Peterson <benjamin@python.org> | 2008-09-03 22:30:12 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2008-09-03 22:30:12 (GMT) |
commit | b98eb875dc4d23cdbf56e080a31de0881d2b6965 (patch) | |
tree | 2dcc04afc7c0919fd47297d7d13f33f60b79e9f1 /Lib/bsddb/test/test_dbtables.py | |
parent | dcc1e117604cc64dfa03a703391fbaeba654181a (diff) | |
download | cpython-b98eb875dc4d23cdbf56e080a31de0881d2b6965.zip cpython-b98eb875dc4d23cdbf56e080a31de0881d2b6965.tar.gz cpython-b98eb875dc4d23cdbf56e080a31de0881d2b6965.tar.bz2 |
remove bsddb
Diffstat (limited to 'Lib/bsddb/test/test_dbtables.py')
-rw-r--r-- | Lib/bsddb/test/test_dbtables.py | 405 |
1 files changed, 0 insertions, 405 deletions
diff --git a/Lib/bsddb/test/test_dbtables.py b/Lib/bsddb/test/test_dbtables.py deleted file mode 100644 index 31b7187..0000000 --- a/Lib/bsddb/test/test_dbtables.py +++ /dev/null @@ -1,405 +0,0 @@ -#!/usr/bin/env python -# -#----------------------------------------------------------------------- -# A test suite for the table interface built on bsddb.db -#----------------------------------------------------------------------- -# -# Copyright (C) 2000, 2001 by Autonomous Zone Industries -# Copyright (C) 2002 Gregory P. Smith -# -# March 20, 2000 -# -# License: This is free software. You may use this software for any -# purpose including modification/redistribution, so long as -# this header remains intact and that you do not claim any -# rights of ownership or authorship of this software. This -# software has been tested, but no warranty is expressed or -# implied. -# -# -- Gregory P. Smith <greg@krypto.org> -# -# $Id$ - -import os, re -try: - import pickle - pickle = pickle -except ImportError: - import pickle - -import unittest -from .test_all import db, dbtables, test_support, verbose, \ - get_new_environment_path, get_new_database_path - -#---------------------------------------------------------------------- - -class TableDBTestCase(unittest.TestCase): - db_name = 'test-table.db' - - def setUp(self): - 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=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): - tabname = "test01" - colname = 'cool numbers' - try: - self.tdb.Drop(tabname) - except dbtables.TableDBError: - pass - self.tdb.CreateTable(tabname, [colname]) - import sys - if sys.version_info[0] < 3 : - self.tdb.Insert(tabname, {colname: pickle.dumps(3.14159, 1)}) - 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}) - - 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): - tabname = "test02" - col0 = 'coolness factor' - col1 = 'but can it fly?' - col2 = 'Species' - - 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) - except dbtables.TableDBError: - pass - self.tdb.CreateTable(tabname, [col0, col1, col2]) - for row in testinfo : - self.tdb.Insert(tabname, row) - - 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,)) - raise RuntimeError("Wrong values returned!") - - def test03(self): - tabname = "test03" - try: - self.tdb.Drop(tabname) - except dbtables.TableDBError: - pass - if verbose: - print('...before CreateTable...') - self.tdb._db_print() - self.tdb.CreateTable(tabname, ['a', 'b', 'c', 'd', 'e']) - if verbose: - print('...after CreateTable...') - self.tdb._db_print() - self.tdb.Drop(tabname) - if verbose: - print('...after Drop...') - self.tdb._db_print() - self.tdb.CreateTable(tabname, ['a', 'b', 'c', 'd', 'e']) - - try: - self.tdb.Insert(tabname, - {'a': "", - 'e': pickle.dumps([{4:5, 6:7}, 'foo'], 1), - 'f': "Zero"}) - self.fail('Expected an exception') - except dbtables.TableDBError: - pass - - try: - self.tdb.Select(tabname, [], conditions={'foo': '123'}) - self.fail('Expected an exception') - except dbtables.TableDBError: - pass - - self.tdb.Insert(tabname, - {'a': '42', - 'b': "bad", - 'c': "meep", - 'e': 'Fuzzy wuzzy was a bear'}) - self.tdb.Insert(tabname, - {'a': '581750', - 'b': "good", - 'd': "bla", - 'c': "black", - 'e': 'fuzzy was here'}) - self.tdb.Insert(tabname, - {'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('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')}) - self.assertEqual(len(values), 1) - self.assertEqual(values[0]['d'], None) - - values = self.tdb.Select(tabname, ['b'], - conditions={'c': lambda c: c == 'meep'}) - self.assertEqual(len(values), 1) - self.assertEqual(values[0]['b'], "bad") - - - def test04_MultiCondSelect(self): - tabname = "test04_MultiCondSelect" - try: - self.tdb.Drop(tabname) - except dbtables.TableDBError: - pass - self.tdb.CreateTable(tabname, ['a', 'b', 'c', 'd', 'e']) - - try: - self.tdb.Insert(tabname, - {'a': "", - 'e': pickle.dumps([{4:5, 6:7}, 'foo'], 1), - 'f': "Zero"}) - self.fail('Expected an exception') - except dbtables.TableDBError: - pass - - 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() - - # This select should return 0 rows. it is designed to test - # the bug identified and fixed in sourceforge bug # 590449 - # (Big Thanks to "Rob Tillotson (n9mtb)" for tracking this down - # and supplying a fix!! This one caused many headaches to say - # the least...) - values = self.tdb.Select(tabname, ['b', 'a', 'd'], - conditions={'e': dbtables.ExactCond('E'), - 'a': dbtables.ExactCond('A'), - 'd': dbtables.PrefixCond('-') - } ) - self.assertEqual(len(values), 0, values) - - - def test_CreateOrExtend(self): - tabname = "test_CreateOrExtend" - - self.tdb.CreateOrExtendTable( - tabname, ['name', 'taste', 'filling', 'alcohol content', 'price']) - try: - self.tdb.Insert(tabname, - {'taste': 'crap', - 'filling': 'no', - 'is it Guinness?': 'no'}) - self.fail("Insert should've failed due to bad column name") - except: - pass - self.tdb.CreateOrExtendTable(tabname, - ['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': '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): - tabname = "test_CondObjs" - - self.tdb.CreateTable(tabname, ['a', 'b', 'c', 'd', 'e', 'p']) - - 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')}) - 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%')}) - 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(), - 'e':dbtables.LikeCond('%letter%'), - 'a':dbtables.PrefixCond('is'), - 'd':dbtables.ExactCond('is for dog'), - 'c':dbtables.PrefixCond('is for'), - 'p':lambda s: not s}) - 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" - self.tdb.CreateTable(tabname, ['x', 'y', 'z']) - - # prior to 2001-05-09 there was a bug where Delete() would - # 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': '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.assertEqual(len(values), 0) - - def test_Modify(self): - tabname = "test_Modify" - self.tdb.CreateTable(tabname, ['Name', 'Type', 'Access']) - - 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 == None: - return 'MP3' - return type - - def increment_access(count): - return str(int(count)+1) - - def remove_value(value): - return None - - self.tdb.Modify(tabname, - conditions={'Access': dbtables.ExactCond('0')}, - mappings={'Access': remove_value}) - self.tdb.Modify(tabname, - conditions={'Name': dbtables.LikeCond('%MP3%')}, - mappings={'Type': set_type}) - self.tdb.Modify(tabname, - conditions={'Name': dbtables.LikeCond('%')}, - mappings={'Access': increment_access}) - - try: - self.tdb.Modify(tabname, - conditions={'Name': dbtables.LikeCond('%')}, - mappings={'Access': 'What is your quest?'}) - except TypeError: - # success, the string value in mappings isn't callable - pass - else: - raise RuntimeError("why was TypeError not raised for bad callable?") - - # Delete key in select conditions - values = self.tdb.Select( - tabname, None, - conditions={'Type': dbtables.ExactCond('Unknown')}) - 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')}) - 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%')}) - self.assertEqual(len(values), 1, values) - self.assertEqual(values[0]['Type'], "Word", values) - self.assertEqual(values[0]['Access'], "9", values) - - -def test_suite(): - suite = unittest.TestSuite() - suite.addTest(unittest.makeSuite(TableDBTestCase)) - return suite - - -if __name__ == '__main__': - unittest.main(defaultTest='test_suite') |