;
Λβ"Ic            
   @   sΒ   d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z d a	 Gd   d e j
  Z Gd   d e j
  Z Gd   d	 e j
  Z d d
  Z e d k o e   n d S(   uΥ   Generic thread tests.

Meant to be used by dummy_thread and thread.  To allow for different modules
to be used, test_main() can be called with the module to use as the thread
implementation as its sole argument.

i    N(   u   supportc             B   se   |  Ee  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
 S(   u   Test lock objects.c             C   s   t  j   |  _ d  S(   N(   u   _threadu   allocate_locku   lock(   u   self(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   setUp   s    c             C   s   |  j  |  j j   d  d  S(   Nu(   Lock object is not initialized unlocked.(   u
   failUnlessu   locku   locked(   u   self(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   test_initlock   s    c             C   s8   |  j  j   |  j  j   |  j |  j  j   d  d  S(   Nu%   Lock object did not release properly.(   u   locku   acquireu   releaseu
   failUnlessu   locked(   u   self(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   test_release   s    c             C   s   |  j  t j |  j j  d  S(   N(   u   failUnlessRaisesu   _threadu   erroru   locku   release(   u   self(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   test_improper_release%   s    c             C   s    |  j  |  j j d  d  d  S(   Ni    u)   Conditional acquiring of the lock failed.(   u
   failUnlessu   locku   acquire(   u   self(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   test_cond_acquire_success)   s    c             C   s1   |  j  j d  |  j |  j  j d  d  d  S(   Ni    u=   Conditional acquiring of a locked lock incorrectly succeeded.(   u   locku   acquireu
   failUnless(   u   self(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   test_cond_acquire_fail.   s    c             C   s*   |  j  j   |  j |  j  j   d  d  S(   Nu   Uncondional locking failed.(   u   locku   acquireu
   failUnlessu   locked(   u   self(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   test_uncond_acquire_success5   s    c             C   sB   |  j  |  j j d  d k d  |  j  |  j j   d k  d  S(   Ni   u*   Unconditional locking did not return True.T(   u
   failUnlessu   locku   acquireu   True(   u   self(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   test_uncond_acquire_return_val;   s    c             C   sΉ   d   } |  j  j   t t j    } t j | |  j  t f  t j o t	   t	 d t  n |  j  j   t t j    } t j o t	 d  n |  j
 | | t k d  d  S(   Nc             S   s   t  j |  |  j   d S(   u:   Hold on to lock for a set amount of time before unlocking.N(   u   timeu   sleepu   release(   u	   to_unlocku   delay(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   delay_unlockC   s    u@   *** Waiting for thread to release the lock (approx. %s sec.) ***u   doneu+   Blocking by unconditional acquiring failed.(   u   locku   acquireu   intu   timeu   _threadu   start_new_threadu   DELAYu   supportu   verboseu   printu
   failUnless(   u   selfu   delay_unlocku
   start_timeu   end_time(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   test_uncond_acquire_blockingA   s    	

N(   u   __name__u
   __module__u   __doc__u   setUpu   test_initlocku   test_releaseu   test_improper_releaseu   test_cond_acquire_successu   test_cond_acquire_failu   test_uncond_acquire_successu   test_uncond_acquire_return_valu   test_uncond_acquire_blocking(   u
   __locals__(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu	   LockTests   s   
								u	   LockTestsc             B   sA   |  Ee  Z d  Z d   Z d   Z d   Z d   Z d   Z d S(   u   Miscellaneous tests.c             C   s   |  j  t t j  d  S(   N(   u   failUnlessRaisesu
   SystemExitu   _threadu   exit(   u   self(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu	   test_exitY   s    c             C   s?   |  j  t t j   t  d  |  j  t j   d k d  d  S(   Nu*   _thread.get_ident() returned a non-integeri    u   _thread.get_ident() returned 0(   u
   failUnlessu
   isinstanceu   _threadu	   get_identu   int(   u   self(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu
   test_ident]   s    c             C   s&   |  j  t t j   t j  d  d  S(   NuR   _thread.LockType is not an instance of what is returned by _thread.allocate_lock()(   u
   failUnlessu
   isinstanceu   _threadu   allocate_locku   LockType(   u   self(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   test_LockTyped   s    c             C   s)   d   } |  j  t t j | t    d  S(   Nc               S   s   t  j   d  S(   N(   u   _threadu   interrupt_main(    (    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   call_interruptm   s    (   u   failUnlessRaisesu   KeyboardInterruptu   _threadu   start_new_threadu   tuple(   u   selfu   call_interrupt(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   test_interrupt_mainj   s    	c             C   s   |  j  t t j  d  S(   N(   u   failUnlessRaisesu   KeyboardInterruptu   _threadu   interrupt_main(   u   self(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   test_interrupt_in_mainr   s    N(   u   __name__u
   __module__u   __doc__u	   test_exitu
   test_identu   test_LockTypeu   test_interrupt_mainu   test_interrupt_in_main(   u
   __locals__(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu	   MiscTestsV   s   
				u	   MiscTestsc             B   s&   |  Ee  Z d  Z d   Z d   Z d S(   u   Test thread creation.c             C   s  d
 d
 d  } t j d  } t j | | d d f  | j   } |  j | d o | d d  t j | t   i | d 6d d 6d d 6 | j   } |  j | d o | d d  t j | | d f i d d 6 | j   } |  j | d o | d d	  d  S(   Nc             S   s   |  j  | | f  d S(   u<   Use to test _thread.start_new_thread() passes args properly.N(   u   put(   u   queueu   arg1u   arg2(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu
   arg_tester|   s    i   i    u7   Argument passing for thread creation using tuple failedu   queueu   arg1u   arg2u8   Argument passing for thread creation using kwargs faileduG   Argument passing for thread creation using both tuple and kwargs failedFT(	   u   Falseu   queueu   Queueu   _threadu   start_new_threadu   Trueu   getu
   failUnlessu   tuple(   u   selfu
   arg_testeru   testing_queueu   result(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   test_arg_passingz   s     c             C   sι   d   } d } t  j |  } t j o t   t d t | f  n xP t |  D]B } t o t t j   d  } n d } t	 j
 | | | f  qT Wt j t  t j o t d  n |  j | j   | k d | t f  d  S(   Nc             S   s$   t  j |  |  j t j    d S(   u@   Wait for ``delay`` seconds and then put something into ``queue``N(   u   timeu   sleepu   putu   _threadu	   get_ident(   u   queueu   delay(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu
   queue_mark   s    i   uJ   *** Testing multiple thread creation (will take approx. %s to %s sec.) ***i   i    u   doneu2   Not all %s threads executed properly after %s sec.(   u   queueu   Queueu   supportu   verboseu   printu   DELAYu   rangeu   roundu   randomu   _threadu   start_new_threadu   timeu   sleepu
   failUnlessu   qsize(   u   selfu
   queue_marku   thread_countu   testing_queueu   countu   local_delay(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   test_multi_creation   s(    	
 	
N(   u   __name__u
   __module__u   __doc__u   test_arg_passingu   test_multi_creation(   u
   __locals__(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   ThreadTestsw   s   
	u   ThreadTestsc             C   sQ   |  o |  a  d a n t j o t   t d t   n t j t t t  d  S(   Ni   u"   *** Using %s as _thread module ***(	   u   _threadu   DELAYu   supportu   verboseu   printu   run_unittestu	   LockTestsu	   MiscTestsu   ThreadTests(   u   imported_module(    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu	   test_main«   s    

u   __main__(   u   __doc__u   _dummy_threadu   _threadu   timeu   queueu   randomu   unittestu   testu   supportu   DELAYu   TestCaseu	   LockTestsu	   MiscTestsu   ThreadTestsu   Noneu	   test_mainu   __name__(    (    (    u3   /mit/python/lib/python3.0/test/test_dummy_thread.pyu   <module>   s   D!4
