Ñò
‘à"Ic        	   @   sL  d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k Z d  d k l Z d Z d e i f d „  ƒ  YZ	 d d d „  ƒ  YZ
 d e i e
 f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e  i  f d „  ƒ  YZ d e i e
 f d „  ƒ  YZ d „  Z e d j o e ƒ  n d S(   iÿÿÿÿN(   t   test_supporti   t   _TriggerThreadc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s5   | |  _  | |  _ t i ƒ  |  _ t i i |  ƒ d  S(   N(   t   fnt   argst	   threadingt   Eventt   startedEventt   Threadt   __init__(   t   selfR   R   (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyR      s    		c         C   s.   t  i d ƒ |  i i ƒ  |  i |  i Œ  d  S(   Ngš™™™™™¹?(   t   timet   sleepR   t   setR   R   (   R	   (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyt   run   s    	(   t   __name__t
   __module__R   R   (    (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyR      s   	t   BlockingTestMixinc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s’   t  | | ƒ |  _ |  i i ƒ  | | Œ  |  _ |  i i i ƒ  p |  i d | ƒ n |  i i d ƒ |  i i ƒ  o |  i d | ƒ n |  i S(   Ns,   blocking function '%r' appeared not to blocki
   s,   trigger function '%r' appeared to not return(	   R   t   tt   startt   resultR   t   is_sett   failt   joint   is_alive(   R	   t
   block_funct
   block_argst   trigger_funct   trigger_args(    (    s,   /mit/python/lib/python2.6/test/test_queue.pyt   do_blocking_test/   s    		c      
   C   s¼   t  | | ƒ |  _ |  i i ƒ  z< y | | Œ  Wn | j
 o
 ‚  n X|  i d | ƒ Wd  |  i i d ƒ |  i i ƒ  o |  i d | ƒ n |  i i i ƒ  p |  i d ƒ n Xd  S(   Ns   expected exception of kind %ri
   s,   trigger function '%r' appeared to not returns(   trigger thread ended but event never set(   R   R   R   R   R   R   R   R   (   R	   R   R   R   R   t   expected_exception_class(    (    s,   /mit/python/lib/python2.6/test/test_queue.pyt   do_exceptional_blocking_test>   s    		(   R   R   R   R   (    (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyR   -   s   	t   BaseQueueTestc           B   sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   d |  _  t i ƒ  |  _ d  S(   Ni    (   t   cumR   t   Lockt   cumlock(   R	   (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyt   setUpT   s    	c         C   sÖ  | i  ƒ  p t d ‚ n | i d ƒ | i d ƒ | i d ƒ t d d d d g d d d d g d d d d g ƒ } | i ƒ  | i ƒ  | i ƒ  g } |  i | | | i i d ƒ x< t t	 d	 ƒ D]* } | i | ƒ |  i
 | i  ƒ  d
 ƒ qÆ W|  i
 | i ƒ  d ƒ | i d ƒ |  i
 | i ƒ  d ƒ y$ | i d d d ƒ|  i d ƒ Wn t i j
 o n Xy$ | i d d d ƒ|  i d ƒ Wn t i j
 o n X|  i | i d | i d ƒ |  i | i d t d f | i d ƒ x t t	 ƒ D] } | i ƒ  qöW|  i
 | i  ƒ  d ƒ y! | i d d ƒ |  i d ƒ Wn t i j
 o n Xy! | i d d ƒ |  i d ƒ Wn t i j
 o n X|  i | i d | i d ƒ |  i | i t d f | i d ƒ d  S(    Ns&   Call this function with an empty queueio   iM  iÞ   t   Queuet	   LifoQueuet   PriorityQueues&   Didn't seem to queue the correct data!i   s   Queue should not be emptys   Queue should not be fullt   lasts   Queue should be fullt   fullt   blocki    s(   Didn't appear to block with a full queuet   timeoutg{®Gáz„?s+   Didn't appear to time-out with a full queuei
   s   Queue should be emptys*   Didn't appear to block with an empty queues-   Didn't appear to time-out with an empty queuet   empty(   s   full(    (    (    (   s   empty(   s   empty(   R+   t   RuntimeErrort   putt   dictt   gett   assertEqualst	   __class__R   t   ranget
   QUEUE_SIZEt   assert_R(   R   R$   t   FullR   t   Truet   Empty(   R	   t   qt   target_ordert   actual_ordert   i(    (    s,   /mit/python/lib/python2.6/test/test_queue.pyt   simple_queue_testX   s\    ! % c         C   so   xh t  o` | i ƒ  } | d  j o | i ƒ  d  S|  i i i ƒ  z |  i | 7_ Wd  QX| i ƒ  q Wd  S(   N(   R6   R/   t   Nonet	   task_doneR"   t   __exit__t	   __enter__R    (   R	   R8   t   x(    (    s,   /mit/python/lib/python2.6/test/test_queue.pyt   worker‹   s     
c      	   C   s¸   d |  _  x0 d D]( } t i d |  i d | f ƒ i ƒ  q Wx! t d ƒ D] } | i | ƒ qI W| i ƒ  |  i |  i  t	 t
 d ƒ ƒ d ƒ x d D] } | i d  ƒ q“ W| i ƒ  d  S(	   Ni    i   t   targetR   id   s0   q.join() did not block until all tasks were done(   i    i   (   i    i   (   R    R   R   RB   R   t   xrangeR-   R   R0   t   sumR2   R=   (   R	   R8   R;   (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyt   queue_join_test•   s    	 & 
 c         C   sA   |  i  ƒ  } y | i ƒ  Wn t j
 o n X|  i d ƒ d  S(   Ns(   Did not detect task count going negative(   t	   type2testR>   t
   ValueErrorR   (   R	   R8   (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyt   test_queue_task_done¢   s    c         C   s[   |  i  ƒ  } |  i | ƒ |  i | ƒ y | i ƒ  Wn t j
 o n X|  i d ƒ d  S(   Ns(   Did not detect task count going negative(   RG   RF   R>   RH   R   (   R	   R8   (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyt   test_queue_join¬   s    c         C   s-   |  i  t ƒ } |  i | ƒ |  i | ƒ d  S(   N(   RG   R3   R<   (   R	   R8   (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyt   test_simple_queue¹   s    (	   R   R   R#   R<   RB   RF   RI   RJ   RK   (    (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyR   S   s   		3	
		
	t	   QueueTestc           B   s   e  Z e i Z RS(    (   R   R   R$   RG   (    (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyRL   Á   s   t   LifoQueueTestc           B   s   e  Z e i Z RS(    (   R   R   R$   R%   RG   (    (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyRM   Ä   s   t   PriorityQueueTestc           B   s   e  Z e i Z RS(    (   R   R   R$   R&   RG   (    (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyRN   Ç   s   t   FailingQueueExceptionc           B   s   e  Z RS(    (   R   R   (    (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyRO   Í   s   t   FailingQueuec           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         G   s)   t  |  _ t  |  _ t i i |  | Œ d  S(   N(   t   Falset   fail_next_putt   fail_next_getR$   R   (   R	   R   (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyR   Ñ   s    		c         C   s3   |  i  o t |  _  t d ‚ n t i i |  | ƒ S(   Ns   You Lose(   RR   RQ   RO   R$   t   _put(   R	   t   item(    (    s,   /mit/python/lib/python2.6/test/test_queue.pyRT   Õ   s    
	c         C   s0   |  i  o t |  _  t d ‚ n t i i |  ƒ S(   Ns   You Lose(   RS   RQ   RO   R$   t   _get(   R	   (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyRV   Ú   s    
	(   R   R   R   RT   RV   (    (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyRP   Ð   s   		t   FailingQueueTestc           B   s   e  Z d  „  Z d „  Z RS(   c         C   sµ  | i  ƒ  p t d ‚ n x% t t d ƒ D] } | i | ƒ q+ Wt | _ y$ | i d d d ƒ|  i d ƒ Wn t j
 o n Xt | _ y$ | i d d d ƒ|  i d ƒ Wn t j
 o n X| i d	 ƒ |  i	 | i
 ƒ  d
 ƒ t | _ y- |  i | i d | i d ƒ |  i d ƒ Wn t j
 o n X| i d	 ƒ t | _ y9 |  i | i d t d f | i d t ƒ |  i d ƒ Wn t j
 o n X| i d	 ƒ |  i	 | i
 ƒ  d
 ƒ | i ƒ  |  i	 | i
 ƒ  d ƒ | i d	 ƒ |  i	 | i
 ƒ  d
 ƒ |  i | i d | i d ƒ x t t ƒ D] } | i ƒ  q,W|  i	 | i  ƒ  d ƒ | i d ƒ t | _ y | i ƒ  |  i d ƒ Wn t j
 o n X|  i	 | i  ƒ  d ƒ t | _ y! | i d d ƒ |  i d ƒ Wn t j
 o n X|  i	 | i  ƒ  d ƒ | i ƒ  |  i	 | i  ƒ  d ƒ t | _ y0 |  i | i d | i d t ƒ |  i d ƒ Wn t j
 o n X|  i	 | i  ƒ  d ƒ | i ƒ  |  i	 | i  ƒ  d ƒ d  S(   Ns&   Call this function with an empty queuei   t   oopsR)   i    s)   The queue didn't fail when it should haveR*   gš™™™™™¹?R'   s   Queue should be fullR(   i
   s   Queue should not be fulls   Queue should be emptyt   firsts   Queue should not be emptyR+   (   s   full(    (    (   s   full(    (    (   s   empty(   R+   R,   R2   R3   R-   R6   RR   R   RO   R4   R(   R   R/   R   RS   (   R	   R8   R;   (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyt   failing_queue_testâ   sŽ     				!
 	
	
	
c         C   s*   t  t ƒ } |  i | ƒ |  i | ƒ d  S(   N(   RP   R3   RZ   (   R	   R8   (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyt   test_failing_queue3  s    (   R   R   RZ   R[   (    (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyRW   à   s   	Qc           C   s   t  i t t t t ƒ d  S(   N(   R    t   run_unittestRL   RM   RN   RW   (    (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyt	   test_main;  s    t   __main__(    (   R$   t   sysR   R
   t   unittestt   testR    R3   R   R   R   t   TestCaseR   RL   RM   RN   t	   ExceptionRO   RP   RW   R]   R   (    (    (    s,   /mit/python/lib/python2.6/test/test_queue.pyt   <module>   s$    &n[	