ó
§«Õ\c           @   s  d  d l  Z  d  d l Z d  d l Z d  d l Z y# e j d d d d  ƒ e j Z Wn  e k
 ru d d d „ Z n Xd d d d	 „ Z e  j d
 d d e j e j	 g ƒ d „  ƒ Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿNt   starti    t   stepi   c         c   sA   | d } x0 t  t j |  ƒ ƒ D] \ } } | | | Vq  Wd  S(   Ni   (   t	   enumeratet	   itertoolst   count(   R    R   t   it   jt   c(    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyR   
   s    
"id   i   c         c   so   xh t  |  | ƒ D]W } xN t  | ƒ D]@ } x7 t t  | ƒ t | d ƒ ƒ D] \ } } | | f VqH Wq# Wq Wd  S(   Niÿÿÿÿ(   t   ranget   zipR   (   t   mint   maxt   repeatR   t   rR   t   k(    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   arg_gen   s    +t   scopet   modulet   paramsc         C   s   |  j  } | S(   N(   t   param(   t   requestR   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   cache   s    	c         C   ss   d „  } |  ƒ  | ƒ } | j  | j  k s0 t ‚ t | d ƒ sE t ‚ t | d ƒ sZ t ‚ t | d ƒ so t ‚ d S(   s*    Simple tests for attribute preservation. c         S   s   |  | S(   s   test function docstring.(    (   t   at   b(    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   tfunc   s    t
   cache_infot   cache_cleart   __wrapped__N(   t   __doc__t   AssertionErrort   hasattr(   R   R   t   cfunc(    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   test_function_attributes   s    	c            s  t  g ‰  d ‡  f d † } |  d d d ˆ  ƒ | ƒ } xG t d d d d ƒ D]0 \ } } | | | ƒ | | | ƒ k sL t ‚ qL Wt ˆ  d	 <xG t d d d d ƒ D]0 \ } } | | | ƒ | | | ƒ k s  t ‚ q  Wi  } |  d d d | ƒ | ƒ } | d
 d ƒ | j ƒ  j d
 k st ‚ d | d <| d
 d ƒ | j ƒ  j d k sOt ‚ | d
 d ƒ | j ƒ  j d k swt ‚ | j ƒ  j d
 k s’t ‚ | j ƒ  | d
 d ƒ | j ƒ  j d k sÄt ‚ | j ƒ  j d k sßt ‚ d | d <| d
 d ƒ | j ƒ  j d k st ‚ d S(   s-    Test that cache returns appropriate values. c            s;   ˆ  d t  k r' |  | | f | |  f Sd |  d | Sd  S(   Ni    i   i
   (   t   True(   R   R   R   (   t
   cat_tuples(    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyR   .   s    t   maxsizeid   t   stateR   iK   R   i   i    i   i   i*   R   i,   i   N(	   R!   t   NoneR   R   t   FalseR   t   missest   hitst   clear(   R   R   R   R   R   t   d(    (   R"   s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   test_function_cache)   s2    	"(
"(


c         C   s€   d „  } |  d d ƒ | ƒ } x[ t  d d d d ƒ D]D \ } } | | | d | | ƒ| | | d | | ƒk s4 t ‚ q4 Wd	 S(
   s0    Longer running test to check for memory leaks. c         S   s3   |  d d | f d | d |  | |  | | f S(   Ni   i   i
   (    (   R   R   R   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyR   U   s    R#   iÐ  R   iÜ  R   i   R   N(   R   R   (   R   R   R   R   R   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   test_memory_leaksR   s    	"c         C   sÉ   |  d d ƒ d „  ƒ } t  j ƒ  Ÿ t  j d ƒ | d g d ƒ | j d g d ƒ k s_ t ‚ | j t ƒ } t | j t ƒ s† t ‚ d t	 | j
 ƒ k s¡ t ‚ | j s° t ‚ | j s¿ t ‚ Wd QXd S(	   s&    Function arguments must be hashable. t
   unhashablet   warningc         S   s   |  f | f S(   N(    (   R   R   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   f`   s    t   alwaysi   i   s%   Unhashable arguments cannot be cachedN(   t   warningst   catch_warningst   simplefilterR   R   t   popt   UserWarningt
   issubclasst   categoryt   strt   messaget   filenamet   lineno(   R   t   recwarnR/   t   w(    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   test_warn_unhashable_args]   s    -c         C   sI   |  d d ƒ d „  ƒ } | d g d ƒ | j  d g d ƒ k sE t ‚ d S(   s&    Function arguments must be hashable. R-   t   ignorec         S   s   |  f | f S(   N(    (   R   R   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyR/   q   s    i   i   N(   R   R   (   R   R/   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   test_ignore_unhashable_argsn   s    c         C   sz   |  ƒ  d „  ƒ } t  j t ƒ  | d g d ƒ Wd  QX|  d d ƒ d „  ƒ } t  j t ƒ  | d g d ƒ Wd  QXd  S(   Nc         S   s   |  f | f S(   N(    (   R   R   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyR/   x   s    i   i   R-   t   errorc         S   s   d  S(   N(    (   R   R   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyR/      s    (   t   pytestt   raisest	   TypeError(   R   R/   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   test_default_unhashable_argsw   s    c         C   s_   d „  } t  j t ƒ  |  d d ƒ | ƒ Wd QXt  j t ƒ  |  d d ƒ | ƒ Wd QXd S(   s    State must be a list or dict. c         S   s   |  S(   N(    (   t   x(    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   <lambda>‡   t    R$   i   Niÿÿÿÿ(   i   (   RB   RC   RD   (   R   R/   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   test_state_type…   s
    	c         C   sÕ   |  d t  ƒ d „  ƒ } | d d ƒ | d d ƒ | d d ƒ k sI t ‚ | d d ƒ | d d ƒ k sm t ‚ | d d d ƒ| d d d ƒ| d d d ƒk s§ t ‚ | d d d ƒ| d d d ƒk sÑ t ‚ d S(	   s    Verify typed==False. t   typedc         S   s   |  | S(   N(    (   R   R   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyR      s    i   i   g      ð?g       @R   N(   R&   R   (   R   R   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   test_typed_False   s    $$*c         C   s¸   |  d t  ƒ d „  ƒ } | d d ƒ | d d ƒ k	 s< t ‚ | d d ƒ | d d ƒ k	 s` t ‚ | d d d ƒ| d d d ƒk	 sŠ t ‚ | d d d ƒ| d d d ƒk	 s´ t ‚ d S(	   s    Verify typed==True. RJ   c         S   s   |  | S(   N(    (   R   R   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyR       s    i   i   g      ð?g       @R   N(   R!   R   (   R   R   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   test_typed_True   s
    $$*c         C   s:   d „  } |  ƒ  | ƒ } d | _  | j  d k s6 t ‚ d  S(   Nc         S   s   |  S(   N(    (   RF   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyRG   «   RH   i   (   t   new_attrR   (   R   R/   R   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   test_dynamic_attributeª   s    		(   RB   t	   fastcacheR   R1   R   RD   R   t   fixturet
   clru_cachet	   lru_cacheR   R    R+   R,   R>   R@   RE   RI   RK   RL   RN   (    (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_clrucache.pyt   <module>   s*   		)								