
    i9                        d dl Z d dlZd dlZd dlZd dlZej
                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                   ej"                  ej$                  ej&                  fZ e j*                  e      Zej1                  ej
                  dej2                  iej                  dej2                  iej                  i ej                  ddiej                  ddii       g dej4                  fdej6                  fdej
                  fdej                  fd	ej                  fd
ej                  fdej                  fdej                  fdej                  fdej                  fdej                  fdej                  fdej                  fdej                   fdej"                  fdej$                  fdej8                  fdej:                  fdej&                  fddej<                  fdej>                  fdej@                  fdejB                  fdejD                  fdejF                  fdejH                  fd ejJ                  fd!ejL                  fd"ejN                  fd#ejP                  fd$ejR                  fd%ejT                  fd&ejV                  fd'ejX                  fd(ejZ                  fd)ej\                  fd*ej^                  fd+ej`                  fZ1 G d, d-ejd                        Z3d.Z4 G d/ d0ejd                        Z5 G d1 d2ejd                        Z6 G d3 d4ejd                        Z7 G d5 d6ejd                        Z8e9d7k(  r ejt                          yy)8    Nkeybutton   NoEventActiveEventKeyDownKeyUpMouseMotionMouseButtonDownMouseButtonUpJoyAxisMotionJoyBallMotionJoyHatMotionJoyButtonDownJoyButtonUpVideoResizeVideoExposeQuit
SysWMEventMidiInMidiOut	UserEvent)Unknown  FingerMotion
FingerDownFingerUpMultiGesture
MouseWheel	TextInputTextEditingControllerAxisMotionControllerButtonDownControllerButtonUpControllerDeviceAddedControllerDeviceRemovedControllerDeviceMappedDropFileAudioDeviceAddedAudioDeviceRemovedDropText	DropBeginDropCompletec                   $    e Zd Zd Zd Zd Zd Zy)EventTypeTestc                 "   t         j                  j                  t         j                  dd      }| j	                  |j
                  d       | j	                  |j                  d       | j	                  |j                  t         j                         | j                  |j                  |j                         d|_        | j	                  |j
                  d       d|_        | j	                  |j                  d       | j                  t        t        |dd       | j                  t        t        |dd	       t        |      }d
}|D ]  }| j!                  ||        | j                  t"        t         j                  j                  dd       y	)z&Ensure an Event object can be created.r   1)	some_attr
other_attr      typer   dictN)r6   r7   __dict__r2   r3   new_attr
   d   r6   )pygameeventEvent	USEREVENTassertEqualr2   r3   r6   assertIsr7   r8   r9   assertRaisesAttributeErrorsetattrdirassertIn
ValueError)selfedattrsattrs        a/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pygame/tests/event_test.py
test_EventzEventTypeTest.test_EventU   s/   LLv//1Ma(s+ 	!1!12affajj)b)
R(.'1fa@.'1fdC FS 	#DMM$"	# 	*fll&8&8"3G    c                     	 t        t        j                  j                  t        d   d             y # t
        $ r | j                  d       Y y w xY w)Nr      íaz5Event object raised exception for non-ascii character)strr=   r>   r?   EVENT_TYPESUnicodeEncodeErrorfailrI   s    rN   test_as_strzEventTypeTest.test_as_strw   sF    	O"";q>V"<=! 	OIIMN	Os   14 AAc                 ^   | j                  t        j                  j                  t        j                               t        j
                  t        j                  t        j                  t        j                  fD ]0  }| j                  t        j                  j                  |             2 y N)
assertFalser=   r>   r?   NOEVENTMOUSEBUTTONDOWNACTIVEEVENTWINDOWLEAVEUSEREVENT_DROPFILE
assertTrue)rI   
event_types     rN   test_event_boolzEventTypeTest.test_event_bool   su    ++FNN;<""%%	
 	<J OOFLL..z:;	<rP   c                    t         j                  j                  t        d   d      }t         j                  j                  t        d   d      }t         j                  j                  t        d   d      }t         j                  j                  t        d   d      }| j	                  ||       | j	                  ||       | j                  ||       | j                  ||       | j	                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       y)z-Ensure that events can be compared correctly.r   r   rS      N)r=   r>   r?   rV   rA   assertNotEqual)rI   rT   bcrK   s        rN   test_event_equalityz!EventTypeTest.test_event_equality   sN   LL{1~3LL{1~3LL{1~3LL{1~3 	AAAq!Aq! 	AAq!Aq! 	Aq!Aq!Aq! 	Aq!Aq!Aq!rP   N)__name__
__module____qualname__rO   rZ   re   rk    rP   rN   r/   r/   T   s     HDO<"rP   r/   z
This test is dependent on timing. The event queue is cleared in preparation for
tests. There is a small window where outside events from the OS may have effected
results. Try running the test again.
c                   *    e Zd Zd Zd Zd Zd Zd Zy)EventModuleArgsTestc                 |    t         j                  j                          t         j                  j	                          y r\   r=   displayinitr>   clearrY   s    rN   setUpzEventModuleArgsTest.setUp   "    rP   c                 @    t         j                  j                          y r\   )r=   rt   quitrY   s    rN   tearDownzEventModuleArgsTest.tearDown   s    rP   c                 r   t         j                  j                          t         j                  j                  d        t         j                  j                  d d       t         j                  j                  d       t         j                  j                  d       t         j                  j                  d        t         j                  j                  t         j                  t         j                  g       t         j                  j                  t         j
                  d       | j                  t        t         j                  j                  d       | j                  t        t         j                  j                  d       | j                  t        t         j                  j                  d       y )	NTFpump	eventtyper   r~   i   y      ?       @foo)	r=   r>   getKEYUPKEYDOWNr@   rC   rH   	TypeErrorrY   s    rN   test_getzEventModuleArgsTest.test_get   s   t$e$d#4(FLL&..#AB6#3#3%@ 	*fll&6&6
C)V\\%5%5v>)V\\%5%5u=rP   c                    t         j                  j                          t         j                  j                  d        t         j                  j                  d d       t         j                  j                  d       t         j                  j                  d       t         j                  j                  d        t         j                  j                  t         j                  t         j                  g       t         j                  j                  t         j
                  d       | j                  t        t         j                  j                  d       | j                  t        t         j                  j                  g d       y )NTFr}   r   r   i)rT   ri   rj   )
r=   r>   rv   r   r   r@   rC   rH   r   r   rY   s    rN   
test_clearzEventModuleArgsTest.test_clear   s    4 4&&%T*fllFNN%CDV%5%5EB 	*fll&8&8+F)V\\%5%5GrP   c                    t         j                  j                          t         j                  j                  d        t         j                  j                  d d       t         j                  j                  d       t         j                  j                  d       t         j                  j                  d        t         j                  j                  t         j                  t         j                  g       t         j                  j                  t         j
                  d        G d d      }| j                  t        t         j                  j                  d       | j                  t        t         j                  j                  d	g       | j                  t        t         j                  j                   |              y )
NTFr}   r   r   c                       e Zd Zy)*EventModuleArgsTest.test_peek.<locals>.FooN)rl   rm   rn   ro   rP   rN   Foor      s    rP   r   i)	r=   r>   peekr   r   r@   rC   rH   r   )rI   r   s     rN   	test_peekzEventModuleArgsTest.test_peek   s   $$%u%t$D)V\\6>>$BCF$4$45A	 	 	*fll&7&7<*fll&7&7#?)V\\%6%6>rP   N)rl   rm   rn   rw   r{   r   r   r   ro   rP   rN   rq   rq      s    > H?rP   rq   c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)EventCustomTypeTestzrThose tests are special in that they need the _custom_event counter to
    be reset before and/or after being run.c                     t        j                          t        j                          t         j                  j                          y r\   )r=   rz   ru   rt   rY   s    rN   rw   zEventCustomTypeTest.setUp   s$    rP   c                 ,    t        j                          y r\   )r=   rz   rY   s    rN   r{   zEventCustomTypeTest.tearDown   s    rP   c                 R   | j                  t        j                  j                         t        j                  dz          t        j                  j                         }t        j                  j                         }| j                  ||dz
         t        j                  j                  |      }t        j                  j                  |       t        j                  j                  |      }| j                  t        |      d       | j                  |d   j                  |       y )Nr   r   )
rA   r=   r>   custom_typer@   r?   postr   lenr6   )rI   atypeatype2evqueues        rN   test_custom_typez$EventCustomTypeTest.test_custom_type   s    113V5E5E5IJ((*))+
+\\&"  'UQ'q.rP   c                    d}t         j                  j                         dz   }t        |t         j                        D ]   }t         j                  j                         }" | j                  |t         j                  dz
         | j                  t         j                        5  t         j                  j                          ddd       y# 1 sw Y   yxY w)zEnsure custom_type() raises error when no more custom types.

        The last allowed custom type number should be (pygame.NUMEVENTS - 1).
        r   r   N)r=   r>   r   range	NUMEVENTSrA   rC   error)rI   laststart_s       rN   test_custom_type__end_boundaryz2EventCustomTypeTest.test_custom_type__end_boundary  s    
 ((*Q.uf../ 	.A<<++-D	. 	v//!34v||, 	'LL$$&	' 	' 	's   #CCc                    t         j                  j                         }| j                  |t         j                  j                         dz
         t        j                          t        j
                          t         j                  j                          | j                  |t         j                  j                                y)z2Ensure custom events get 'deregistered' by quit().r   N)r=   r>   r   rA   rz   ru   rt   )rI   befores     rN   test_custom_type__resetz+EventCustomTypeTest.test_custom_type__reset  su    ))+!9!9!;a!?@!9!9!;<rP   N)	rl   rm   rn   __doc__rw   r{   r   r   r   ro   rP   rN   r   r      s     /
/'=rP   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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 d Z!d  Z"d! Z#d" Z$ e%jL                  d#      d$        Z'd% Z(d& Z) e%jL                  d#      d'        Z* e%jV                  e,jZ                  j]                  d(      d)k(  d*       e%jV                   e/j`                         d+k  d,      d-               Z1d. Z2y/)0EventModuleTestc                 (     | j                   |i | y r\   )assertCountEqual)rI   argskwargss      rN   _assertCountEqualz!EventModuleTest._assertCountEqual  s     	t.v.rP   c                 d   |dd }|D ]  }|D ]F  }|j                   D ]#  }|j                   |   |j                   |   k7  s# 4 |j                  |        M t        dt        |      z   dz   t        |      z   dz   t        |      z          t	        |      dkD  rt        dt        |      z         y)zFind events like expected events, raise on unexpected or missing,
        ignore additional event properties if expected properties are present.Nz	Expected z among remaining events z out of r   zUnexpected Events: )r8   removeAssertionErrorrU   r   )rI   expectedgot
items_leftexpected_elementitemr   s          rN   _assertExpectedEventsz%EventModuleTest._assertExpectedEvents!  s     V
 ( 	" +44 C}}S)-=-F-Fs-KK
 %%d+ %*+,01 *o& !	!
 #h 	$ z?Q !6Z!HII rP   c                 |    t         j                  j                          t         j                  j	                          y r\   rs   rY   s    rN   rw   zEventModuleTest.setUp=  rx   rP   c                 |    t         j                  j                          t         j                  j	                          y r\   r=   r>   rv   rt   rz   rY   s    rN   r{   zEventModuleTest.tearDownA  "    rP   c                 H    d}| j                  t        j                  |       y)zCEnsures NUMEVENTS does not exceed the maximum SDL number of events.r   N)assertLessEqualr=   r   )rI   MAX_SDL_EVENTSs     rN   test_event_numeventsz$EventModuleTest.test_event_numeventsE  s      V--~>rP   c                     t         j                  j                  t         j                  d      }| j	                  |j
                  d       y )Nattr1r   )r=   r>   r?   r@   rA   r   )rI   e1s     rN   test_event_attributez$EventModuleTest.test_event_attributeL  s5    \\ 0 0@7+rP   c                    t         d   }t         d   }t        j                  j                  |       | j	                  t        j                  j                  |             | j                  t        j                  j                  |             t        j                  j                  t        j                  j                  |fi t        |         }| j                  |       t        j                  j                  t        j                  j                  |fi t        |         }| j	                  |       t        j                  j                         }|D cg c]  }|j                  |k(  s| }}|D cg c]  }|j                  |k7  s|j                    }}| j                  |g        | j	                  ||v        yc c}w c c}w )z,Ensure events can be blocked from the queue.r   r   N)rV   r=   r>   set_blockedrc   get_blockedr]   r   r?   EVENT_TEST_PARAMSr   r6   rA   )rI   r>   unblocked_eventpostedretrJ   should_be_blockedshould_be_allowed_typess           rN   test_set_blockedz EventModuleTest.test_set_blockedP  s^   A%a.  '007811/BC""LLuA(9%(@A
 	  ""LLU2CO2TU
 	ll (+?1qvvQ??36"Ja!&&E/166"J"J*B/+BBC	 @"Js   G/G9G	G	c                    t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  g}t         j                  j                  |       |D ]0  }| j                  t         j                  j                  |             2 y)z0Ensure a sequence of event types can be blocked.N)r=   r   r   MOUSEMOTIONr_   MOUSEBUTTONUPWINDOWFOCUSLOSTr@   r>   r   rc   r   rI   event_typesetypes      rN    test_set_blocked__event_sequencez0EventModuleTest.test_set_blocked__event_sequencek  s     NNLL""  ""
 	  -  	=EOOFLL44U;<	=rP   c                     t         j                  j                  d       t        D ]0  }| j	                  t         j                  j                  |             2 y)z+Ensure all events can be unblocked at once.N)r=   r>   r   rV   rc   r   rI   rJ   s     rN   test_set_blocked_allz$EventModuleTest.test_set_blocked_all|  s>      & 	9AOOFLL44Q78	9rP   c           
         t         j                  j                  t         j                  d      }t         j                  j	                  |       t         j                  j                         }| j                  |j                  |j                  t               t        dd      D ]  }t         j                  j	                  t        j                  j                  t        |   fi t        t        |             | j                  t         j                  j                         j                  t        |   t                y)z)Ensure events can be posted to the queue.r   r   r      N)r=   r>   r?   r@   r   pollrA   r   race_condition_notificationr   rV   r   r6   )rI   r   posted_eventis       rN   test_post__and_pollz#EventModuleTest.test_post__and_poll  s    \\ 0 0@"||((*<#5#57RS q" 	ALL"";q>W5F{ST~5VW !!#((+a.:U	rP   c                    t         j                  j                         }t         j                  j	                  t         j
                  t         j                        t         j                  j	                  t         j
                  t         j                  |      t         j                  j	                  t         j
                  t         j                  d      t         j                  j	                  t         j
                  t         j                  d      t         j                  j	                  t         j
                  t         j                  dd      t         j                  j	                  t         j
                  t         j                  |d      g}|D ]V  }t         j                  j                  |       t         j                  j                         }| j                  ||t               X y)	z1Ensure keydown events can be posted to the queue.r   )r   modg)r   unicodeN)r   r   windowrJ   )r   r   r   )r=   r   get_modsr>   r?   r   K_pK_yK_gK_aK_mK_er   r   rA   r   )rI   activemodkeyseventsrJ   r   s        rN   test_post_and_get_keydownz)EventModuleTest.test_post_and_get_keydown  s5   

++- LLv~~6::>LLv~~6::=QLLv~~6::sKLLv~~6::tLLLv~~6::4PTULLFJJM3  	
  	KALLa !<<,,.LQ.IJ	KrP   c                    t         j                  j                  t         j                  j                  t         j                  ddit        t        d                         t         j                  j                         }| j                  |j                  t         j                         | j                  |j                  d       | j                  |j                  t        t        d                   y )NrT      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar;   )test)r=   r>   r   r?   r@   listr   r   rA   r6   rT   r   r   s     rN   test_post_large_user_eventz*EventModuleTest.test_post_large_user_event  s    LL  3
"3$uSz:J  	

 LL!1!12j)eCj!12rP   c                 (   t         j                  j                  t         j                         | j	                  t         j                  j                  t         j                  j                  t         j                                     | j	                  t         j                  j                                t         j                  j                  t         j                         | j                  t         j                  j                  t         j                  j                  t         j                                     | j                  t         j                  j                         t         j                  j                  t         j                               y)zr
        Test blocked events are not posted. Also test whether post()
        returns a boolean correctly
        N)r=   r>   r   r@   r]   r   r?   r   set_allowedrc   rA   rY   s    rN   test_post_blockedz!EventModuleTest.test_post_blocked  s    
 	  !1!12**6<<+=+=f>N>N+OPQ**,-  !1!12))&,,*<*<V=M=M*NOP**,fll.@.@AQAQ.RSrP   c                 p   d}t        |      D ]L  }t        j                  j                  t        j                  j	                  t        j
                               N t        j                  j                         }| j                  t        |      |       | j                  t        d |D                     y)z3Ensure get() retrieves all the events on the queue.r:   c              3   V   K   | ]!  }|j                   t        j                  k(   # y wr\   )r6   r=   r@   ).0rJ   s     rN   	<genexpr>z+EventModuleTest.test_get.<locals>.<genexpr>  s     F1AFFf&6&66Fs   ')N)r   r=   r>   r   r?   r@   r   rA   r   rc   all)rI   	event_cntr   r   s       rN   r   zEventModuleTest.test_get  s    	y! 	DALLfll001A1ABC	D   "UY/FFFGrP   c                    t         j                  j                  t         j                        }t         j                  j	                  |       t         j                  j                  t         j                        }| j                  t        |      d       | j                  |d   j                  t         j                         d}t        |      D ]!  }t         j                  j	                  |       # t         j                  j                  t         j                  g      }| j                  t        |      |       |D ]  }| j                  ||        y )Nr   r   r:   )
r=   r>   r?   r@   r   r   rA   r   r6   r   )rI   r   r   
TESTEVENTSr   qr>   s          rN   test_get_typezEventModuleTest.test_get_type  s    \\ 0 01"  !1!12UQ'q(8(89
z" 	"ALLb!	"LLf../0Q, 	(EUB'	(rP   c                     | j                  t        j                  t        j                  j                  t        j
                  dt        j                         y )NF)rC   r=   r   r>   r   r   r   rY   s    rN   test_get_exclude_throwz&EventModuleTest.test_get_exclude_throw  s1    LL&,,**FNNE6<<	
rP   c                    t         j                  j                  t         j                  j                  t         j                               t         j                  j                  t         j                  j                  t         j
                               t         j                  j                  t         j
                        }| j                  t        |      d       | j                  |d   j                  t         j                         t         j                  j                  t         j                  j                  t         j                               t         j                  j                  t         j                  j                  t         j                               t         j                  j                  t         j
                  t         j                  f      }| j                  t        |      d       | j                  |d   j                  t         j                         t         j                  j                         }| j                  t        |      d       y )N)excluder   r   rg   )r=   r>   r   r?   r@   r   r   rA   r   r6   r   )rI   r   s     rN   test_get_excludez EventModuleTest.test_get_exclude  sc   &,,,,V-=-=>?&,,,,V^^<=   8UQ'q(8(89&,,,,V\\:;&,,,,V-=-=>?  &..&,,)G HUQ'q(8(89  "UQ'rP   c                    g }t         j                  j                          t         j                  j                         }| j	                  ||       t
        D ]3  }t         j                  j                  |      }| j	                  ||       5 t         j                  j                  t
              }| j	                  ||       y)z/Ensure get() works correctly on an empty queue.N)r=   r>   rv   r   assertListEqualrV   )rI   expected_eventsretrieved_eventsrd   s       rN   test_get__empty_queuez%EventModuleTest.test_get__empty_queue  s     "<<++--? & 	DJ%||//
;  !1?C	D "<<++K8-?rP   c           	         t         j                  t         j                  t         j                  g}t         j                  }g }t         j
                  j                          t         j
                  j                  |      }| j                  ||       g }t         j
                  j                          t         j
                  j                  t        j
                  j                  |fi t        |          t         j
                  j                  |      }| j                  ||       t        j
                  j                  |d   fi t        |d      g}t         j
                  j                          t         j
                  j                  |d          t         j
                  j                  |      }| j                  ||       t         j
                  j                          g }|D ]Z  }|j                  t        j
                  j                  |fi t        |          t         j
                  j                  |d          \ t         j
                  j                  |      }| j                  ||       y)z2Ensure get() can handle a sequence of event types.)r   r   r   r   N)r=   r   r   r   r   r>   rv   r   r   r   r?   r   append)rI   r   other_event_typer  r  r   s         rN   test_get__event_sequencez(EventModuleTest.test_get__event_sequence  s   ~~v||V5G5GH!// !<<++K8
 	""OAQ"R LL/W3DEU3VW	
 "<<++K8""OAQ"R LL{1~S1B;q>1RS
 	/!,-!<<++K8""OAQ"R 	  	3E""""5E,=e,DE LLob12		3 "<<++K8""OAQ"RrP   c                     t         j                  j                          | j                  t         j                  j                         g        y)z0Ensure get() clears the event queue after a callN)r=   r>   r   rA   rY   s    rN   test_get_clears_queuez%EventModuleTest.test_get_clears_queue9  s/    ))+R0rP   c           	         t         D ]F  }t        j                  j                  t        j                  j                  |fi t
        |          H t        j                  j                         }| j                  |j                  t        j                         t        j                  j                          t        j                  j                         }| j                  |j                  t        j                  t               y)z3Ensure clear() removes all the events on the queue.N)rV   r=   r>   r   r?   r   r   rh   r6   r^   rv   rA   r   )rI   rJ   
poll_events      rN   r   zEventModuleTest.test_clear>  s     	MALLfll00K6G6JKL	M\\&&(
JOOV^^<\\&&(
&..:UVrP   c                     g }t         j                  j                          t         j                  j                          t         j                  j                         }| j	                  ||       y)z1Ensure clear() works correctly on an empty queue.N)r=   r>   rv   r   r  )rI   r  r  s      rN   test_clear__empty_queuez'EventModuleTest.test_clear__empty_queueK  sM     	!<<++--?rP   c           	         t         dd }t         dd }g }|D ]F  }t        j                  j                  t        j                  j                  |fi t
        |          H |D ]Z  }|j                  t        j                  j                  |fi t
        |          t        j                  j                  |d          \ t        j                  j                  |       t        j                  j                         }| j                  ||       y)z?Ensure a sequence of event types can be cleared from the queue.N   r:   r   )
rV   r=   r>   r   r?   r   r  rv   r   r   )rI   cleared_event_typesexpected_event_typesr  r   remaining_eventss         rN   test_clear__event_sequencez*EventModuleTest.test_clear__event_sequenceW  s    )"1o*1R0 ) 	UELLfll00S:KE:RST	U % 	3E""""5E,=e,DE LLob12		3 	./ "<<++-/ArP   c                     t         D ]9  \  }}| j                  t        j                  j	                  |      |d|d       ; y)z3Ensure event_name() returns the correct event name.0xXNNAMES_AND_EVENTSrA   r=   r>   
event_namerI   expected_namer>   s      rN   test_event_namezEventModuleTest.test_event_nameo  sB    $4 	 M5''.E!9~	rP   c                     d}t        t        j                  t        j                        D ]6  }| j	                  t        j
                  j                  |      |d|d       8 y)zuEnsures event_name() returns the correct name for user events.

        Tests the full range of user events.
        r   r   r!  N)r   r=   r@   r   rA   r>   r$  r%  s      rN    test_event_name__userevent_rangez0EventModuleTest.test_event_name__userevent_rangev  sW    
 $6++V-=-=> 	E''.E!9~	rP   c                     d}t         j                  dz
  t         j                  fD ]6  }| j                  t         j                  j                  |      |d|d       8 y)zoEnsures event_name() does not return 'UserEvent' for events
        just outside the user event range.
        r   r   r   r!  N)r=   r@   r   rh   r>   r$  )rI   unexpected_namer>   s      rN   #test_event_name__userevent_boundaryz3EventModuleTest.test_event_name__userevent_boundary  sZ     &&&*F,<,<= 	E''.2eAY	rP   c                     t         D ]:  \  }}| j                  t        j                  j	                  |      |d|d       < y)zDEnsure event_name() returns the correct event name when kwargs used.r<   r   r!  Nr"  r%  s      rN   test_event_name__kwargsz'EventModuleTest.test_event_name__kwargs  sE    $4 	 M5''U'3]bq	N	rP   c           	         t         j                  t         j                  t         j                  g}|D ]F  }t         j                  j                  t        j                  j                  |fi t        |          H |D ]0  }| j                  t         j                  j                  |             2 | j                  t         j                  j                  |             y)z&Ensure queued events can be peeked at.N)
r=   r   r   r   r>   r   r?   r   rc   r   )rI   r   rd   s      rN   r   zEventModuleTest.test_peek  s    ~~v||V5G5GH% 	JLL"":O1B:1NO	 & 	;JOOFLL--j9:	; 	))+67rP   c           	         t         j                  t         j                  t         j                  g}t         j                  }t         j
                  j                          t         j
                  j                  |      }| j                  |       t         j
                  j                          t         j
                  j                  t        j
                  j                  |fi t        |          t         j
                  j                  |      }| j                  |       t         j
                  j                          t         j
                  j                  t        j
                  j                  |d   fi t        |d             t         j
                  j                  |      }| j                  |       t         j
                  j                          |D ]F  }t         j
                  j                  t        j
                  j                  |fi t        |          H t         j
                  j                  |      }| j                  |       y)z3Ensure peek() can handle a sequence of event types.r   N)r=   r   r   r   r   r>   rv   r   r]   r   r?   r   rc   )rI   r   r  peekedr   s        rN   test_peek__event_sequencez)EventModuleTest.test_peek__event_sequence  s   ~~v||V5G5GH!// 	"";/  	LL/W3DEU3VW	
 "";/  	LL{1~S1B;q>1RS	
 "";/ 	  	UELLfll00S:KE:RST	U "";/rP   c                 |   t         j                  j                          t         j                  j                         }| j	                  |       t
        D ]2  }t         j                  j                  |      }| j	                  |       4 t         j                  j                  t
              }| j	                  |       y)z0Ensure peek() works correctly on an empty queue.N)r=   r>   rv   r   r]   rV   )rI   r1  rd   s      rN   test_peek__empty_queuez&EventModuleTest.test_peek__empty_queue  s     ""$  & 	%J\\&&z2FV$	%
 "";/ rP   c                 J   t         d   }t        j                  j                  |       | j	                  t        j                  j                  |             t        j                  j                  |       | j                  t        j                  j                  |             y)z5Ensure a blocked event type can be unblocked/allowed.r   N)rV   r=   r>   r   rc   r   r   r]   )rI   r>   s     rN   test_set_allowedz EventModuleTest.test_set_allowed  sg    A  '0078  '11%89rP   c                    t         j                  t         j                  t         j                  t         j                  t         j
                  g}t         j                  j                  |       t         j                  j                  |       |D ]0  }| j                  t         j                  j                  |             2 y)zBEnsure a sequence of blocked event types can be unblocked/allowed.N)r=   r   r   r   r_   r   r>   r   r   r]   r   r   s      rN    test_set_allowed__event_sequencez0EventModuleTest.test_set_allowed__event_sequence  s     NNLL""  
 	  -  -  	>EV\\55e<=	>rP   c                 d   t         j                  j                  d       t        D ]0  }| j	                  t         j                  j                  |             2 t         j                  j                  d       t        D ]0  }| j                  t         j                  j                  |             2 y)z3Ensure all events can be unblocked/allowed at once.N)r=   r>   r   rV   rc   r   r   r]   r   s     rN   test_set_allowed_allz$EventModuleTest.test_set_allowed_all  s~      & 	9AOOFLL44Q78	9 	  & 	:AV\\55a89	:rP   c                 @    t         j                  j                          y)z!Ensure pump() functions properly.N)r=   r>   r~   rY   s    rN   	test_pumpzEventModuleTest.test_pump  s    rP   z(flaky test, and broken on 2.0.18 windowsc                 r   t         j                  j                  d      }t         j                  j	                  d       | j                  t         j                  j                                t         j                  j	                  d       | j                  t         j                  j                                y)zEnsure event grabbing can be enabled and disabled.

        WARNING: Moving the mouse off the display during this test can cause it
                 to fail.
        r:   r:   TFN)r=   rt   set_moder>   set_grabrc   get_grabr]   rI   surfs     rN    test_set_grab__and_get_symmetricz0EventModuleTest.test_set_grab__and_get_symmetric  sp     ~~&&x0d#--/0e$..01rP   c                 l   t         j                  j                  d       t        D ]2  }t         j                  j	                  |      }| j                  |       4 t         j                  j                  d       t        D ]2  }t         j                  j	                  |      }| j                  |       4 y)z1Ensure an event's blocked state can be retrieved.N)r=   r>   r   rV   r   r]   r   rc   )rI   r   blockeds      rN   test_get_blockedz EventModuleTest.test_get_blocked  s     	  &  	&Ell..u5GW%	& 	  &  	%Ell..u5GOOG$	%rP   c                 |   t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  g}t         j                  j                  |      }| j                  |       t         j                  j                  |d          t         j                  j                  |      }| j                  |       t         j                  j                  |       t         j                  j                  |      }| j                  |       y)z:Ensure get_blocked() can handle a sequence of event types.rg   N)r=   r   r   r   r_   r   WINDOWMINIMIZEDr@   r>   r   r]   r   rc   )rI   r   rF  s      rN    test_get_blocked__event_sequencez0EventModuleTest.test_get_blocked__event_sequence1  s     NNLL""  ""
 ,,**;7! 	  Q0,,**;7  	  -,,**;7 rP   c                    t         j                  j                  d      }t        d      D ]U  }t         j                  j                  |dz         | j                  t         j                  j                         |dz         W y)z#Ensure get_grab() works as expectedr>  r  rg   N)r=   rt   r?  r   r>   r@  rA   rA  )rI   rC  r   s      rN   test_get_grabzEventModuleTest.test_get_grabU  sb     ~~&&x0q 	=ALL!!!a%(V\\224a!e<	=rP   SDL_VIDEODRIVERdummyz4requires the SDL_VIDEODRIVER to be a non dummy value)rg   r      zNeeds at least SDL 2.0.16c                 r   t         j                  j                  d      }t         j                  j	                  d       | j                  t         j                  j                                t         j                  j	                  d       | j                  t         j                  j                                y)zCEnsure set_keyboard_grab() and get_keyboard_grab() work as expectedr>  TFN)r=   rt   r?  r>   set_keyboard_grabrc   get_keyboard_grabr]   rB  s     rN   ,test_set_keyboard_grab_and_get_keyboard_grabz<EventModuleTest.test_set_keyboard_grab_and_get_keyboard_grab^  sp     ~~&&x0&&t,6689&&u-779:rP   c                    t         j                  j                          t         j                  j                         }| j	                  |j
                  t         j                         t         j                  j                  t         j                        }t         j                  j                  t         j                  t         j                        }t         j                  j                  t         j                  t         j                        }t         j                  j                  |       t         j                  j                  |       t         j                  j                  |       | j	                  t         j                  j                         j
                  |j
                         | j	                  t         j                  j                         j
                  |j
                         | j	                  t         j                  j                         j
                  |j
                         | j	                  t         j                  j                         j
                  t         j                         y)zEnsure poll() works as expectedr   N)r=   r>   rv   r   rA   r6   r^   r?   r@   r   r   r   r   )rI   r   r   e2e3s        rN   	test_pollzEventModuleTest.test_polln  sl   \\ &..1 \\ 0 01\\FJJ?\\&**="""**,11277;**,11277;**,11277;**,116>>BrP   N)3rl   rm   rn   r   r   rw   r{   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r   r  r  r'  r)  r,  r.  r   r2  r4  r6  r8  r:  r<  unittestskiprD  rG  rJ  rL  skipIfosenvironr   r=   get_sdl_versionrS  rW  ro   rP   rN   r   r     sk   /
J8?,D6="9$K(
3
T	H(

("@*1Sf1
W
@B0
	8 & P!&	:> 
: X]]=>2 ?2%$!H X]]=>= ?= X__


()W4> X__+V++-
:<WX	; Y	
	;CrP   r   c                   $    e Zd ZdgZd Zd Zd Zy)EventModuleTestsWithTimingtimingc                 |    t         j                  j                          t         j                  j	                          y r\   rs   rY   s    rN   rw   z EventModuleTestsWithTiming.setUp  rx   rP   c                 |    t         j                  j                          t         j                  j	                          y r\   r   rY   s    rN   r{   z#EventModuleTestsWithTiming.tearDown  r   rP   c                 b   t        j                  j                  t        d   fi t        t        d      }t         j                  j                  |       t         j                  j                         }| j                  |j                  |j                         t         j                  j                  d      }| j                  |j                  t         j                         t        j                  j                  t        d   fi t        t        d      }t         j                  j                  |       t         j                  j                  d      }| j                  |j                  |j                         t         j                  j                  t         j                  dd       dt         j                  dfdt         j                  dfdt         j                  dfdt         j                  d	fd
t         j                  d
ffD ]  \  }}}t        j                         }| j                  t         j                  j                  |      j                  |       | j                  t        j                         |z
  |dz  d        t         j                  j                  t         j                  dd       t        j                         }| j                  t         j                  j                         j                  t         j                         | j                  t        j                         |z
  dd       t         j                  j                  t         j                  dd       | j                  t         j                  j                  d      j                  t         j                         y)z.Ensure wait() waits for an event on the queue.r   r;   2      <   A      -      F   i  g{Gz?)deltar   g?(   N)r=   r>   r?   rV   r   r   waitrA   r6   r^   time	set_timerr@   perf_counterassertAlmostEqual)rI   r>   
wait_event	wait_timeexpected_typeexpected_time
start_times          rN   test_event_waitz*EventModuleTestsWithTiming.test_event_wait  s    "";q>W5F{ST~5VW% \\&&(
%**5 \\&&s+
&..9 "";q>W5F{ST~5VW% \\&&s+
%**5 	f..A6 !!2&!!2&$!!2&$8
 	3I}m **,JV\\..y9>>N""!!#j0-$2Fd # 	 	f..Q7&&(
**,1163C3CDt002Z?DQ 	f..A6**2.33V^^DrP   N)rl   rm   rn   __tags__rw   r{   rx  ro   rP   rN   r_  r_    s    zH-ErP   r_  __main__);collectionsro  rX  r[  r=   r   r   r   r_   r   JOYAXISMOTIONJOYBALLMOTIONJOYHATMOTIONJOYBUTTONDOWNJOYBUTTONUPVIDEORESIZEVIDEOEXPOSEQUIT
SYSWMEVENTr@   rV   defaultdictr7   r   updateK_SPACEr^   r`   MIDIINMIDIOUTFINGERMOTION
FINGERDOWNFINGERUPMULTIGESTURE
MOUSEWHEEL	TEXTINPUTTEXTEDITINGCONTROLLERAXISMOTIONCONTROLLERBUTTONDOWNCONTROLLERBUTTONUPCONTROLLERDEVICEADDEDCONTROLLERDEVICEREMOVEDCONTROLLERDEVICEREMAPPEDDROPFILEAUDIODEVICEADDEDAUDIODEVICEREMOVEDDROPTEXT	DROPBEGINDROPCOMPLETEr#  TestCaser/   r   rq   r   r   r_  rl   mainro   rP   rN   <module>r     s      	 
 NN
LL










KK

#* ,K++D1    /ufnn-B1xm((F&&'( ( fll	(
 F&&'( ../( f**+( f**+( f**+( V(()( f**+( F&&'( F&&'( F&&'( V[[(  6$$%!(" v}}#($ %(& &""#'(( )(* V(()+(, 6$$%-(. !/(0 V(()1(2 6$$%3(4 &""#5(6 F&&'7(8 V8899(: V889;(< 6445=(> f::;?(@  > >?A(B v>>?C(D !E(F 001G(H 6445I(J !K(L &""#M(N V(()O( VQ"H%% Q"h 8?(++ 8?v.=(++ .=be	Ch'' e	CP8E!2!2 8Ez zHMMO rP   