ó
n®¸Qc           @   s¹   d  Z  d d l Z d d l Z d d l Z d d l m Z d d l Z d d l m Z m Z m	 Z	 m
 Z
 m Z d Z d e j f d „  ƒ  YZ d „  Z e d	 k rµ e j d
 d ƒ n  d S(   s%   TestCases for exercising a Recno DB.
iÿÿÿÿN(   t   pprint(   t   dbt   test_supportt   verboset   get_new_environment_patht   get_new_database_patht4   abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZt   SimpleRecnoTestCasec           B   s†   e  Z e j d k  s3 e j d k rN e j d k  rN d d „ Z d d „ Z n  d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z RS(   i   i   i   i    c         C   s   |  j  t | ƒ | d | ƒS(   Nt   msg(   t   assertEqualt   type(   t   selft   objt   datatypeR   (    (    s+   /sys/lib/python2.7/bsddb/test/test_recno.pyt   assertIsInstance   s    c         C   s   |  j  | | k d | ƒS(   NR   (   t
   assertTrue(   R   t   at   bR   (    (    s+   /sys/lib/python2.7/bsddb/test/test_recno.pyt   assertGreaterEqual   s    c         C   s   t  ƒ  |  _ d  |  _ d  S(   N(   R   t   filenamet   Nonet   homeDir(   R   (    (    s+   /sys/lib/python2.7/bsddb/test/test_recno.pyt   setUp   s    c         C   s0   t  j |  j ƒ |  j r, t  j |  j ƒ n  d  S(   N(   R   t   unlinkR   R   t   rmtree(   R   (    (    s+   /sys/lib/python2.7/bsddb/test/test_recno.pyt   tearDown   s    	c         C   s  t  j ƒ  } | j d ƒ } | j | ƒ | j |  j t  j t  j ƒ xN t D]F } | j | d ƒ } |  j	 | t
 ƒ |  j | d ƒ t rK | GqK qK Wt rŸ Hn  | j ƒ  } t r¾ t | ƒ n  xb t d t | ƒ d ƒ D]G } | | } t rö | GHn  |  j	 | t ƒ |  j | | j | ƒ ƒ qØ Wy | d } Wng t  j k
 rš} t j d k  ro|  j | d t  j ƒ n |  j | j d t  j ƒ t r¨| GHq¨n X|  j d ƒ y | j d ƒ Wn t  j k
 rÑ} n X|  j d ƒ y | d } Wn t k
 r n X|  j d ƒ y | j d ƒ } Wn, t  j k
 rO} | r`|  j d	 ƒ q`n X|  j | d  ƒ | j ƒ  } t rz| GHn  |  j	 | t  ƒ |  j	 | d t
 ƒ |  j t | ƒ t | ƒ ƒ | j! ƒ  }	 t rÙt |	 ƒ n  |  j	 |	 t  ƒ |  j	 |	 d t" ƒ |  j t |	 d ƒ d ƒ |  j	 |	 d d t
 ƒ |  j	 |	 d d t ƒ |  j t |	 ƒ t | ƒ ƒ |  j# | j d
 ƒ ƒ | d
 =|  j$ | j d
 ƒ ƒ | j% d ƒ |  j$ | j d ƒ ƒ | j& d d d ƒ } |  j | d d d | ƒ t rø| GHn  | j' ƒ  }
 t r|
 GHn  | j( ƒ  } | j) ƒ  } x$ | rPt rA| GHn  | j* ƒ  } q-W| j+ d ƒ | j, ƒ  } t rx| GHn  | j- d d t  j. ƒ | j+ d ƒ | j, ƒ  } |  j | d ƒ t rÅ| GHn  | j/ d ƒ } t râ| GHn  | j/ d ƒ } |  j | d  ƒ t r| GHn  | j0 ƒ  | j0 ƒ  t  j ƒ  } | j |  j ƒ | j( ƒ  } d | d <|  j | d d ƒ y | d } Wn t k
 rŠn X|  j d ƒ y | j d ƒ Wn} t  j1 k
 r(} | rÔ|  j d ƒ q?t j d k  rý|  j | d t  j2 ƒ n |  j | j d t  j2 ƒ t r?| GHq?n X| s?|  j d ƒ n  | j+ d ƒ } x$ | rtt re| GHn  | j* ƒ  } qQW| j0 ƒ  | j0 ƒ  d  S(   Ni   i<   i   i    i   s   expected exceptions(   has_key did not raise a proper exceptionid   s   unexpected exceptioni   i   i   t   zs   was %ri2   iÿÿÿÿs   a replacement recordi   i?B s   way out thereic   s$   unexpected DBKeyEmptyError exceptioni(   (   i   i   (   i2   s   a replacement record(   i   i   (3   R   t   DBt   set_get_returns_nonet   openR   t   DB_RECNOt	   DB_CREATEt   letterst   appendR   t   intR   R   t   statR    t   ranget   lent   strR	   t   gett   DBInvalidArgErrort   syst   version_infot   EINVALt   argst   failt   has_keyt   DBErrort   KeyErrort   DBNotFoundErrorR   t   keyst   listt   itemst   tupleR   t   assertFalset   deletet   get_botht   fdt   cursort   firstt   nextt   sett   currentt   putt
   DB_CURRENTt	   set_ranget   closet   DBKeyEmptyErrort   DB_KEYEMPTY(   R   t   dt   get_returns_nonet   xt   recnoR#   t   datat   valR2   R4   R9   t   ct   rec(    (    s+   /sys/lib/python2.7/bsddb/test/test_recno.pyt   test01_basic"   sþ      
 	


 	
c         C   s!  t  ƒ  } | |  _ t j j | d ƒ } t j j | ƒ sI t j | ƒ n  t | d ƒ } | j ƒ  t	 j
 ƒ  } | j d ƒ | j d ƒ | j | ƒ | j |  j t	 j t	 j ƒ d j ƒ  } x | D] } | j | ƒ qÄ W| j ƒ  | j ƒ  t | d ƒ } | j ƒ  } | j ƒ  | j ƒ  } t rA| GH| GH| j d ƒ GHn  |  j | j d ƒ | ƒ t	 j
 ƒ  } | j | ƒ | j |  j t	 j ƒ d | d <d	 | d
 <| j ƒ  | j ƒ  t | d ƒ } | j ƒ  } | j ƒ  | j ƒ  } t rþ| GH| j d ƒ GHn  |  j | j d ƒ d j ƒ  ƒ d S(   s  
        A Recno file that is given a "backing source file" is essentially a
        simple ASCII file.  Normally each record is delimited by 
 and so is
        just a line in the file, but you can set a different record delimiter
        if needed.
        s   test_recno.txtt   wi
   s   
s,   The quick brown fox jumped over the lazy dogt   rs   reddish-browni   t   comatosei   s8   The quick reddish-brown fox jumped over the comatose dogN(   R   R   t   ost   patht   joint   isdirt   mkdirR   RB   R   R   t   set_re_delimt   set_re_sourceR   R   R   t   splitR!   t   synct   readt   stripR   R	   (   R   R   t   sourcet   fRE   RI   t   datumt   text(    (    s+   /sys/lib/python2.7/bsddb/test/test_recno.pyt   test02_WithSourceÌ   sT    		








c         C   se  t  j ƒ  } | j d ƒ | j d ƒ | j d ƒ | j |  j t  j t  j ƒ x t D] } | j	 | d ƒ qV W| j	 d d ƒ y | j	 d d ƒ Wng t  j
 k
 r } t j d k  rÕ |  j | d
 t  j ƒ n |  j | j d
 t  j ƒ t r| GHqn X|  j d ƒ | j ƒ  } | j ƒ  } x$ | rLt r=| GHn  | j ƒ  } q)W| j ƒ  | j ƒ  d  S(   Ni(   t   -i-   i#   t   .t   badi   i   i   i    s   expected exception(   i   i   (   R   R   t
   set_re_lent
   set_re_padR   R   R   R   R    R!   R(   R)   R*   R	   R+   R,   R   R-   R:   R;   R<   RB   (   R   RE   RG   RJ   RK   RL   (    (    s+   /sys/lib/python2.7/bsddb/test/test_recno.pyt   test03_FixedLength
  s2     	
c         C   sˆ   t  j ƒ  } | j |  j d t  j d t  j ƒ| j d ƒ } |  j d | j d | ƒ ƒ | j d ƒ } |  j d | j d | ƒ ƒ d  S(   Nt   dbtypet   flagst    i   t   keyt    i    (	   R   R   R   R   R   R   R!   R	   t   get_size(   R   RE   t   row_id(    (    s+   /sys/lib/python2.7/bsddb/test/test_recno.pyt   test04_get_size_empty+  s    "(   i   i   (   i   i    (   i   i   N(   t   __name__t
   __module__R)   R*   R   R   R   R   R   RM   R`   Rf   Rn   (    (    (    s+   /sys/lib/python2.7/bsddb/test/test_recno.pyR      s   			ª	>	!c           C   s   t  j t ƒ S(   N(   t   unittestt	   makeSuiteR   (    (    (    s+   /sys/lib/python2.7/bsddb/test/test_recno.pyt
   test_suite;  s    t   __main__t   defaultTestRs   (   t   __doc__RQ   R)   t   errnoR    Rq   t   test_allR   R   R   R   R   R    t   TestCaseR   Rs   Ro   t   main(    (    (    s+   /sys/lib/python2.7/bsddb/test/test_recno.pyt   <module>   s   (ÿ ,	