
    &                          d dl Z  G d d      Zy)    Nc                   d    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zy)CacheTestMixinNc                    | j                  d      }| j                  dt        |             | j                  d|j                         | j                  d|j                         | j                  d|j                  d              | j                  d|j                  d             | j                  d|j                  d             | j                  t        |      j                  |j                  j                               y )N   maxsizer    )CacheassertEquallenr   currsize	getsizeof
assertTruerepr
startswith	__class____name__selfcaches     8platform/gsutil/third_party/cachetools/tests/__init__.pytest_defaultszCacheTestMixin.test_defaults   s    

1
%CJ'EMM*ENN+EOOD12EOOB/0EOOA./U..u/G/GHI    c                    | j                  d      }|j                  ddd       | j                  dt        |             | j                  d|d          | j                  d|d          d|d<   | j                  dt        |             | j                  d|d          | j	                  d|v xs d|v        d|d<   | j                  dt        |             | j                  d|d          | j	                  d|v xs
 d|v xs d|v        y )N   r   r   r   r         )r
   updater   r   r   r   s     r   test_insertzCacheTestMixin.test_insert   s    

1
%q\"CJ'E!H%E!H%aCJ'E!H%U
0a5j1aCJ'E!H%U
>a5j>AJ?r   c                 >   | j                  d      }|j                  ddd       | j                  dt        |             | j                  d|d          | j                  d|d          |j                  ddd       | j                  dt        |             | j                  d|d          | j                  d|d          |j                  ddd       | j                  dt        |             | j                  d|d          | j                  d|d          y )Nr   r   r   r   ab)r
   r   r   r   r   s     r   test_updatezCacheTestMixin.test_update#   s    

1
%q\"CJ'E!H%E!H%q\"CJ'E!H%E!H%%&CJ'eAh'eAh'r   c                    | j                  d      }|j                  ddd       | j                  dt        |             | j                  d|d          | j                  d|d          |d= | j                  dt        |             | j                  d|d          | j	                  d|       |d= | j                  dt        |             | j	                  d|       | j	                  d|       | j                  t              5  |d= d d d        | j                  dt        |             | j	                  d|       | j	                  d|       y # 1 sw Y   IxY wNr   r   r   r   r   )r
   r   r   r   assertNotInassertRaisesKeyErrorr   s     r   test_deletezCacheTestMixin.test_delete5   s/   

1
%q\"CJ'E!H%E!H%!HCJ'E!H%E"!HCJ'E"E"x(a )CJ'E"E"	 )(s   EEc                 n   | j                  d      }|j                  ddd       | j                  d|j                  d             | j                  dt	        |             | j                  d|j                  d             | j                  dt	        |             | j                  t              5  |j                  d       d d d        | j                  t              5  |j                  d       d d d        | j                  t              5  |j                  d       d d d        | j                  d |j                  dd              | j                  d |j                  dd              | j                  d |j                  dd              y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY wr&   )r
   r   r   popr   r(   r)   r   s     r   test_popzCacheTestMixin.test_popM   s>   

1
%q\"EIIaL)CJ'EIIaL)CJ'x(IIaL )x(IIaL )x(IIaL ) 	uyyD12uyyD12uyyD12 )(((((s$   4F#FF+FF(+F4c                    | j                  d      }|j                  ddd       | j                  |j                  d      ddd       | j	                  dt        |             | j                  |j                  d      ddd       | j	                  dt        |             | j                  t              5  |j                          d d d        y # 1 sw Y   y xY wr&   )	r
   r   assertInr,   r   r   r(   r)   popitemr   s     r   test_popitemzCacheTestMixin.test_popitema   s    

1
%q\"eiilaL1CJ'eiilaL1CJ'x(MMO )((s   :CCc                     d }	 | j                  d      j                          | j                  |j                         | j                  |j                         y # t        $ r}|}Y d }~Gd }~ww xY w)Nr   r   )r
   r0   	ExceptionassertIsNone	__cause__r   __suppress_context__)r   	exceptiones      r   test_popitem_exception_contextz-CacheTestMixin.test_popitem_exception_contextm   sd     		JJqJ!))+ 	)--.	667  	I	s    A 	A0$A++A0c                     G d d| j                         } |d      }| j                  d|j                         | j                  d|j                         | j                  dt	        |             | j                  d|d          | j                  d|d          | j                  dt	        |             | j                  d|v xr d|v        | j                  d|d          | j                  dt	        |             | j                  d|v        | j                  d|v xs d|v        | j                  d|vxs d|v       | j                  d|d          | j                  dt	        |             | j                  d|v        | j                  d|v xs
 d|v xs d|v        | j                  d|j                  d             | j                  d |j                  d	             | j                  d
|j                  d	d
             | j                  dt	        |             | j                  d|j                  d             | j                  t              5  |j                  d	       d d d        | j                  d |j                  d	d              | j                  d
|j                  d	d
             | j                  dt	        |             |j                          d|d<   | j                  d|j                  d             | j                  d|j                  dd             | j                  d|d          | j                  d|j                  dd             | j                  d|j                  dd              | j                  d|j                  d             | j                  d|d          | j                  dt	        |             | j                  d|v xr d|v        | j                  d |j                  d             | j                  dt	        |             | j                  d|v        | j                  d|v xs d|v        | j                  d|vxs d|v       y # 1 sw Y   xY w)Nc                       e Zd Zd Zy)1CacheTestMixin.test_missing.<locals>.DefaultCachec                     || |<   |S N r   keys     r   __missing__z=CacheTestMixin.test_missing.<locals>.DefaultCache.__missing__z   s    S	
r   Nr   
__module____qualname__rB   r?   r   r   DefaultCacher<   y   s    r   rF   r   r   r   r   r   r         )r
   r   r   r   r   r   getr,   r(   r)   clear
setdefaultr   rF   r   s      r   test_missingzCacheTestMixin.test_missingx   s   	4:: 	
 Q'ENN+EMM*CJ'E!H%E!H%CJ'U
1qEz2E!H%CJ'U
#U
0a5j18!5.9E!H%CJ'U
#U
>a5j>AJ?
 	EIIaL)uyy|,		!U 34CJ'EIIaL)x(IIaL )uyyD12		!U 34CJ'a 0 0 34 0 0A 67a) 0 0E :; 0 0D 9: 0 0 34a)CJ'U
1qEz2u//23CJ'U
#U
0a5j18!5.9+ )(s   Q22Q<c                     G d d| j                         } |dd       }| j                  d|j                         | j                  d|j                         | j                  d|d          | j                  dt	        |             | j                  d|j                         | j                  d|       | j                  d|d          | j                  dt	        |             | j                  d|j                         | j                  d|       | j                  d|       | j                  d|d          | j                  dt	        |             | j                  d|j                         | j                  d|d          | j                  dt	        |             | j                  d|j                         | j                  d	|j                                y )
Nc                       e Zd Zd Zy);CacheTestMixin.test_missing_getsizeof.<locals>.DefaultCachec                 2    	 || |<   |S # t         $ r Y |S w xY wr>   )
ValueErrorr@   s     r   rB   zGCacheTestMixin.test_missing_getsizeof.<locals>.DefaultCache.__missing__   s0     #DI 
 " 
s   	 	NrC   r?   r   r   rF   rP      s    r   rF   r   c                     | S r>   r?   xs    r   <lambda>z7CacheTestMixin.test_missing_getsizeof.<locals>.<lambda>   s    Ar   r   r   r   r   r   )r   r   )r
   r   r   r   r   r/   r'   r0   rL   s      r   test_missing_getsizeofz%CacheTestMixin.test_missing_getsizeof   sz   	4:: 	 Q+>ENN+EMM*E!H%CJ'ENN+aE!H%CJ'ENN+E"aE!H%CJ'ENN+E!H%CJ'ENN+1r   c                    | j                  d|j                         | j                  d|j                         | j                  d|j                  d             | j                  d|j                  d             | j                  d|j                  d             |j	                  ddd       | j                  dt        |             | j                  d|j                         | j                  d|d          | j                  d|d          d|d<   | j                  dt        |             | j                  d|j                         | j                  d|d          | j                  d|       |j	                  ddd       | j                  dt        |             | j                  d|j                         | j                  d|d          | j                  d|d          d|d<   | j                  dt        |             | j                  d|j                         | j                  d|d          | j                  d|       | j                  d|       | j                  t              5  d|d<   d d d        | j                  dt        |             | j                  d|j                         | j                  d|d          | j                  t              5  d|d<   d d d        | j                  dt        |             | j                  d|j                         | j                  d|d          y # 1 sw Y   xY w# 1 sw Y   bxY w)Nr   r   r   r   r   r   )	r   r   r   r   r   r   r'   r(   rR   r   s     r   _test_getsizeofzCacheTestMixin._test_getsizeof   s   ENN+EMM*EOOA./EOOA./EOOA./q\"CJ'ENN+E!H%E!H%aCJ'ENN+E!H%E"q\"CJ'ENN+E!H%E!H%aCJ'ENN+E!H%E"E"z*E!H +CJ'ENN+E!H%z*E!H +CJ'ENN+E!H% +* +*s   3L="M	=M	Mc                 J    | j                  | j                  dd              y )Nr   c                     | S r>   r?   rT   s    r   rV   z5CacheTestMixin.test_getsizeof_param.<locals>.<lambda>  s    qr   rW   )rZ   r
   )r   s    r   test_getsizeof_paramz#CacheTestMixin.test_getsizeof_param   s    TZZ[ZIJr   c                 ^     G d d| j                         }| j                   |d             y )Nc                       e Zd Zd Zy)5CacheTestMixin.test_getsizeof_subclass.<locals>.Cachec                     |S r>   r?   )r   values     r   r   z?CacheTestMixin.test_getsizeof_subclass.<locals>.Cache.getsizeof  s    r   N)r   rD   rE   r   r?   r   r   r
   r`     s    r   r
   r   r   )r
   rZ   )r   r
   s     r   test_getsizeof_subclassz&CacheTestMixin.test_getsizeof_subclass  s'    	DJJ 	 	U1-.r   c                    dd l }| j                  d      }|j                  ddd       |j                  |j	                  |            }| j                  ||       | j                  dt        |             | j                  d|d          | j                  d|d          d|d<   | j                  dt        |             | j                  d|d          | j                  d|v xs d|v        d|d<   | j                  dt        |             | j                  d|d          | j                  d|v xs
 d|v xs d|v        | j                  ||j                  |j	                  |                   y )Nr   r   r   r   r   r   r   )pickler
   r   loadsdumpsr   r   r   )r   re   sourcer   s       r   test_picklezCacheTestMixin.test_pickle
  sG   A&!l#V\\&12'CJ'E!H%E!H%aCJ'E!H%U
0a5j1aCJ'E!H%U
>a5j>AJ?V\\%-@ ABr   c                 J   dd l }dd l}dd|j                         dz  fD ]  }| j                  |      }|j	                  d t        |      D               |j                  |j                  |            }| j                  |t        |             | j                  ||        y )Nr   r   r   r   c              3   $   K   | ]  }||f 
 y wr>   r?   ).0is     r   	<genexpr>z5CacheTestMixin.test_pickle_maxsize.<locals>.<genexpr>*  s     3(Q1a&(s   )
re   sysgetrecursionlimitr
   r   rangerf   rg   r   r   )r   re   ro   nrh   r   s         r   test_pickle_maxsizez"CacheTestMixin.test_pickle_maxsize#  s     Q--/!34AZZZ*FMM3%(33LLf!56EQE
+VU+ 5r   )r   rD   rE   r
   r   r    r$   r*   r-   r1   r9   rM   rX   rZ   r]   rc   ri   rs   r?   r   r   r   r      sT    EJ@$($#03(
	89:v2B*&XK/C2
,r   r   )unittestr   r?   r   r   <module>ru      s    i, i,r   