
    &h9                        S SK r S SKrS SKrS SKrS SKr\R
                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                   \R"                  \R$                  \R&                  4r\ R*                  " \5      r\R1                  \R
                  S\R2                  0\R                  S\R2                  0\R                  0 \R                  SS0\R                  SS005        / S\R4                  4PS\R6                  4PS\R
                  4PS\R                  4PS	\R                  4PS
\R                  4PS\R                  4PS\R                  4PS\R                  4PS\R                  4PS\R                  4PS\R                  4PS\R                  4PS\R                   4PS\R"                  4PS\R$                  4PS\R8                  4PS\R:                  4PS\R&                  4PSPS\R<                  4PS\R>                  4PS\R@                  4PS\RB                  4PS\RD                  4PS\RF                  4PS\RH                  4PS \RJ                  4PS!\RL                  4PS"\RN                  4PS#\RP                  4PS$\RR                  4PS%\RT                  4PS&\RV                  4PS'\RX                  4PS(\RZ                  4PS)\R\                  4PS*\R^                  4PS+\R`                  4P7r1 " S, S-\Rd                  5      r3S.r4 " S/ S0\Rd                  5      r5 " S1 S2\Rd                  5      r6 " S3 S4\Rd                  5      r7 " S5 S6\Rd                  5      r8\9S7:X  a  \Rt                  " 5         gg)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                   ,    \ rS rSrS rS rS rS rSrg)EventTypeTestT   c                    [         R                  R                  [         R                  SSS9nU R	                  UR
                  S5        U R	                  UR                  S5        U R	                  UR                  [         R                  5        U R                  UR                  UR                  5        SUl        U R	                  UR
                  S5        SUl        U R	                  UR                  S5        U R                  [        [        USS5        U R                  [        [        USS	5        [        U5      nS
nU H  nU R!                  XB5        M     U R                  ["        [         R                  R                  SSS9  g	)z&Ensure an Event object can be created.r   1)	some_attr
other_attr      typer   dictN)r7   r8   __dict__r3   r4   new_attr
   d   r7   )pygameeventEvent	USEREVENTassertEqualr3   r4   r7   assertIsr8   r9   r:   assertRaisesAttributeErrorsetattrdirassertIn
ValueError)selfedattrsattrs        O/var/www/auris/envauris/lib/python3.13/site-packages/pygame/tests/event_test.py
test_Event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                      [        [        R                  R                  [        S   SS95        g ! [
         a    U R                  S5         g f = f)Nr      íaz5Event object raised exception for non-ascii character)strr>   r?   r@   EVENT_TYPESUnicodeEncodeErrorfailrJ   s    rO   test_as_strEventTypeTest.test_as_strw   sF    	O"";q>V"<=! 	OIIMN	Os   .1 AAc                 b   U R                  [        R                  R                  [        R                  5      5        [        R
                  [        R                  [        R                  [        R                  4 H1  nU R                  [        R                  R                  U5      5        M3     g N)
assertFalser>   r?   r@   NOEVENTMOUSEBUTTONDOWNACTIVEEVENTWINDOWLEAVEUSEREVENT_DROPFILE
assertTrue)rJ   
event_types     rO   test_event_boolEventTypeTest.test_event_bool   sp    ++FNN;<""%%	
J OOFLL..z:;
rR   c                    [         R                  R                  [        S   SS9n[         R                  R                  [        S   SS9n[         R                  R                  [        S   SS9n[         R                  R                  [        S   SS9nU R	                  X5        U R	                  X5        U R                  X5        U R                  X5        U R	                  X!5        U R                  X#5        U R                  X$5        U R                  X15        U R                  X25        U R                  X45        U R                  XA5        U R                  XB5        U R                  XC5        g)z-Ensure that events can be compared correctly.r   r   rU      N)r>   r?   r@   rX   rB   assertNotEqual)rJ   rV   bcrL   s        rO   test_event_equality!EventTypeTest.test_event_equality   s4   LL{1~3LL{1~3LL{1~3LL{1~3 	A!A! 	A!A! 	A!A!A! 	A!A!A!rR    N)	__name__
__module____qualname____firstlineno__rP   r\   rh   ro   __static_attributes__rq   rR   rO   r/   r/   T   s     HDO<"rR   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                   2    \ rS rSrS rS rS rS rS rSr	g)	EventModuleArgsTest   c                 |    [         R                  R                  5         [         R                  R	                  5         g r_   r>   displayinitr?   clearr[   s    rO   setUpEventModuleArgsTest.setUp   "    rR   c                 @    [         R                  R                  5         g r_   )r>   r|   quitr[   s    rO   tearDownEventModuleArgsTest.tearDown   s    rR   c                 T   [         R                  R                  5         [         R                  R                  S 5        [         R                  R                  S S5        [         R                  R                  SS9  [         R                  R                  SS9  [         R                  R                  S S9  [         R                  R                  [         R                  [         R                  /S9  [         R                  R                  [         R
                  SS9  U R                  [        [         R                  R                  S5        U R                  [        [         R                  R                  S5        U R                  [        [         R                  R                  S5        g )	NTFpump	eventtyper   r   i   y      ?       @foo)	r>   r?   getKEYUPKEYDOWNrA   rD   rI   	TypeErrorr[   s    rO   test_getEventModuleArgsTest.test_get   s   t$e$d#4(FLL&..#AB6#3#3%@ 	*fll&6&6
C)V\\%5%5v>)V\\%5%5u=rR   c                    [         R                  R                  5         [         R                  R                  S 5        [         R                  R                  S S5        [         R                  R                  SS9  [         R                  R                  SS9  [         R                  R                  S S9  [         R                  R                  [         R                  [         R                  /S9  [         R                  R                  [         R
                  SS9  U R                  [        [         R                  R                  S5        U R                  [        [         R                  R                  / SQ5        g )NTFr   r   r   i)rV   rm   rn   )
r>   r?   r~   r   r   rA   rD   rI   r   r   r[   s    rO   
test_clearEventModuleArgsTest.test_clear   s    4 4&&%T*fllFNN%CDV%5%5EB 	*fll&8&8+F)V\\%5%5GrR   c                 t   [         R                  R                  5         [         R                  R                  S 5        [         R                  R                  S S5        [         R                  R                  SS9  [         R                  R                  SS9  [         R                  R                  S S9  [         R                  R                  [         R                  [         R                  /S9  [         R                  R                  [         R
                  SS9   " S S5      nU R                  [        [         R                  R                  S5        U R                  [        [         R                  R                  S	/5        U R                  [        [         R                  R                  U" 5       5        g )
NTFr   r   r   c                       \ rS rSrSrg)*EventModuleArgsTest.test_peek.<locals>.Foo   rq   N)rr   rs   rt   ru   rv   rq   rR   rO   Foor      s    rR   r   i)	r>   r?   peekr   r   rA   rD   rI   r   )rJ   r   s     rO   	test_peekEventModuleArgsTest.test_peek   s   $$%u%t$D)V\\6>>$BCF$4$45A	 	 	*fll&7&7<*fll&7&7#?)V\\%6%6>rR   rq   N)
rr   rs   rt   ru   r   r   r   r   r   rv   rq   rR   rO   rx   rx      s    > H?rR   rx   c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
EventCustomTypeTest   znThose tests are special in that they need the _custom_event counter to
be reset before and/or after being run.c                     [         R                  " 5         [         R                  " 5         [         R                  R                  5         g r_   )r>   r   r}   r|   r[   s    rO   r   EventCustomTypeTest.setUp   s$    rR   c                 .    [         R                  " 5         g r_   )r>   r   r[   s    rO   r   EventCustomTypeTest.tearDown   s    rR   c                 P   U R                  [        R                  R                  5       [        R                  S-   5        [        R                  R                  5       n[        R                  R                  5       nU R                  XS-
  5        [        R                  R                  U5      n[        R                  R                  U5        [        R                  R                  U5      nU R                  [        U5      S5        U R                  US   R                  U5        g )Nr   r   )
rB   r>   r?   custom_typerA   r@   postr   lenr7   )rJ   atypeatype2evqueues        rO   test_custom_type$EventCustomTypeTest.test_custom_type   s    113V5E5E5IJ((*))+
+\\&"  'UQ'q.rR   c                    Sn[         R                  R                  5       S-   n[        U[         R                  5       H!  n[         R                  R                  5       nM#     U R                  U[         R                  S-
  5        U R                  [         R                  5         [         R                  R                  5         SSS5        g! , (       d  f       g= f)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	NUMEVENTSrB   rD   error)rJ   laststart_s       rO   test_custom_type__end_boundary2EventCustomTypeTest.test_custom_type__end_boundary  s    
 ((*Q.uf../A<<++-D 0 	v//!34v||,LL$$& -,,s   %C
Cc                    [         R                  R                  5       nU R                  U[         R                  R                  5       S-
  5        [         R                  " 5         [         R
                  " 5         [         R                  R                  5         U R                  U[         R                  R                  5       5        g)z2Ensure custom events get 'deregistered' by quit().r   N)r>   r?   r   rB   r   r}   r|   )rJ   befores     rO   test_custom_type__reset+EventCustomTypeTest.test_custom_type__reset  su    ))+!9!9!;a!?@!9!9!;<rR   rq   N)rr   rs   rt   ru   __doc__r   r   r   r   r   rv   rq   rR   rO   r   r      s     /
/'=rR   r   c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%\&RN                  " S$5      S% 5       r(S& r)S' r*\&RN                  " S$5      S( 5       r+\&RX                  " \-R\                  R_                  S)5      S*:H  S+5      \&RX                  " \0Rb                  " 5       S,:  S-5      S. 5       5       r2S/ r3S0r4g1)2EventModuleTesti  c                 (    U R                   " U0 UD6  g r_   )assertCountEqual)rJ   argskwargss      rO   _assertCountEqual!EventModuleTest._assertCountEqual  s     	t.v.rR   c                 t   USS nU H  nU HK  nUR                    H&  nUR                   U   UR                   U   :w  d  M%    M7     UR                  U5          MR     [        S[        U5      -   S-   [        U5      -   S-   [        U5      -   5      e   [	        U5      S:  a  [        S[        U5      -   5      eg)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: )r9   removeAssertionErrorrW   r   )rJ   expectedgot
items_leftexpected_elementitemr   s          rO   _assertExpectedEvents%EventModuleTest._assertExpectedEvents!  s     V
 ("+44C}}S)-=-F-Fs-KK 5
 %%d+ # %*+,01 *o& !	!
 #h  !)$ z?Q !6Z!HII rR   c                 |    [         R                  R                  5         [         R                  R	                  5         g r_   r{   r[   s    rO   r   EventModuleTest.setUp=  r   rR   c                 |    [         R                  R                  5         [         R                  R	                  5         g r_   r>   r?   r~   r|   r   r[   s    rO   r   EventModuleTest.tearDownA  "    rR   c                 H    SnU R                  [        R                  U5        g)zCEnsures NUMEVENTS does not exceed the maximum SDL number of events.r   N)assertLessEqualr>   r   )rJ   MAX_SDL_EVENTSs     rO   test_event_numevents$EventModuleTest.test_event_numeventsE  s      V--~>rR   c                     [         R                  R                  [         R                  SS9nU R	                  UR
                  S5        g )Nattr1r   )r>   r?   r@   rA   rB   r   )rJ   e1s     rO   test_event_attribute$EventModuleTest.test_event_attributeL  s5    \\ 0 0@7+rR   c                    [         S   n[         S   n[        R                  R                  U5        U R	                  [        R                  R                  U5      5        U R                  [        R                  R                  U5      5        [        R                  R                  [        R                  R                  " U40 [        U   D65      nU R                  U5        [        R                  R                  [        R                  R                  " U40 [        U   D65      nU R	                  U5        [        R                  R                  5       nU Vs/ s H  oUR                  U:X  d  M  UPM     nnU Vs/ s H   oUR                  U:w  d  M  UR                  PM"     nnU R                  U/ 5        U R	                  X';   5        gs  snf s  snf )z,Ensure events can be blocked from the queue.r   r   N)rX   r>   r?   set_blockedrf   get_blockedr`   r   r@   EVENT_TEST_PARAMSr   r7   rB   )rJ   r?   unblocked_eventpostedretrK   should_be_blockedshould_be_allowed_typess           rO   test_set_blocked EventModuleTest.test_set_blockedP  s[   A%a.  '007811/BC""LLuA(9%(@A
 	  ""LLU2CO2TU
 	ll (+?1vvQ?36"J3a&&E/61663"J*B/BC	 @"Js   G3G?GGc                    [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  [         R                  /n[         R                  R                  U5        U H1  nU R                  [         R                  R                  U5      5        M3     g)z0Ensure a sequence of event types can be blocked.N)r>   r   r   MOUSEMOTIONrb   MOUSEBUTTONUPWINDOWFOCUSLOSTrA   r?   r   rf   r   rJ   event_typesetypes      rO    test_set_blocked__event_sequence0EventModuleTest.test_set_blocked__event_sequencek  s     NNLL""  ""
 	  - EOOFLL44U;< !rR   c                     [         R                  R                  S5        [         H1  nU R	                  [         R                  R                  U5      5        M3     g)z+Ensure all events can be unblocked at once.N)r>   r?   r   rX   rf   r   rJ   rK   s     rO   test_set_blocked_all$EventModuleTest.test_set_blocked_all|  s9      &AOOFLL44Q78 rR   c           
         [         R                  R                  [         R                  SS9n[         R                  R	                  U5        [         R                  R                  5       nU R                  UR                  UR                  [        5        [        SS5       H  n[         R                  R	                  [         R                  R                  " [        U   40 [        [        U      D65        U R                  [         R                  R                  5       R                  [        U   [        5        M     g)z)Ensure events can be posted to the queue.r   r   r      N)r>   r?   r@   rA   r   pollrB   r   race_condition_notificationr   rX   r   r7   )rJ   r   posted_eventis       rO   test_post__and_poll#EventModuleTest.test_post__and_poll  s    \\ 0 0@"||((*<#5#57RS q"ALL"";q>W5F{ST~5VW !!#((+a.:U rR   c                    [         R                  R                  5       n[         R                  R	                  [         R
                  [         R                  S9[         R                  R	                  [         R
                  [         R                  US9[         R                  R	                  [         R
                  [         R                  SS9[         R                  R	                  [         R
                  [         R                  SS9[         R                  R	                  [         R
                  [         R                  SSS9[         R                  R	                  [         R
                  [         R                  USS9/nU HV  n[         R                  R                  U5        [         R                  R                  5       nU R                  X4[        5        MX     g)	z1Ensure keydown events can be posted to the queue.r   )r   modg)r   unicodeN)r   r  windowrK   )r   r  r  )r>   r   get_modsr?   r@   r   K_pK_yK_gK_aK_mK_er   r   rB   r   )rJ   activemodkeyseventsrK   r   s        rO   test_post_and_get_keydown)EventModuleTest.test_post_and_get_keydown  s,   

++- LLv~~6::>LLv~~6::=QLLv~~6::sKLLv~~6::tLLLv~~6::4PTULLFJJM3  	
 ALLa !<<,,.LQ.IJ rR   c                    [         R                  R                  [         R                  R                  [         R                  SS0[        [        S5      5      S95        [         R                  R                  5       nU R                  UR                  [         R                  5        U R                  UR                  S5        U R                  UR                  [        [        S5      5      5        g )NrV      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar<   )test)r>   r?   r   r@   rA   listr   r   rB   r7   rV   r  r   s     rO   test_post_large_user_event*EventModuleTest.test_post_large_user_event  s    LL  3
"3$uSz:J  	

 LL!1!12j)eCj!12rR   c                 (   [         R                  R                  [         R                  5        U R	                  [         R                  R                  [         R                  R                  [         R                  5      5      5        U R	                  [         R                  R                  5       5        [         R                  R                  [         R                  5        U R                  [         R                  R                  [         R                  R                  [         R                  5      5      5        U R                  [         R                  R                  5       [         R                  R                  [         R                  5      5        g)zZ
Test blocked events are not posted. Also test whether post()
returns a boolean correctly
N)r>   r?   r   rA   r`   r   r@   r   set_allowedrf   rB   r[   s    rO   test_post_blocked!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SrR   c                 t   Sn[        U5       HM  n[        R                  R                  [        R                  R	                  [        R
                  5      5        MO     [        R                  R                  5       nU R                  [        U5      U5        U R                  [        S U 5       5      5        g)z3Ensure get() retrieves all the events on the queue.r;   c              3   Z   #    U  H!  oR                   [        R                  :H  v   M#     g 7fr_   )r7   r>   rA   ).0rK   s     rO   	<genexpr>+EventModuleTest.test_get.<locals>.<genexpr>  s     F1FFf&6&66s   )+N)r   r>   r?   r   r@   rA   r   rB   r   rf   all)rJ   	event_cntr   r   s       rO   r   EventModuleTest.test_get  s|    	y!ALLfll001A1ABC "   "UY/FFFGrR   c                    [         R                  R                  [         R                  5      n[         R                  R	                  U5        [         R                  R                  [         R                  5      nU R                  [        U5      S5        U R                  US   R                  [         R                  5        Sn[        U5       H"  n[         R                  R	                  U5        M$     [         R                  R                  [         R                  /5      nU R                  [        U5      U5        U H  nU R                  Xa5        M     g )Nr   r   r;   )
r>   r?   r@   rA   r   r   rB   r   r7   r   )rJ   r   r   
TESTEVENTSr   qr?   s          rO   test_get_type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U' rR   c                     U R                  [        R                  [        R                  R                  [        R
                  S[        R                  5        g )NF)rD   r>   r   r?   r   r   r   r[   s    rO   test_get_exclude_throw&EventModuleTest.test_get_exclude_throw  s1    LL&,,**FNNE6<<	
rR   c                    [         R                  R                  [         R                  R                  [         R                  5      5        [         R                  R                  [         R                  R                  [         R
                  5      5        [         R                  R                  [         R
                  S9nU R                  [        U5      S5        U R                  US   R                  [         R                  5        [         R                  R                  [         R                  R                  [         R                  5      5        [         R                  R                  [         R                  R                  [         R                  5      5        [         R                  R                  [         R
                  [         R                  4S9nU R                  [        U5      S5        U R                  US   R                  [         R                  5        [         R                  R                  5       nU R                  [        U5      S5        g )N)excluder   r   rk   )r>   r?   r   r@   rA   r   r   rB   r   r7   r   )rJ   r   s     rO   test_get_exclude 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'rR   c                    / n[         R                  R                  5         [         R                  R                  5       nU R	                  X!5        [
         H3  n[         R                  R                  U5      nU R	                  X!5        M5     [         R                  R                  [
        5      nU R	                  X!5        g)z/Ensure get() works correctly on an empty queue.N)r>   r?   r~   r   assertListEqualrX   )rJ   expected_eventsretrieved_eventsrg   s       rO   test_get__empty_queue%EventModuleTest.test_get__empty_queue  s     "<<++--? &J%||//
;  !1C & "<<++K8-?rR   c           	         [         R                  [         R                  [         R                  /n[         R                  n/ n[         R
                  R                  5         [         R
                  R                  U5      nU R                  X4S9  / n[         R
                  R                  5         [         R
                  R                  [         R
                  R                  " U40 [        U   D65        [         R
                  R                  U5      nU R                  X4S9  [         R
                  R                  " US   40 [        US      D6/n[         R
                  R                  5         [         R
                  R                  US   5        [         R
                  R                  U5      nU R                  X4S9  [         R
                  R                  5         / nU H\  nUR                  [         R
                  R                  " U40 [        U   D65        [         R
                  R                  US   5        M^     [         R
                  R                  U5      nU R                  X4S9  g)z2Ensure get() can handle a sequence of event types.)r   r   r   r   N)r>   r   r   r   r   r?   r~   r   r   r   r@   r   append)rJ   r   other_event_typer2  r3  r   s         rO   test_get__event_sequence(EventModuleTest.test_get__event_sequence  s   ~~v||V5G5GH!// !<<++K8
 	""O"R LL/W3DEU3VW	
 "<<++K8""O"R LL{1~S1B;q>1RS
 	/!,-!<<++K8""O"R 	 E""""5E,=e,DE LLob12	 ! "<<++K8""O"RrR   c                     [         R                  R                  5         U R                  [         R                  R                  5       / 5        g)z0Ensure get() clears the event queue after a callN)r>   r?   r   rB   r[   s    rO   test_get_clears_queue%EventModuleTest.test_get_clears_queue9  s/    ))+R0rR   c           	         [          HH  n[        R                  R                  [        R                  R                  " U40 [
        U   D65        MJ     [        R                  R                  5       nU R                  UR                  [        R                  5        [        R                  R                  5         [        R                  R                  5       nU R                  UR                  [        R                  [        5        g)z3Ensure clear() removes all the events on the queue.N)rX   r>   r?   r   r@   r   r   rl   r7   ra   r~   rB   r   )rJ   rK   
poll_events      rO   r   EventModuleTest.test_clear>  s    ALLfll00K6G6JKL \\&&(
JOOV^^<\\&&(
&..:UVrR   c                     / n[         R                  R                  5         [         R                  R                  5         [         R                  R                  5       nU R	                  X!5        g)z1Ensure clear() works correctly on an empty queue.N)r>   r?   r~   r   r1  )rJ   r2  r3  s      rO   test_clear__empty_queue'EventModuleTest.test_clear__empty_queueK  sK     	!<<++--?rR   c           	      (   [         SS n[         SS n/ nU HH  n[        R                  R                  [        R                  R                  " U40 [
        U   D65        MJ     U H\  nUR                  [        R                  R                  " U40 [
        U   D65        [        R                  R                  US   5        M^     [        R                  R                  U5        [        R                  R                  5       nU R                  XS5        g)z?Ensure a sequence of event types can be cleared from the queue.N   r;   r   )
rX   r>   r?   r   r@   r   r7  r~   r   r   )rJ   cleared_event_typesexpected_event_typesr2  r   remaining_eventss         rO   test_clear__event_sequence*EventModuleTest.test_clear__event_sequenceW  s    )"1o*1R0 )ELLfll00S:KE:RST ) %E""""5E,=e,DE LLob12	 % 	./ "<<++-/ArR   c                     [          H9  u  pU R                  [        R                  R	                  U5      USUS 35        M;     g)z3Ensure event_name() returns the correct event name.0xXNNAMES_AND_EVENTSrB   r>   r?   
event_namerJ   expected_namer?   s      rO   test_event_nameEventModuleTest.test_event_nameo  s;    $4 M''.E!9~ %5rR   c                     Sn[        [        R                  [        R                  5       H7  nU R	                  [        R
                  R                  U5      USUS 35        M9     g)zeEnsures event_name() returns the correct name for user events.

Tests the full range of user events.
r   rL  rM  N)r   r>   rA   r   rB   r?   rP  rQ  s      rO    test_event_name__userevent_range0EventModuleTest.test_event_name__userevent_rangev  sR    
 $6++V-=-=>E''.E!9~ ?rR   c                     Sn[         R                  S-
  [         R                  4 H7  nU R                  [         R                  R                  U5      USUS 35        M9     g)z_Ensures event_name() does not return 'UserEvent' for events
just outside the user event range.
r   r   rL  rM  N)r>   rA   r   rl   r?   rP  )rJ   unexpected_namer?   s      rO   #test_event_name__userevent_boundary3EventModuleTest.test_event_name__userevent_boundary  sU     &&&*F,<,<=E''.2eAY >rR   c                     [          H7  u  pU R                  [        R                  R	                  US9USUS 35        M9     g)zDEnsure event_name() returns the correct event name when kwargs used.r=   rL  rM  NrN  rQ  s      rO   test_event_name__kwargs'EventModuleTest.test_event_name__kwargs  s>    $4 M''U'3]bq	N %5rR   c           	         [         R                  [         R                  [         R                  /nU HH  n[         R                  R                  [         R                  R                  " U40 [        U   D65        MJ     U H1  nU R                  [         R                  R                  U5      5        M3     U R                  [         R                  R                  U5      5        g)z&Ensure queued events can be peeked at.N)
r>   r   r   r   r?   r   r@   r   rf   r   )rJ   r   rg   s      rO   r   EventModuleTest.test_peek  s    ~~v||V5G5GH%JLL"":O1B:1NO & &JOOFLL--j9: & 	))+67rR   c           	         [         R                  [         R                  [         R                  /n[         R                  n[         R
                  R                  5         [         R
                  R                  U5      nU R                  U5        [         R
                  R                  5         [         R
                  R                  [         R
                  R                  " U40 [        U   D65        [         R
                  R                  U5      nU R                  U5        [         R
                  R                  5         [         R
                  R                  [         R
                  R                  " US   40 [        US      D65        [         R
                  R                  U5      nU R                  U5        [         R
                  R                  5         U HH  n[         R
                  R                  [         R
                  R                  " U40 [        U   D65        MJ     [         R
                  R                  U5      nU R                  U5        g)z3Ensure peek() can handle a sequence of event types.r   N)r>   r   r   r   r   r?   r~   r   r`   r   r@   r   rf   )rJ   r   r8  peekedr   s        rO   test_peek__event_sequence)EventModuleTest.test_peek__event_sequence  s   ~~v||V5G5GH!// 	"";/  	LL/W3DEU3VW	
 "";/  	LL{1~S1B;q>1RS	
 "";/ 	 ELLfll00S:KE:RST ! "";/rR   c                    [         R                  R                  5         [         R                  R                  5       nU R	                  U5        [
         H3  n[         R                  R                  U5      nU R	                  U5        M5     [         R                  R                  [
        5      nU R	                  U5        g)z0Ensure peek() works correctly on an empty queue.N)r>   r?   r~   r   r`   rX   )rJ   rb  rg   s      rO   test_peek__empty_queue&EventModuleTest.test_peek__empty_queue  s     ""$  &J\\&&z2FV$ &
 "";/ rR   c                 J   [         S   n[        R                  R                  U5        U R	                  [        R                  R                  U5      5        [        R                  R                  U5        U R                  [        R                  R                  U5      5        g)z5Ensure a blocked event type can be unblocked/allowed.r   N)rX   r>   r?   r   rf   r   r  r`   )rJ   r?   s     rO   test_set_allowed EventModuleTest.test_set_allowed  sg    A  '0078  '11%89rR   c                    [         R                  [         R                  [         R                  [         R                  [         R
                  /n[         R                  R                  U5        [         R                  R                  U5        U H1  nU R                  [         R                  R                  U5      5        M3     g)zBEnsure a sequence of blocked event types can be unblocked/allowed.N)r>   r   r   r   rb   r   r?   r   r  r`   r   r   s      rO    test_set_allowed__event_sequence0EventModuleTest.test_set_allowed__event_sequence  s     NNLL""  
 	  -  - EV\\55e<= !rR   c                 l   [         R                  R                  S5        [         H1  nU R	                  [         R                  R                  U5      5        M3     [         R                  R                  S5        [         H1  nU R                  [         R                  R                  U5      5        M3     g)z3Ensure all events can be unblocked/allowed at once.N)r>   r?   r   rX   rf   r   r  r`   r   s     rO   test_set_allowed_all$EventModuleTest.test_set_allowed_all  st      &AOOFLL44Q78  	  &AV\\55a89 rR   c                 @    [         R                  R                  5         g)z!Ensure pump() functions properly.N)r>   r?   r   r[   s    rO   	test_pumpEventModuleTest.test_pump  s    rR   z(flaky test, and broken on 2.0.18 windowsc                 r   [         R                  R                  S5      n[         R                  R	                  S5        U R                  [         R                  R                  5       5        [         R                  R	                  S5        U R                  [         R                  R                  5       5        g)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>   r|   set_moder?   set_grabrf   get_grabr`   rJ   surfs     rO    test_set_grab__and_get_symmetric0EventModuleTest.test_set_grab__and_get_symmetric  sp     ~~&&x0d#--/0e$..01rR   c                 t   [         R                  R                  S5        [         H3  n[         R                  R	                  U5      nU R                  U5        M5     [         R                  R                  S5        [         H3  n[         R                  R	                  U5      nU R                  U5        M5     g)z1Ensure an event's blocked state can be retrieved.N)r>   r?   r  rX   r   r`   r   rf   )rJ   r   blockeds      rO   test_get_blocked EventModuleTest.test_get_blocked  s     	  & Ell..u5GW% ! 	  & Ell..u5GOOG$ !rR   c                 |   [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  [         R                  /n[         R                  R                  U5      nU R                  U5        [         R                  R                  US   5        [         R                  R                  U5      nU R                  U5        [         R                  R                  U5        [         R                  R                  U5      nU R                  U5        g)z:Ensure get_blocked() can handle a sequence of event types.rk   N)r>   r   r   r   rb   r   WINDOWMINIMIZEDrA   r?   r   r`   r   rf   )rJ   r   r~  s      rO    test_get_blocked__event_sequence0EventModuleTest.test_get_blocked__event_sequence1  s     NNLL""  ""
 ,,**;7! 	  Q0,,**;7  	  -,,**;7 rR   c                    [         R                  R                  S5      n[        S5       HV  n[         R                  R                  US-  5        U R                  [         R                  R                  5       US-  5        MX     g)z#Ensure get_grab() works as expectedru  rE  rk   N)r>   r|   rv  r   r?   rw  rB   rx  )rJ   rz  r   s      rO   test_get_grabEventModuleTest.test_get_grabU  s]     ~~&&x0qALL!!!a%(V\\224a!e< rR   SDL_VIDEODRIVERdummyz4requires the SDL_VIDEODRIVER to be a non dummy value)rk   r      zNeeds at least SDL 2.0.16c                 r   [         R                  R                  S5      n[         R                  R	                  S5        U R                  [         R                  R                  5       5        [         R                  R	                  S5        U R                  [         R                  R                  5       5        g)zCEnsure set_keyboard_grab() and get_keyboard_grab() work as expectedru  TFN)r>   r|   rv  r?   set_keyboard_grabrf   get_keyboard_grabr`   ry  s     rO   ,test_set_keyboard_grab_and_get_keyboard_grab<EventModuleTest.test_set_keyboard_grab_and_get_keyboard_grab^  sp     ~~&&x0&&t,6689&&u-779:rR   c                    [         R                  R                  5         [         R                  R                  5       nU R	                  UR
                  [         R                  5        [         R                  R                  [         R                  5      n[         R                  R                  [         R                  [         R                  S9n[         R                  R                  [         R                  [         R                  S9n[         R                  R                  U5        [         R                  R                  U5        [         R                  R                  U5        U R	                  [         R                  R                  5       R
                  UR
                  5        U R	                  [         R                  R                  5       R
                  UR
                  5        U R	                  [         R                  R                  5       R
                  UR
                  5        U R	                  [         R                  R                  5       R
                  [         R                  5        g)zEnsure poll() works as expectedr  N)r>   r?   r~   r   rB   r7   ra   r@   rA   r   r  r   r   )rJ   r   r   e2e3s        rO   	test_pollEventModuleTest.test_polln  sl   \\ &..1 \\ 0 01\\FJJ?\\&**="""**,11277;**,11277;**,11277;**,116>>BrR   rq   N)5rr   rs   rt   ru   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r'  r*  r.  r4  r9  r<  r   rB  rI  rS  rV  rZ  r]  r   rc  rf  ri  rl  ro  rr  unittestskipr{  r  r  r  skipIfosenvironr   r>   get_sdl_versionr  r  rv   rq   rR   rO   r   r     s`   /
J8?,D6="9$K(
3
T	H(

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


()W4> __V++-
:<WX	; Y	
	;CrR   r   c                   ,    \ rS rSrS/rS rS rS rSrg)EventModuleTestsWithTimingi  timingc                 |    [         R                  R                  5         [         R                  R	                  5         g r_   r{   r[   s    rO   r    EventModuleTestsWithTiming.setUp  r   rR   c                 |    [         R                  R                  5         [         R                  R	                  5         g r_   r   r[   s    rO   r   #EventModuleTestsWithTiming.tearDown  r   rR   c                 d   [         R                  R                  " [        S   40 [        [        S      D6n[         R                  R                  U5        [         R                  R                  5       nU R                  UR                  UR                  5        [         R                  R                  S5      nU R                  UR                  [         R                  5        [         R                  R                  " [        S   40 [        [        S      D6n[         R                  R                  U5        [         R                  R                  S5      nU R                  UR                  UR                  5        [         R                  R                  [         R                  SS5        S[         R                  S4S[         R                  S4S[         R                  S4S[         R                  S	4S
[         R                  S
44 H~  u  p4n[        R                  " 5       nU R                  [         R                  R                  U5      R                  U5        U R                  [        R                  " 5       U-
  US-  SS9  M     [         R                  R                  [         R                  SS5        [        R                  " 5       nU R                  [         R                  R                  5       R                  [         R                  5        U R                  [        R                  " 5       U-
  SSS9  [         R                  R                  [         R                  SS5        U R                  [         R                  R                  S5      R                  [         R                  5        g)z.Ensure wait() waits for an event on the queue.r   r<   2      <   A      -      F   i  g{Gz?)deltar   g?(   N)r>   r?   r@   rX   r   r   waitrB   r7   ra   time	set_timerrA   perf_counterassertAlmostEqual)rJ   r?   
wait_event	wait_timeexpected_typeexpected_time
start_times          rO   test_event_wait*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
3Im **,JV\\..y9>>N""!!#j0-$2Fd # 8
 	f..Q7&&(
**,1163C3CDt002Z?DQ 	f..A6**2.33V^^DrR   rq   N)	rr   rs   rt   ru   __tags__r   r   r  rv   rq   rR   rO   r  r    s    zH-ErR   r  __main__);collectionsr  r  r  r>   r   r   r   rb   r   JOYAXISMOTIONJOYBALLMOTIONJOYHATMOTIONJOYBUTTONDOWNJOYBUTTONUPVIDEORESIZEVIDEOEXPOSEQUIT
SYSWMEVENTrA   rX   defaultdictr8   r   updateK_SPACEra   rc   MIDIINMIDIOUTFINGERMOTION
FINGERDOWNFINGERUPMULTIGESTURE
MOUSEWHEEL	TEXTINPUTTEXTEDITINGCONTROLLERAXISMOTIONCONTROLLERBUTTONDOWNCONTROLLERBUTTONUPCONTROLLERDEVICEADDEDCONTROLLERDEVICEREMOVEDCONTROLLERDEVICEREMAPPEDDROPFILEAUDIODEVICEADDEDAUDIODEVICEREMOVEDDROPTEXT	DROPBEGINDROPCOMPLETErO  TestCaser/   r   rx   r   r   r  rr   mainrq   rR   rO   <module>r     s      	 
 NN
LL










KK

#*  ++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MMO rR   