Ñò
ïžòKc           @   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.
iÿÿÿÿN(   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(    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyt   lowercase_cmp   s    c         C   s   |  d „ } | S(   Nc         S   s   | |  | ƒ S(   N(    (   R   R	   t   delegate(    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyt   reverse   s    (    (   R   R   (    (    s-   scripts/common/Lib/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(
   Niÿÿÿÿi    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(    (    s-   scripts/common/Lib/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   (    (    s-   scripts/common/Lib/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(    (    s-   scripts/common/Lib/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   (    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyt   test_lowercase_comparator<   s    	(   t   __name__t
   __module__R(   R+   R-   R/   (    (    (    s-   scripts/common/Lib/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<   (    (    s-   scripts/common/Lib/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   (    (    s-   scripts/common/Lib/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(    (    s-   scripts/common/Lib/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(    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyt   createDBZ   s    c         C   s   |  i  i | ƒ d  S(   N(   R   t   set_bt_compare(   R   RK   (    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyRI   _   s    c         C   s.   |  i  d  j	 o |  i  i ƒ  d  |  _  n d  S(   N(   R   R?   R@   (   R   (    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyR>   b   s    c         C   s   d  S(   N(    (   R   (    (    s-   scripts/common/Lib/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(    (    s-   scripts/common/Lib/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(    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyRO   o   s"     
N(   R0   R1   R?   R<   R   R=   RB   RF   RL   RI   R>   RN   RQ   RO   (    (    (    s-   scripts/common/Lib/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"   (    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyt   runCompareTestƒ   s    
c         C   s   |  i  t t ƒ d  S(   N(   R\   R)   R*   (   R   (    (    s-   scripts/common/Lib/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(    (    s-   scripts/common/Lib/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'   (    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyt   socialist_comparator”   s    R   R   t   d(   RN   RL   RF   RQ   (   R   Ra   (    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyt   test_compare_function_useless’   s
    
	(   R0   R1   R\   R]   R_   Rc   (    (    (    s-   scripts/common/Lib/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   (    (    s-   scripts/common/Lib/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   (    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyt!   test_set_bt_compare_with_function¤   s    
c         C   s   d  S(   N(    (   R   t   results(    (    s-   scripts/common/Lib/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'   (    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyt   bad_comparator®   s    (   RN   Rf   Rg   RL   RQ   (   R   Rk   (    (    s-   scripts/common/Lib/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(    (    s-   scripts/common/Lib/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'   (    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyRk   Ç   s    R   R   R   (   RN   RL   RF   RQ   (   R   Rk   (    (    s-   scripts/common/Lib/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   (    (    s-   scripts/common/Lib/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'   (    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyRk   Ù   s    R   R   R   (   RN   RL   RF   RQ   (   R   Rk   (    (    s-   scripts/common/Lib/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   (    (    s-   scripts/common/Lib/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   (    (    s-   scripts/common/Lib/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(    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyt   test_cannot_assign_twiceê   s    	
(   R0   R1   Rh   Ri   RO   Rl   Rv   Rx   R}   R~   R   Rƒ   (    (    (    s-   scripts/common/Lib/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(    (    s-   scripts/common/Lib/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(    (    (    s-   scripts/common/Lib/bsddb/test/test_compare.pyt   <module>   s"   $(		!$B[	