mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	 992d4a3e6e
			
		
	
	
		992d4a3e6e
		
	
	
	
	
		
			
			svn+ssh://pythondev@svn.python.org/python/branches/p3yk
................
  r56155 | neal.norwitz | 2007-07-03 08:59:08 +0300 (Tue, 03 Jul 2007) | 1 line
  Get this test working after converting map to return an iterator
................
  r56202 | neal.norwitz | 2007-07-09 04:30:09 +0300 (Mon, 09 Jul 2007) | 37 lines
  Merged revisions 56124-56201 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r56129 | georg.brandl | 2007-06-30 04:01:01 -0700 (Sat, 30 Jun 2007) | 2 lines
    Document smtp.SMTPAuthenticationError.
  ........
    r56137 | georg.brandl | 2007-07-01 01:11:35 -0700 (Sun, 01 Jul 2007) | 2 lines
    Fix a few webbrowser.py problems.
  ........
    r56143 | georg.brandl | 2007-07-02 04:54:28 -0700 (Mon, 02 Jul 2007) | 2 lines
    Remove duplicate sentence from alarm() doc.
  ........
    r56170 | mark.hammond | 2007-07-03 19:03:10 -0700 (Tue, 03 Jul 2007) | 3 lines
    copy built files to the PCBuild directory, where tools like
    distutils or external build processes can find them.
  ........
    r56176 | kurt.kaiser | 2007-07-05 15:03:39 -0700 (Thu, 05 Jul 2007) | 10 lines
    Many calls to tk.call involve an arglist containing a single tuple.
    Calls using METH_OLDARGS unpack this tuple; calls using METH_VARARG
    don't.  Tcl's concatenation of args was affected; IDLE doesn't start.
    Modify Tkapp_Call() to unpack single tuple arglists.
    Bug 1733943
    Ref http://mail.python.org/pipermail/python-checkins/2007-May/060454.html
  ........
    r56177 | neal.norwitz | 2007-07-05 21:13:39 -0700 (Thu, 05 Jul 2007) | 1 line
    Fix typo in comment
  ........
................
  r56251 | neal.norwitz | 2007-07-11 10:01:01 +0300 (Wed, 11 Jul 2007) | 1 line
  Get working with map returning an iterator (had to fix whitespace too)
................
  r56255 | thomas.wouters | 2007-07-11 13:41:37 +0300 (Wed, 11 Jul 2007) | 6 lines
  Clean up merge glitch or copy-paste error (the entire module was duplicated,
  except the first half even had some more copy-paste errors, referring to
  listcomps and genexps instead of setcomps)
................
  r56256 | thomas.wouters | 2007-07-11 15:16:01 +0300 (Wed, 11 Jul 2007) | 14 lines
  Dict comprehensions. Still needs doc changes (like many python-3000 features
  ;-). It generates bytecode similar to:
  x = {}
  for k, v in (generator here):
    x[k] = v
  except there is no tuple-packing and -unpacking involved. Trivial
  measurement suggests it's significantly faster than dict(generator here) (in
  the order of 2 to 3 times as fast) but I have not done extensive
  measurements.
................
  r56263 | guido.van.rossum | 2007-07-11 15:36:26 +0300 (Wed, 11 Jul 2007) | 3 lines
  Patch 1724999 by Ali Gholami Rudi -- avoid complaints about dict size
  change during iter in destroy call.
................
		
	
			
		
			
				
	
	
		
			120 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """TestCases for using the DB.join and DBCursor.join_item methods.
 | |
| """
 | |
| 
 | |
| import sys, os
 | |
| import tempfile
 | |
| import time
 | |
| from pprint import pprint
 | |
| 
 | |
| try:
 | |
|     from threading import Thread, currentThread
 | |
|     have_threads = 1
 | |
| except ImportError:
 | |
|     have_threads = 0
 | |
| 
 | |
| import unittest
 | |
| from .test_all import verbose
 | |
| 
 | |
| try:
 | |
|     # For Pythons w/distutils pybsddb
 | |
|     from bsddb3 import db, dbshelve
 | |
| except ImportError:
 | |
|     # For Python 2.3
 | |
|     from bsddb import db, dbshelve
 | |
| 
 | |
| 
 | |
| #----------------------------------------------------------------------
 | |
| 
 | |
| ProductIndex = [
 | |
|     ('apple', "Convenience Store"),
 | |
|     ('blueberry', "Farmer's Market"),
 | |
|     ('shotgun', "S-Mart"),              # Aisle 12
 | |
|     ('pear', "Farmer's Market"),
 | |
|     ('chainsaw', "S-Mart"),             # "Shop smart.  Shop S-Mart!"
 | |
|     ('strawberry', "Farmer's Market"),
 | |
| ]
 | |
| 
 | |
| ColorIndex = [
 | |
|     ('blue', "blueberry"),
 | |
|     ('red', "apple"),
 | |
|     ('red', "chainsaw"),
 | |
|     ('red', "strawberry"),
 | |
|     ('yellow', "peach"),
 | |
|     ('yellow', "pear"),
 | |
|     ('black', "shotgun"),
 | |
| ]
 | |
| 
 | |
| class JoinTestCase(unittest.TestCase):
 | |
|     keytype = ''
 | |
| 
 | |
|     def setUp(self):
 | |
|         self.filename = self.__class__.__name__ + '.db'
 | |
|         homeDir = os.path.join(tempfile.gettempdir(), 'db_home')
 | |
|         self.homeDir = homeDir
 | |
|         try: os.mkdir(homeDir)
 | |
|         except os.error: pass
 | |
|         self.env = db.DBEnv()
 | |
|         self.env.open(homeDir, db.DB_CREATE | db.DB_INIT_MPOOL | db.DB_INIT_LOCK )
 | |
| 
 | |
|     def tearDown(self):
 | |
|         self.env.close()
 | |
|         import glob
 | |
|         files = glob.glob(os.path.join(self.homeDir, '*'))
 | |
|         for file in files:
 | |
|             os.remove(file)
 | |
| 
 | |
|     def test01_join(self):
 | |
|         if verbose:
 | |
|             print('\n', '-=' * 30)
 | |
|             print("Running %s.test01_join..." % \
 | |
|                   self.__class__.__name__)
 | |
| 
 | |
|         # create and populate primary index
 | |
|         priDB = db.DB(self.env)
 | |
|         priDB.open(self.filename, "primary", db.DB_BTREE, db.DB_CREATE)
 | |
|         [priDB.put(*t) for t in 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(*t) for t in ColorIndex]
 | |
| 
 | |
|         sCursor = None
 | |
|         jCursor = None
 | |
|         try:
 | |
|             # lets look up all of the red Products
 | |
|             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('red')
 | |
|             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) != ('apple', "Convenience Store"):
 | |
|                 self.fail("join cursor positioned wrong")
 | |
|             if jCursor.join_item() != 'chainsaw':
 | |
|                 self.fail("DBCursor.join_item returned wrong item")
 | |
|             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")
 | |
|         finally:
 | |
|             if jCursor:
 | |
|                 jCursor.close()
 | |
|             if sCursor:
 | |
|                 sCursor.close()
 | |
|             priDB.close()
 | |
|             secDB.close()
 | |
| 
 | |
| 
 | |
| def test_suite():
 | |
|     suite = unittest.TestSuite()
 | |
| 
 | |
|     suite.addTest(unittest.makeSuite(JoinTestCase))
 | |
| 
 | |
|     return suite
 |