
"Ic           @   s]  d  Z  d d k Z d d k Z d d k Z d d k Z d d k l Z d d k Z d d k l Z l	 Z	 l
 Z
 l Z l Z e Z d   Z d   Z d d d	 d
 d d d d g Z d d	 d
 d d d d d d g	 Z d e i f d     YZ d e i f d     YZ d e f d     YZ d e f d     YZ d   Z e d j o e i d d  n d S(   s8   
TestCases for python DB Btree key comparison function.
iN(   t   StringIO(   t   dbt   dbshelvet   test_supportt   get_new_environment_patht   get_new_database_pathc         C   s   t  |  i   | i    S(   N(   t   cmpt   lower(   t   leftt   right(    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   lowercase_cmp   s    c         C   s   |  d  } | S(   Nc         S   s   | |  |  S(   N(    (   R   R	   t   delegate(    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   reverse   s    (    (   R   R   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   make_reverse_comparator   s    t    t   CCCPt   at   aaat   bt   ct   ccccet   ccccft   CCt   ComparatorTestsc           B   s,   e  Z d    Z d   Z d   Z d   Z RS(   c   
   
   C   s   | } d d  k  } | i d d j  o9 | i d  d	 j  o | i |  q | i d |  ny g  } xi | D]a } xX t |  D]= \ } } | | |  }	 |	 d j o | i | |  Pq q W| i |  qm W| } |  i | | j d | | | f  d  S(
   Nii    i   i   i   R   i   s'   comparator `%s' is not right: %s vs. %s(   i   i   i    (   t   syst   version_infot   sortt	   enumeratet   insertt   appendt
   failUnless(
   t   selft
   comparatort   expected_datat   dataR   t   data2t   it   jt   kt   r(    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   comparator_test_helper   s(      	c         C   s   |  i  t t  d  S(   N(   R(   t   lexical_cmpt   _expected_lexical_test_data(   R   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   test_lexical_comparator5   s    c         C   s+   t  } | i   |  i t t  |  d  S(   N(   R*   R   R(   R   R)   (   R   t   rev(    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   test_reverse_lexical_comparator7   s    
c         C   s   |  i  t t  d  S(   N(   R(   R
   t   _expected_lowercase_test_data(   R   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   test_lowercase_comparator<   s    	(   t   __name__t
   __module__R(   R+   R-   R/   (    (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyR      s   			t   AbstractBtreeKeyCompareTestCasec           B   sh   e  Z d	 Z d	 Z d    Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	 d  Z d   Z RS(
   c         C   sc   |  i  i d |  _ t   |  _ t i   } | i |  i t i t i	 Bt i
 Bt i B | |  _ d  S(   Ns   .db(   t	   __class__R0   t   filenameR   t   homeDirR   t   DBEnvt   opent	   DB_CREATEt   DB_INIT_MPOOLt   DB_INIT_LOCKt	   DB_THREADt   env(   R   R<   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   setUpD   s    c         C   sH   |  i    |  i d  j	 o |  i i   d  |  _ n t i |  i  d  S(   N(   t   closeDBR<   t   Nonet   closeR   t   rmtreeR5   (   R   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   tearDownM   s
    
c         C   s>   d } x1 | D]) } |  i  i | t |   | d } q Wd  S(   Ni    i   (   R   t   putt   str(   R   R"   R$   t   item(    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   addDataToDBT   s
     c         C   sH   t  i |  i  |  _  |  i |  |  i  i |  i d t  i t  i  d  S(   Nt   test(   R   t   DBR<   t   setupDBR7   R4   t   DB_BTREER8   (   R   t   key_comparator(    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   createDBZ   s    c         C   s   |  i  i |  d  S(   N(   R   t   set_bt_compare(   R   RK   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyRI   _   s    c         C   s.   |  i  d  j	 o |  i  i   d  |  _  n d  S(   N(   R   R?   R@   (   R   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyR>   b   s    c         C   s   d  S(   N(    (   R   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt	   startTestg   s    c         C   s,   | d  j	 o |  i |  n |  i   d  S(   N(   R?   t   check_resultsR>   (   R   t   expected(    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt
   finishTestj   s    c      	   C   s   |  i  i   } z d } | i   } xu | om | \ } } |  i | t |  j  d  |  i | | | j d | | | | f  | d } | i   } q' W|  i | t |  j d  Wd  | i   Xd  S(   Ni    s#   to many values returned from cursors&   expected value `%s' at %d but got `%s'i   s&   not enough values returned from cursor(   R   t   cursort   firstR   t   lent   nextR@   (   R   RP   t   curst   indext   rect   keyt   ignore(    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyRO   o   s"     
N(   R0   R1   R?   R<   R   R=   RB   RF   RL   RI   R>   RN   RQ   RO   (    (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyR2   @   s   								t   BtreeKeyCompareTestCasec           B   s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C   s5   |  i    |  i |  |  i |  |  i |  d  S(   N(   RN   RL   RF   RQ   (   R   R    R"   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   runCompareTest   s    
c         C   s   |  i  t t  d  S(   N(   R\   R)   R*   (   R   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   test_lexical_ordering   s    c         C   s+   t  } | i   |  i t t  |  d  S(   N(   R*   R   R\   R   R)   (   R   t   expected_rev_data(    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   test_reverse_lexical_ordering   s    
c         C   sJ   |  i    d   } |  i |  |  i d d d g  |  i d g  d  S(   Nc         S   s   d S(   Ni    (    (   t   lR'   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   socialist_comparator   s    R   R   t   d(   RN   RL   RF   RQ   (   R   Ra   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   test_compare_function_useless   s
    
	(   R0   R1   R\   R]   R_   Rc   (    (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyR[      s   			t   BtreeExceptionsTestCasec           B   sb   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z RS(
   c         C   sD   |  i    |  i t |  i d  |  i t |  i d   |  i   d  S(   Nt   abc(   RN   t   assertRaisest	   TypeErrorRL   R?   RQ   (   R   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   test_raises_non_callable   s    
c         C   s%   |  i    |  i t  |  i   d  S(   N(   RN   RL   R)   RQ   (   R   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt!   test_set_bt_compare_with_function   s    
c         C   s   d  S(   N(    (   R   t   results(    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyRO      s    c         C   s7   |  i    d   } |  i t |  i |  |  i   d  S(   Nc         S   s   d S(   Ni   (    (   R`   R'   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   bad_comparator   s    (   RN   Rf   Rg   RL   RQ   (   R   Rk   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   test_compare_function_incorrect   s    
	c         C   sk   t  i } t   t  _ z |   Wd t  i } | t  _ | i   } | i |  p |  i d |  n Xd S(   s   
        Call method() while capturing sys.stderr output internally and
        call self.fail() if successRe.search() does not match the stderr
        output.  This is used to test for uncatchable exceptions.
        Ns   unexpected stderr output:
(   R   t   stderrR    t   getvaluet   searcht   fail(   R   t   methodt	   successRet   stdErrt   tempt   errorOut(    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   verifyStderr   s    			c         C   sD   |  i    d   } |  i |  |  i d d d g  |  i   d  S(   Nc         S   s   |  | j o d St  d  d  S(   Ni    s!   i'm a naughty comparison function(   t   RuntimeError(   R`   R'   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyRk      s    R   R   R   (   RN   RL   RF   RQ   (   R   Rk   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt    _test_compare_function_exception   s
    
	c         C   s-   |  i  |  i t i d t i t i B  d  S(   Ns   (^RuntimeError:.* naughty.*){2}(   Rv   Rx   t   ret   compilet   Mt   S(   R   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   test_compare_function_exception   s    c         C   sD   |  i    d   } |  i |  |  i d d d g  |  i   d  S(   Nc         S   s   |  | j o d S|  S(   Ni    (    (   R`   R'   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyRk      s    R   R   R   (   RN   RL   RF   RQ   (   R   Rk   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt!   _test_compare_function_bad_return   s
    
	c         C   s-   |  i  |  i t i d t i t i B  d  S(   Ns"   (^TypeError:.* return an int.*){2}(   Rv   R~   Ry   Rz   R{   R|   (   R   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt    test_compare_function_bad_return   s    c         C   s`   d   } |  i    |  i |  y$ |  i i |  |  i d d  Wn t j
 o	 } n Xd  S(   Nc         S   s   d S(   Ni    (    (   R   R   (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt
   my_compare   s    i    s   this set should fail(   RN   RL   R   RM   t   assert_Rw   (   R   R   t   msg(    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   test_cannot_assign_twice   s    	
(   R0   R1   Rh   Ri   RO   Rl   Rv   Rx   R}   R~   R   R   (    (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyRd      s   									c          C   sR   t  i   }  |  i t  i t   |  i t  i t   |  i t  i t   |  S(   N(   t   unittestt	   TestSuitet   addTestt	   makeSuiteR   Rd   R[   (   t   res(    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt
   test_suite   s
    t   __main__t   defaultTestt   suite(   t   __doc__R   t   osRy   t   test_allt	   cStringIOR    R   R   R   R   R   R   R   R)   R
   R   R*   R.   t   TestCaseR   R2   R[   Rd   R   R0   t   main(    (    (    s4   /mit/python/lib/python2.6/bsddb/test/test_compare.pyt   <module>   s"   $(		!$B[	