ó
§«Õ\c           @   s×   d  d l  Z  d  d l Z d  d l m Z d  d l Z d  d l m Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 y d  d l
 m Z Wn/ e k
 r¹ e j d d d d d	 g ƒ Z n Xd
 e j f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   permutations(   t   choice(   t
   _CacheInfot	   CacheInfot   hitst   missest   maxsizet   currsizet   TestLRUc           B   sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c            s¬  d „  } t  j d d ƒ | ƒ } | j ƒ  \ } } } } |  j | d ƒ |  j | d ƒ |  j | d ƒ |  j | d ƒ t d ƒ } x[ t d ƒ D]M } t | ƒ t | ƒ }	 }
 | |	 |
 ƒ } | |	 |
 ƒ } |  j | | ƒ q’ W| j ƒ  \ } } } } |  j | | k ƒ |  j | | d ƒ |  j | d ƒ | j ƒ  | j ƒ  \ } } } } |  j | d ƒ |  j | d ƒ |  j | d ƒ | |	 |
 ƒ | j ƒ  \ } } } } |  j | d ƒ |  j | d ƒ |  j | d ƒ t |  d ƒ rþ|  j	 | j
 | ƒ n  | j
 |	 |
 ƒ | j ƒ  \ } } } } |  j | d ƒ |  j | d ƒ |  j | d ƒ t  j d ƒ ‡  f d	 †  ƒ } |  j | j ƒ  j d ƒ d g ‰  x' t d ƒ D] } |  j | ƒ  d ƒ q£W|  j ˆ  d g ƒ | j ƒ  \ } } } } |  j | d ƒ |  j | d ƒ |  j | d ƒ t  j d ƒ ‡  f d
 †  ƒ } |  j | j ƒ  j d ƒ d ˆ  d <x' t d ƒ D] } |  j | ƒ  d ƒ qiW|  j ˆ  d g ƒ | j ƒ  \ } } } } |  j | d ƒ |  j | d ƒ |  j | d ƒ t  j d ƒ ‡  f d †  ƒ } |  j | j ƒ  j d ƒ d ˆ  d <x( d D]  }	 |  j | |	 ƒ |	 d ƒ q)W|  j ˆ  d g ƒ | j ƒ  \ } } } } |  j | d ƒ |  j | d ƒ |  j | d ƒ d  S(   Nc         S   s   d |  | S(   Ni   (    (   t   xt   y(    (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt   orig   s    R   i   i    i   iè  i   t   assertIsc              s   ˆ  d c d 7<d S(   Ni    i   i   (    (    (   t   f_cnt(    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt   f?   s    c              s   ˆ  d c d 7<d S(   Ni    i   i   (    (    (   R   (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyR   O   s    i   i   c            s   ˆ  d c d 7<|  d S(   Ni    i   i
   (    (   R	   (   R   (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyR   _   s    i   i	   i   i
   i   (   i   i	   i   i	   i   i	   i   i   i   i	   i	   i	   i   i   i   i   (   t	   fastcachet
   clru_cachet
   cache_infot   assertEqualt   rangeR   t
   assertTruet   cache_cleart   hasattrR   t   __wrapped__R   (   t   selfR   R   R   R   R   R   t   domaint   iR	   R
   t   actualt   expected(    (   R   s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt   test_lru   s€    	
	

c            sð   t  j d d  ƒ ‡  f d †  ƒ ‰  |  j g  t d ƒ D] } ˆ  | ƒ ^ q4 d d d d d d d	 d
 d d d d d d d d g ƒ |  j ˆ  j ƒ  t d d d d d d  d d ƒ ƒ ˆ  j ƒ  |  j ˆ  j ƒ  t d d d d d d  d d ƒ ƒ d  S(   NR   c            s,   |  d k  r |  Sˆ  |  d ƒ ˆ  |  d ƒ S(   Ni   i   (    (   t   n(   t   fib(    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyR   p   s    i   i    i   i   i   i   i   i   i   i"   i7   iY   i   ié   iy  ib  R   i   R   R   (   R   R   t   NoneR   R   R   R   R   (   R   R   (    (   R   s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt   test_lru_with_maxsize_noneo   s    !(7"
c         C   sÞ   x× d	 D]Ï } t j | ƒ d „  ƒ } |  j | d ƒ d ƒ yn |  j t ƒ  } | d ƒ Wd  QXt | j d ƒ rˆ |  j | j j	 ƒ n  |  j t ƒ  | d ƒ Wd  QXWq t
 k
 rÕ t j d  d
 k rÖ ‚  qÖ q Xq Wd  S(   Ni€   c         S   s   d |  S(   Nt   abc(    (   R   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt   func‚   s    i    t   ai   t   __context__i   i   (   Ni€   (   i   i   (   R    R   R   R   t   assertRaisest
   IndexErrorR   t	   exceptiont   assertIsNoneR%   t	   TypeErrort   syst   version_info(   R   R   R#   t   cm(    (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt   test_lru_with_exceptions}   s    c         C   sT  xMd D]E} t j d | d t ƒ d „  ƒ } |  j | d ƒ d ƒ |  j t | d ƒ ƒ t d ƒ ƒ |  j | d ƒ d ƒ |  j t | d ƒ ƒ t d ƒ ƒ |  j | d	 d ƒ d ƒ |  j t | d	 d ƒ ƒ t d ƒ ƒ |  j | d	 d ƒ d ƒ |  j t | d	 d ƒ ƒ t d ƒ ƒ |  j | j ƒ  j d
 ƒ |  j | j ƒ  j d
 ƒ q Wd  S(   Ni€   R   t   typedc         S   s   |  |  S(   N(    (   R	   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt   square˜   s    i   i	   g      @g      "@R	   i   (   Ni€   (	   R    R   R   t   TrueR   t   typeR   R   R   (   R   R   R0   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt   test_lru_with_types–   s    !""%%c            sí   t  j ƒ  ‡  f d †  ƒ ‰  |  j g  t d ƒ D] } ˆ  d | ƒ ^ q. d d d d d d d	 d
 d d d d d d d d g ƒ |  j ˆ  j ƒ  t d d d d d d d d ƒ ƒ ˆ  j ƒ  |  j ˆ  j ƒ  t d d d d d d d d ƒ ƒ d  S(   Nc            s2   |  d k  r |  Sˆ  d |  d ƒ ˆ  d |  d ƒ S(   Ni   R   i   (    (   R   (   R   (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyR   §   s    i   R   i    i   i   i   i   i   i   i   i"   i7   iY   i   ié   iy  ib  R   i   R   R   i€   R   (   R   R   R   R   R   R   R   (   R   t   number(    (   R   s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt   test_lru_with_keyword_args¦   s    %7"
c            só   t  j d d  ƒ ‡  f d †  ƒ ‰  |  j g  t d ƒ D] } ˆ  d | ƒ ^ q4 d d d d d d	 d
 d d d d d d d d d g ƒ |  j ˆ  j ƒ  t d d d d d d  d d ƒ ƒ ˆ  j ƒ  |  j ˆ  j ƒ  t d d d d d d  d d ƒ ƒ d  S(   NR   c            s2   |  d k  r |  Sˆ  d |  d ƒ ˆ  d |  d ƒ S(   Ni   R   i   (    (   R   (   R   (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyR   ·   s    i   R   i    i   i   i   i   i   i   i   i"   i7   iY   i   ié   iy  ib  R   i   R   R   (   R   R   R    R   R   R   R   R   (   R   R4   (    (   R   s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt'   test_lru_with_keyword_args_maxsize_none¶   s    !+7"
c            s}   t  j d d ƒ d „  ƒ ‰ d d ‡  ‡ f d †  ƒ  Y‰  ˆ ˆ  d ƒ ƒ ˆ ˆ  d ƒ ƒ |  j ˆ ˆ  d ƒ ƒ ˆ  d ƒ ƒ d  S(	   NR   i
   c         S   s   |  S(   sE   Used to demonstrate a reentrant lru_cache call within a single thread(    (   R	   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt	   test_funcÇ   s    t   DoubleEqc              s2   e  Z d  Z d „  Z d „  Z ‡  ‡ f d †  Z RS(   s=   Demonstrate a reentrant lru_cache call within a single threadc         S   s   | |  _  d  S(   N(   R	   (   R   R	   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt   __init__Î   s    c         S   s   |  j  S(   N(   R	   (   R   (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt   __hash__Ð   s    c            s2   |  j  d k r" ˆ ˆ  d ƒ ƒ n  |  j  | j  k S(   Ni   i   (   R	   (   R   t   other(   R8   R7   (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt   __eq__Ò   s    (   t   __name__t
   __module__t   __doc__R9   R:   R<   (    (   R8   R7   (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyR8   Ì   s   		i   i   (    (   R   R   R   (   R   (    (   R8   R7   s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt   test_need_for_rlockÄ   s    (	   R=   R>   R   R!   R.   R3   R5   R6   R@   (    (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyR      s   	Z					(   R"   t   collectionst	   itertoolsR    t   picklet   randomR   R+   t   unittestR   t	   functoolsR   t   ImportErrort
   namedtuplet   TestCaseR   (    (    (    s=   lib/python2.7/site-packages/fastcache/tests/test_functools.pyt   <module>   s   	