
    ,[g4o                        d dl Z d dlZd dlZ	 eZ G d dej                        Z G d dej                        Z G d de      Z	 G d d	ej                        Z
 G d
 de      Z G d dej                        Zd Zy# e$ r Y uw xY w)    Nc                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)UnboundedCacheTestsc                     ddl m} |S )Nr   UnboundedCache)
repoze.lrur   )selfr   s     K/var/www/html/bid-api/venv/lib/python3.12/site-packages/repoze/lru/tests.py_getTargetClassz#UnboundedCacheTests._getTargetClass   s    -    c                 ,     | j                                S Nr   r	   s    r
   _makeOnezUnboundedCacheTests._makeOne   s    %t##%''r   c                 \    | j                         }| j                  |j                  i        y r   )r   assertEqual_datar	   caches     r
   	test_ctorzUnboundedCacheTests.test_ctor   s!    b)r   c                 d    | j                         }| j                  |j                  d             y Nnonesuch)r   assertIsNonegetr   s     r
   test_get_miss_no_defaultz,UnboundedCacheTests.test_get_miss_no_default   s$    %))J/0r   c                 |    | j                         }t               }| j                  |j                  d|      |       y r   )r   objectassertIsr   )r	   r   defaults      r
   test_get_miss_explicit_defaultz2UnboundedCacheTests.test_get_miss_explicit_default   s-    (eii
G4g>r   c                     | j                         }t               x}|j                  d<   | j                  |j	                  d      |       y Nextant)r   r   r   r    r   r	   r   r%   s      r
   test_get_hitz UnboundedCacheTests.test_get_hit!   s9    )/1X&eii)62r   c                     | j                         }t               x}|j                  d<   |j                          | j	                  |j                  d             y r$   )r   r   r   clearr   r   r&   s      r
   
test_clearzUnboundedCacheTests.test_clear&   sB    )/1X&%))H-.r   c                 F    | j                         }|j                  d       y r   )r   
invalidater   s     r
   test_invalidate_missz(UnboundedCacheTests.test_invalidate_miss,   s    $r   c                     | j                         }t               x}|j                  d<   |j                  d       | j	                  |j                  d             y r$   )r   r   r   r,   r   r   r&   s      r
   test_invalidate_hitz'UnboundedCacheTests.test_invalidate_hit0   sG    )/1X&"%))H-.r   c                     | j                         }t               }|j                  d|       | j                  |j                  d   |       y r$   )r   r   putr    r   r&   s      r
   test_putzUnboundedCacheTests.test_put6   s9    		(F#ekk(+V4r   N)__name__
__module____qualname__r   r   r   r   r"   r'   r*   r-   r/   r2    r   r
   r   r      s4    (*1?
3
/%/5r   r   c                   Z    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y)LRUCacheTestsc                     ddl m} |S )Nr   LRUCache)r   r;   )r	   r;   s     r
   r   zLRUCacheTests._getTargetClass?   s
    'r   c                 .     | j                         |      S r   r   )r	   sizes     r
   r   zLRUCacheTests._makeOneC   s    %t##%d++r   c                 "   | j                  |j                  t        |j                        k         | j                  |j                  dk\         | j	                  |j
                  |j                  dz
         | j	                  t        |j                        |j                         | j	                  t        |j                        t        |j                               | j                  t        |j                        t        |j                        k         |j                  j                         D ]  \  }}|\  }}| j                  t        |      t        d      k(  xs t        |      t        ddz        k(         | j                  |dk\         | j                  ||j
                  k         |j                  |   }| j                  ||u        |j                  |   } |j                  D ]  }| j                  |du xs |du         y )Nr      *         TF
assertTruehandlen
clock_keysr   maxposr=   
clock_refsdataitemstype)r	   r   keyvalueposval	clock_key	clock_refs           r
   check_cache_is_consistentz'LRUCacheTests.check_cache_is_consistentF   s    	

S)9)9%::;

a(uzzA~6U--.

; 	U--.E4D4D0EFEJJ3u/?/?+@@A
  ****,JCHCOOIb) 0Ia3h/1 OOC1H%OOC5<</0((-IOOI,-((-I - ))IOOI-Ce1CD *r   c                 F    | j                  t        | j                  d       y )Nr   )assertRaises
ValueErrorr   r   s    r
   test_size_lessthan_1z"LRUCacheTests.test_size_lessthan_1e   s    *dmmQ7r   c                 b   | j                  d      }| j                  |j                  d             | j                  |j                  d             | j                  |j                  d             | j                  |j                  d              | j                  |j                  d             | j                  |j                  t                            | j	                  |j                  dd      d       | j	                  |j                  dd      d       | j                  |       y )Nr?   foor@   rY   r@    bar)r!   )r   r   r   r   r   rS   r   s     r
   test_getzLRUCacheTests.test_geth   s    a %))E*+%))B-(%))K01%))D/*%))B-(%))FH-.5%0%85%8%@&&u-r   c                    | j                  d      }| j                  |       |j                  dd       |j                  dd       |j                  dd       |j                  d d       |j                  d	d
       |j                  dd       t               }|j                  |d       | j                  |       | j	                  |j                  d      d       | j	                  |j                  d      d       | j	                  |j                  dd      d       | j	                  |j                  d       d       | j	                  |j                  d	      d
       | j	                  |j                  d      d       | j	                  |j                  |      d       |j                  dd       | j	                  |j                  d      d       | j                  |       y )N   rY   FOOr@   fortytworZ   tuple_as_keyNone_as_keyr[   empty_string_as_keyT㥛 	@float_as_keyobject_as_keyzfortytwo again)r   rS   r1   r   r   r   )r	   r   	my_objects      r
   r2   zLRUCacheTests.test_putw   s}   a &&u-		%		"j!		;/		$&		"+,		%(H			)_-&&u-5)512
3;
;^L4-82(=>5)>:9-? 			"&'2(89&&u-r   c                    | j                  d      }|j                  dd       |j                  dd       |j                  d       | j                  |j	                  d             | j                  |j	                  d      d       | j                  |       |j                  d       | j                  |j	                  d             | j                  |j	                  d             | j                  |j                  i        | j                  |       |j                  dd       |j                  d       | j                  |j	                  d      d       | j                  |j	                  d             | j                  |       y )N   rY   r\   r`   BARnonexistingkey)r   r1   r,   r   r   r   rS   rJ   r   s     r
   test_invalidatezLRUCacheTests.test_invalidate   s1   a 		%		%%))E*+5)51&&u-%))E*+%))E*+R(&&u-		%)*5)51%))E*+&&u-r   c                 *   | j                  d      }|j                  dd       | j                  |j                  d      d       | j	                  |       |j                  dd       | j                  |j                  d      d       | j                  |j                  d             | j	                  |       |j                  dd       | j                  |j                  d      d       | j                  |j                  d             | j	                  |       |j                  d       | j	                  |       | j                  |j                  d             | j                  |j                  d             |j                  dd       | j                  |j                  d      d       |j                          | j	                  |       | j                  |j                  d             | j                  |j                  d             y )Nr?   rY   r\   r`   rk   )r   r1   r   r   rS   r   r,   r)   r   s     r
   test_small_cachezLRUCacheTests.test_small_cache   s   a 		%5)51&&u-		%5)51%))E*+&&u- 			%5)51%))E*+&&u- 	&&u-%))E*+%))E*+ 			%5)51&&u-%))E*+%))E*+r   c                    | j                  d      }d}d}|j                  |d       | j                  |j                  |      d       | j                  |j                  |      d       | j	                  |       | j                  d      }|j                  |d       |j                  |       | j                  |j                  |             | j                  |j                  |             y )Nr?   )r?   r?   r@   )r   r1   r   r   rS   r,   r   )r	   r   	tuple_one	tuple_twos       r
   test_equal_but_not_identicalz*LRUCacheTests.test_equal_but_not_identical   s    a 				)R 9-r29-r2&&u-a 		)R #%))I./%))I./r   c                    d}| j                  |      }t        |      D ]  }|j                  |d|z          t        d      D ]j  }t        j                  d|dz
        }t        j
                  d      r%| j                  |j                  |      d|z         V|j                  |d|z         l | j                  |j                  d       | j                  |j                  d       | j                  |       y )N  item%s'  r   r?   )r   ranger1   random	randrangegetrandbitsr   r   misses	evictionsrS   )r	   r=   r   countcache_opitems         r
   test_perfect_hitratez"LRUCacheTests.test_perfect_hitrate   s    d#4[EIIeX-. ! eH##Atax0D!!!$  4(T/B		$40 % 	q)!,&&u-r   c                 R   d}| j                  |dz        }t        |      D ]  }|j                  |d|z          d}d}d}t        d      D ]  }t        j                  d|dz
        }t        j
                  d      rA|j                  |      }	|dz  }| j                  |	d|z  k(  xs |	d u        |	|dz  }l|dz  }r|j                  |d|z          |t        |      z  dz  }
| j                  |
dkD         | j                  |
d	k         d|j                  z  |j                  z  }| j                  |dkD         | j                  |d	k         d|j                  z  |j                  z  }| j                  |dkD         | j                  |d	k         | j                  |       y )
Nru   rA   rv   r   rw   r?   d   -   7   )r   rx   r1   ry   rz   r{   r   rD   floathitslookupsr|   rS   )r	   r=   r   r~   r   r|   
total_getsr   r   entry	hit_ratiointernal_hit_ratiointernal_miss_ratios                r
   test_imperfect_hitratez$LRUCacheTests.test_imperfect_hitrate   s   dQh'4[EIIeX-. ! 
eH##Atax0D!!!$		$a
(T/1 &' =aKFAID		$40 %  5,,s2		B'	B' !5::-=*R/0*R/0 "ELL05==@+b01+b01&&u-r   c                    | j                  d      }|j                  dd       |j                  dd       | j                  |j                  d       |j                  dd       |j                  dd       | j                  |j                  d       |j                  dd       |j                  dd       | j                  |j                  d       |j	                          | j                  |j                  d       y )NrA   r?   r   rj      )r   r1   r   r}   r)   r   s     r
   test_eviction_counterz#LRUCacheTests.test_eviction_counter  s    a 		!Q		!Q!,		!Q		!Q!,		!Q		!Q!,!,r   c                    | j                  d      }| j                  |j                  d             |j                  dd       |j                  j                  d      \  }}| j                  |j                  |   d       | j                  |j                  |   d       | j                  |d       | j                  |j                  d      d       | j                  |j                  |dz          |j                  j                  d      \  }}| j                  |j                  |   d       | j                  |j                  |dz          | j                  t        |j                        d       |j                  dd       |j                  j                  d      \  }}| j                  |j                  |   d       | j                  |j                  |   d       | j                  t        |j                        d       |j                  d	d
       |j                  j                  d	      \  }}| j                  |j                  |   d       | j                  |j                  |   d	       | j                  t        |j                        d       |j                  j                  d      \  }}| j                  |j                  |   d       |j                  d       |j                  dd       | j                  t        |j                        d       | j                  |j                  j                  d             |j                  dd       | j                  t        |j                        d       | j                  |j                  j                  d             | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d             | j                  |j                  d             | j                  |j                  d	      d
       | j                  |       y Nrj   a1Tr?   b2rA   c3d4e5r   r   r   r1   rJ   r   rI   rG   rE   rF   rS   )r	   r   rO   rN   s       r
   test_itzLRUCacheTests.test_it-  sI   a %))C.)		#sZZ^^C(
U))#.5))#.4$3-S1W-ZZ^^C(
U))#.5S1W-UZZ!,		#sZZ^^C(
U))#.5))#.4UZZ!,		#sZZ^^C(
U))#.5))#.4UZZ!,ZZ^^C(
U))#.5		# 			#sUZZ!,%**..-. 			#sUZZ!,%**..-.3-3-%))C.)%))C.)3-&&u-r   N)r3   r4   r5   r   r   rS   rW   r]   r2   rm   ro   rs   r   r   r   r   r6   r   r
   r8   r8   =   sF    ,E>8..:.,,B0".().V-$3.r   r8   c                   8    e Zd Zd Zd	dZd Zd Zd Zd Zd Z	y)
ExpiringLRUCacheTestsc                     ddl m} |S )Nr   ExpiringLRUCache)r   r   )r	   r   s     r
   r   z%ExpiringLRUCacheTests._getTargetClasse  s    /r   Nc                 b    | | j                         |      S  | j                         ||      S )Ndefault_timeoutr   )r	   r=   r   s      r
   r   zExpiringLRUCacheTests._makeOnei  s;    ")4'')$//)4'')o7 7r   c                 p   | j                  |j                  t        |j                        k         | j                  |j                  dk\         | j	                  |j
                  |j                  dz
         | j	                  t        |j                        |j                         | j	                  t        |j                        t        |j                               | j                  t        |j                        t        |j                        k         |j                  j                         D ]  \  }}|\  }}}| j                  t        |      t        d      k(  xs t        |      t        ddz        k(         | j                  |dk\         | j                  ||j
                  k         |j                  |   }| j                  ||u        |j                  |   }| j                  t        |      t        d      k(          |j                  D ]  }| j                  |du xs |du         y )	Nr   r?   r@   rA   rB   re   TFrC   )	r	   r   rM   rN   rO   rP   timeoutrQ   rR   s	            r
   rS   z/ExpiringLRUCacheTests.check_cache_is_consistentp  s    	

S)9)9%::;

a(uzzA~6U--.

; 	U--.E4D4D0EFEJJ3u/?/?+@@A
  ****,JC %CgOOS	T"X%Dcd18n)DFOOC1H%OOC5<</0((-IOOI,-((-IOODMT%[89 - ))IOOI-Ce1CD *r   c                    | j                  d      }| j                  |j                  d             |j                  dd       |j                  j                  d      \  }}}| j                  |j                  |   d       | j                  |j                  |   d       | j                  |d       | j                  |j                  d      d       | j                  |j                  |dz          |j                  j                  d      \  }}}| j                  |j                  |   d       | j                  |j                  |dz          | j                  t        |j                        d       |j                  dd       |j                  j                  d      \  }}}| j                  |j                  |   d       | j                  |j                  |   d       | j                  t        |j                        d       |j                  d	d
       |j                  j                  d	      \  }}}| j                  |j                  |   d       | j                  |j                  |   d	       | j                  t        |j                        d       |j                  j                  d      \  }}}| j                  |j                  |   d       |j                  d       |j                  dd       | j                  t        |j                        d       | j                  |j                  j                  d             |j                  dd       | j                  t        |j                        d       | j                  |j                  j                  d             | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d             | j                  |j                  d             | j                  |j                  d	      d
       | j                  |       y r   r   )r	   r   rO   rN   expiress        r
   r   zExpiringLRUCacheTests.test_it  sZ    a %))C.)		#s#jjnnS1UG))#.5))#.4$3-S1W-#jjnnS1UG))#.5S1W-UZZ!,		#s#jjnnS1UG))#.5))#.4UZZ!,		#s#jjnnS1UG))#.5))#.4UZZ!,#jjnnS1UG))#.5		# 			#sUZZ!,%**..-. 			#sUZZ!,%**..-.3-3-%))C.)%))C.)3-&&u-r   c                 z   | j                  d      }|j                  dd       t        j                  d       |j                  dd       | j	                  |j                  d      d       | j	                  |j                  d      d       | j                  |       | j                  dd      }|j                  dd       t        j                  d       |j                  dd       | j                  |j                  d             | j	                  |j                  d      d       | j                  |       y )Nrj   rY   r\   皙?r`   rk   r   r   r1   timesleepr   r   rS   r   r   s     r
   test_default_timeoutz*ExpiringLRUCacheTests.test_default_timeout  s     a 		%

3		%5)515)51&&u- a5		%

3		%%))E*+5)51&&u-r   c                 J   | j                  dd      }|j                  dd       |j                  ddd	       |j                  d
dd	       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d
      d       t	        j
                  d       | j                  |j                  d             | j                  |j                  d      d       | j                  |j                  d
      d       t	        j
                  d       | j                  |j                  d             | j                  |j                  d             | j                  |j                  d
      d       t	        j
                  d       | j                  |j                  d             | j                  |j                  d             | j                  |j                  d
             | j                  |       y )Nrj   r   r   oner?   tworA   皙?r   threeg333333?)r   r1   r   r   r   r   r   rS   r   s     r
   test_different_timeoutsz-ExpiringLRUCacheTests.test_different_timeouts  s   a5		%		%C	(		'1c	* 	5)1-5)1-7+Q/ 	

3%))E*+5)1-7+Q/ 	

3%))E*+%))E*+7+Q/ 	

3%))E*+%))E*+%))G,-&&u-r   c                 0   | j                  dd      }|j                  dd       |j                  ddd	       |j                  d
dd	       t        j                  d       | j	                  |j                  d      d       | j	                  |j                  d      d       | j	                  |j                  d
      d       | j                  |       |j                  dd       |j                  ddd	       |j                  d
d       t        j                  d       | j	                  |j                  d      d       | j                  |j                  d             | j	                  |j                  d
      d       | j                  |       y )Nrj   r   r   rY   r\   foo2bar2
   r   foo3bar3r   r   r   s     r
   test_renew_timeoutz(ExpiringLRUCacheTests.test_renew_timeout  s<   a5		%		&&"	-		&&"	-

35)516*F36*F3&&u- 			%		&&#	.		&&!

35)51%))F+,6*F3&&u-r   r   )
r3   r4   r5   r   r   rS   r   r   r   r   r6   r   r
   r   r   c  s)     7!EF6.p.,.B.r   r   c                   `    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y)DecoratorTestsc                     ddl m} |S )Nr   	lru_cache)r   r   )r	   r   s     r
   r   zDecoratorTests._getTargetClass   s    (r   c                 .     | j                         |i |S r   r   r	   argskws      r
   r   zDecoratorTests._makeOne$      %t##%t2r22r   c                     ddl m} | j                  d       }| j                  |j                  |       | j                  |j                  j                  i        y )Nr   r   maxsize)r   r   r   assertIsInstancer   r   r   )r	   r   	decorators      r
   test_ctor_no_sizez DecoratorTests.test_ctor_no_size'  sC    -MM$M/	ioo~>..3r   c                     ddl m} | j                  d      }| j                  |j                  |       | j                  |j                  j                  d       y )Nr   r:   r   r   )r   r;   r   r   r   r   r=   )r	   r;   r   s      r
   test_ctor_w_size_no_timeoutz*DecoratorTests.test_ctor_w_size_no_timeout-  sC    'MM"M-	ioox8--r2r   c                    ddl m} | j                  dd      }| j                  |j                  |       | j                  |j                  j                  d       | j                  |j                  j                  d       y )Nr   r   r      r   r   )r   r   r   r   r   r   r=   r   )r	   r   r   s      r
   test_ctor_w_size_w_timeoutz)DecoratorTests.test_ctor_w_size_w_timeout3  s`    /MM"bM9	ioo/?@--r288"=r   c                 t    | j                  dd       }| j                  |j                  j                  d       y Nr   )r   r   r   r=   )r	   r   s     r
   test_ctor_nocachez DecoratorTests.test_ctor_nocache:  s,    MM"d+	--r2r   c                    t               }| j                  d|      }d } ||      } |d      }| j                  |d   d       | j                  |d       | j                  t        |      d        |d      }| j                  |d   d       | j                  |d       | j                  t        |      d        |d      }| j                  |d   d       | j                  |d       | j                  t        |      d       y )Nr   c                     | S r   r6   rM   s    r
   wrappedz.DecoratorTests.test_singlearg.<locals>.wrappedA      Jr   r?   )r?   rA   )rA   DummyLRUCacher   r   rF   )r	   r   r   r   	decoratedresults         r
   test_singleargzDecoratorTests.test_singlearg>  s    MM!U+		g&	1ta(#UQ'1ta(#UQ'1ta(#UQ'r   c                     t               }| j                  d|      }d } ||      }| j                  |j                  |u        y )Nr   c                     | S r   r6   r   s    r
   r   z/DecoratorTests.test_cache_attr.<locals>.wrappedT  r   r   )r   r   rD   _cache)r	   r   r   r   r   s        r
   test_cache_attrzDecoratorTests.test_cache_attrQ  s?    MM!U+		g&		((E12r   c                     t               }| j                  d|      }d } ||      } |ddd      }| j                  |d   d       | j                  |d       | j                  t        |      d       y )Nr   c                      | S r   r6   )r   s    r
   moreargsz/DecoratorTests.test_multiargs.<locals>.moreargs\  s    Kr   rj   r      rj   r   r   r?   r   r	   r   r   r   r   r   s         r
   test_multiargszDecoratorTests.test_multiargsY  so    MM!U+		h'	1a#y)95+UQ'r   c                 $   t               }| j                  d|      }d } ||      } |dddddd      }| j                  |d	t        g d
      f   d	ddddf       | j                  |d	ddddf       | j                  t	        |      d       y )Nr   c                  
    | |fS r   r6   r   kwargss     r
   r   z8DecoratorTests.test_multiargs_keywords.<locals>.moreargsg      <r   rj   r   r   r?   rA   )r   r   r   r   ))r   r?   )r   rA   )r   rj   )r   r   r   	frozensetrF   r   s         r
   test_multiargs_keywordsz&DecoratorTests.test_multiargs_keywordsd  s    MM!U+		 h'	1aa129i(EFGHQA1-.	0 	)!-B!CDUQ'r   c                     t               }| j                  d|d      }d } ||      } |ddddg d	
      }| j                  t        |      d       | j                  |ddg d	d
f       y )Nr   Tignore_unhashable_argsc                  
    | |fS r   r6   r   s     r
   r   zODecoratorTests.test_multiargs_keywords_ignore_unhashable_true.<locals>.moreargst  r   r   rj   r   r   r?   r?   rA   rj   r   r   r   r   r   s         r
   .test_multiargs_keywords_ignore_unhashable_truez=DecoratorTests.test_multiargs_keywords_ignore_unhashable_trueq  sl    MM!U4MH		 h'	1aa95UQ')!-C!DEr   c           	          t               }| j                  d|d      }d } ||      }| j                  t              5   |ddddg d	
       d d d        y # 1 sw Y   y xY w)Nr   Fr   c                  
    | |fS r   r6   r   s     r
   r   zJDecoratorTests.test_multiargs_keywords_ignore_unhashable.<locals>.moreargs  r   r   rj   r   r   r?   r   r   )r   r   rU   	TypeError)r	   r   r   r   r   s        r
   )test_multiargs_keywords_ignore_unhashablez8DecoratorTests.test_multiargs_keywords_ignore_unhashable{  sX    MM!U5MI		  h'	y)aAi0 *))s   AA!c                 x   | j                  dd d      d        }t        j                         } |d      }t        j                         }| j                  |d       | j                  ||z
  dkD         t        j                         } |d      }t        j                         }| j                  |d       | j                  ||z
  dk         t        j                  d       t        j                         } |d      }t        j                         }| j                  |d       | j                  ||z
  dkD         y )Nr?   r   r   c                 6    t        j                  d       d| z  S )Nr   rA   )r   r   )params    r
   sleep_a_bitz/DecoratorTests.test_expiry.<locals>.sleep_a_bit  s    JJsOu9r   hello
hellohello)r   r   r   rD   r   )r	   r  startresult1stopresult2result3s          r
   test_expiryzDecoratorTests.test_expiry  s   	q$	,	 
-	
 		g&yy{+.us*+ 		g&yy{+.us*+

3		g&yy{+.us*+r   c                     d }ddl m} ddlm}  ||d      }  |d      |      }| j	                   |d      d       y )	Nc                     | |z   S r   r6   r   s     r
   addz(DecoratorTests.test_partial.<locals>.add  s    q5Lr   r   )partialr   r      rj   r_   )	functoolsr  r   r   r   )r	   r  r  r   add_fiver   s         r
   test_partialzDecoratorTests.test_partial  s<    	%(3?!IbM(+	1q)r   N)r3   r4   r5   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r6   r   r
   r   r     sI    343>3(&3	((F
1,:*r   r   c                       e Zd Zd Zy)r   c                 &    | j                  ||      S r   )__setitem__)r	   kvs      r
   r1   zDummyLRUCache.put  s    1%%r   N)r3   r4   r5   r1   r6   r   r
   r   r     s    &r   r   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)CacherMakerc                     ddl m} |S )Nr   )
CacheMaker)r   r  )r	   r  s     r
   r   zCacherMaker._getTargetClass  s    )r   c                 .     | j                         |i |S r   r   r   s      r
   r   zCacherMaker._makeOne  r   r   c                    | j                         }d}d} |j                  ||      t              }| j                  t	        |j
                  j                               |g       | j                  |j
                  |   j                  |        |d        |d       | j                  t        |j
                  |   j                        d       y )Nr   namer   r     rA   )
r   lrucache_adderr   listr   keysr=   rF   rJ   r	   makerr=   r  r   s        r
   test_named_cachezCacherMaker.test_named_cache  s    ;ENN4dN;FC	ell//12TF;d+00$7""U\\$/445a8r   c                     | j                         }d}d} |j                  ||      t              }| j                  t        |j                  ||       | j                  t
        |j                         y )Nr   r  r   )r   r"  r#  rU   KeyErrorrV   r&  s        r
   test_exceptionzCacherMaker.test_exception  s_    ;ENN4dN;FC	(ENNDtL*enn5r   c                 z   d}| j                  |      }t        d      D ]$  } |j                         t              } |d       & | j	                  t        |j                        d       |j                  j                         D ]C  }| j	                  |j                  |       | j	                  t        |j                        d       E |j                          |j                  j                         D ]C  }| j	                  |j                  |       | j	                  t        |j                        d       E y )Nr   r   r   r?   r   )r   rx   r"  r#  r   rF   r   valuesr=   rJ   r)   )r	   r=   r'  ir   r   s         r
   test_defaultvalue_and_clearz'CacherMaker.test_defaultvalue_and_clear  s    d+sA((0IbM  	U\\*S1ll))+Ffkk$/S-a0 , 	ll))+Ffkk$/S-a0 ,r   c                    | j                  d      } |j                  d      t              } |j                  d      t              }t        d      D ]  } ||      } ||      } | j	                  t        |j                  d   j                        d       | j	                  t        |j                  d   j                        d       |j                  d       | j	                  t        |j                  d   j                        d       | j	                  t        |j                  d   j                        d       y )Nr   r   r   r  r   r   r   	r   r"  r#  rx   r   rF   r   rJ   r)   )r	   r'  r   r   r.  _s         r
   test_clear_with_single_namez'CacherMaker.test_clear_with_single_name  s    b)(enn%n(0(enn%n(0sAAAAA  	U\\%0556;U\\%0556;EU\\%0556:U\\%0556;r   c                    | j                  d      } |j                  d      t              } |j                  d      t              } |j                  d      t              }t        d      D ]  } ||      } ||      } ||      } | j	                  t        |j                  d   j                        d       | j	                  t        |j                  d   j                        d       | j	                  t        |j                  d   j                        d       |j                  dd       | j	                  t        |j                  d   j                        d       | j	                  t        |j                  d   j                        d       | j	                  t        |j                  d   j                        d       y )	Nr   r   r   r1  r   r   r   r   r2  )r	   r'  r   r   r   r.  r3  s          r
   test_clear_with_multiple_namesz*CacherMaker.test_clear_with_multiple_names  sh   b)(enn%n(0(enn%n(0,G,V4sAAAAAaA  	U\\%0556;U\\%0556;U\\'2778"=E7#U\\%0556:U\\%0556;U\\'2778!<r   c                    ddl m} ddl m} | j                  d      }|j	                  d      }| j                  ||       | j                  |j                  |       | j                  |j                  |j                  d          y )Nr   r   r   r   r   test)	r   r   r   r   memoizedr   r   r    r   )r	   r   r   r'  memos        r
   test_memoizedzCacherMaker.test_memoized   se    (-b)~~f%dI.djj.9djj%,,v"67r   c                    d}d}d}| j                  ||      }t        d      D ]  }|sH|j                  |      } |t              }| j	                  |j
                  |   j                  |       nB|j                         } |t              }| j	                  |j                  j                  |        |d        | j	                  t        |j
                        d       |j
                  j                         D ]_  }| j	                  |j                  |       | j	                  |j                  |       | j	                  t        |j                        d       a |j                          |j
                  j                         D ]C  }| j	                  |j                  |       | j	                  t        |j                        d       E y )Nr   r  r   r   r1  r?   r   )r   rx   expiring_lrucacher#  r   r   r=   r   r   rF   r-  rJ   r)   )	r	   r=   r   r  r   r.  r   r   r   s	            r
   test_expiringzCacherMaker.test_expiring	  sm   dG<sA!333>	%f-	  %,,t"4"9"9$?!335	%f-	  !@!@'JbM  	#ell+c2ll))+Ffkk$/f44W=S-a0 ,
 	ll))+Ffkk$/S-a0 ,r   c                     d}d}d}d}| j                  ||      }|j                  |d      }| j                  |j                  j                  |       y )Nr   r  r  r   )r  r   )r   r=  r   r   r   )r	   r=   maker_timeoutr   r  r   r   s          r
   test_expiring_w_timeoutz#CacherMaker.test_expiring_w_timeout$  sW    dMB++r+B	88'Br   N)r3   r4   r5   r   r   r(  r+  r/  r4  r6  r;  r>  rA  r6   r   r
   r  r    s5    3	961"<="816Cr   r  c                     | dz   S r   r6   )xs    r
   r#  r#  -  s    r6Mr   )ry   r   unittestxrangerx   	NameErrorTestCaser   r8   r   r   dictr   r  r#  r6   r   r
   <module>rI     s      	E
/5(++ /5dc.H%% c.L	x.M x.vN*X&& N*b&D &vC(## vCpM  		s   A> >BB