
    &hR*                         S SK r S SKrS SKJs  Jr  S SKJrJr   " S S\ R                  5      r	 " S S\ R                  5      r
 " S S\ R                  5      r\S	:X  a  \ R                  " 5         gg)
    N)promptquestionc                   V    \ 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g)ControllerModuleTest   c                 .    [         R                  " 5         g N
controllerinitselfs    T/var/www/auris/envauris/lib/python3.13/site-packages/pygame/tests/controller_test.pysetUpControllerModuleTest.setUp           c                 .    [         R                  " 5         g r	   r   quitr   s    r   tearDownControllerModuleTest.tearDown   r   r   c                     [         R                  " 5         [         R                  " 5         U R                  [         R                  " 5       5        g r	   )r   r   r   
assertTrueget_initr   s    r   	test_initControllerModuleTest.test_init   +    
++-.r   c                     [         R                  " 5         [         R                  " 5         U R                  [         R                  " 5       5        g r	   )r   r   r   r   r   s    r   test_init__multiple(ControllerModuleTest.test_init__multiple   r   r   c                 v    [         R                  " 5         U R                  [         R                  " 5       5        g r	   r   r   assertFalser   r   s    r   	test_quitControllerModuleTest.test_quit   s#    ,,./r   c                     [         R                  " 5         [         R                  " 5         U R                  [         R                  " 5       5        g r	   r#   r   s    r   test_quit__multiple(ControllerModuleTest.test_quit__multiple   s-    ,,./r   c                 L    U R                  [        R                  " 5       5        g r	   )r   r   r   r   s    r   test_get_init"ControllerModuleTest.test_get_init!   s    
++-.r   c                    [         R                  " S5        U R                  [         R                  " 5       5        [         R                  " S5        U R	                  [         R                  " 5       5        [         R                  " S5        g )NTF)r   set_eventstater   get_eventstater$   r   s    r   test_get_eventstate(ControllerModuleTest.test_get_eventstate$   sX    !!$'
1134!!%(2245!!$'r   c                 N    U R                  [        R                  " 5       S5        g )Nr   )assertGreaterEqualr   	get_countr   s    r   test_get_count#ControllerModuleTest.test_get_count-   s    
 4 4 6:r   c                 h   [        [        R                  " 5       5       H  n[        R                  " U5      (       aH  [        R                  " U5      nU R                  U[        R                  5        UR                  5         Mf  U R                  [        R                  R                  R                  5         [        R                  " U5      nS S S 5        M     U R                  [        5         [        R                  " S5        S S S 5        g ! , (       d  f       GM  = f! , (       d  f       g = f)NTest)ranger   r4   is_controller
ControllerassertIsInstancer   assertRaisespygame_sdl2sdl2error	TypeError)r   ics      r   test_is_controller'ControllerModuleTest.test_is_controller0   s    z++-.A''**))!,%%a)>)>?&&v||'8'8'>'>?"--a0A @? / y)$$V, *) @? *)s   8D0D#
D 	#
D1c                 N    U R                  [        R                  " S5      5        g )N)assertIsNoner   name_forindexr   s    r   test_name_forindex'ControllerModuleTest.test_name_forindex=   s    *22267r    N)__name__
__module____qualname____firstlineno__r   r   r   r    r%   r(   r+   r0   r5   rE   rK   __static_attributes__rM   r   r   r   r      s9    /
/
00
/(;-8r   r   c                   P    \ 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g)ControllerTypeTestA   c                 .    [         R                  " 5         g r	   r
   r   s    r   r   ControllerTypeTest.setUpB   r   r   c                 .    [         R                  " 5         g r	   r   r   s    r   r   ControllerTypeTest.tearDownE   r   r   c                     [        [        R                  " 5       5       H6  n[        R                  " U5      (       d  M   [        R                  " U5      s  $    g r	   r9   r   r4   r:   r;   r   rC   s     r   _get_first_controller(ControllerTypeTest._get_first_controllerH   <    z++-.A''**!,,Q// /r   c                     U R                  5       nU(       a!  U R                  U[        R                  5        g U R	                  S5        g NNo controller connected)r]   r<   r   r;   skipTestr   rD   s     r   test_construction$ControllerTypeTest.test_constructionM   s6    &&(!!!Z%:%:;MM34r   c                     U R                  5       nU(       a   U R                  UR                  5       5        g U R                  S5        g ra   )r]   r   r   rc   rd   s     r   test__auto_init"ControllerTypeTest.test__auto_initT   s2    &&(OOAJJL)MM34r   c                     U R                  5       nU(       aO  U R                  UR                  5       5        UR                  5         U R	                  UR                  5       5        g U R                  S5        g ra   )r]   r   r   r   r$   rc   rd   s     r   r+    ControllerTypeTest.test_get_init[   sO    &&(OOAJJL)FFHQZZ\*MM34r   c                 f   [        [        R                  " 5       5       H?  n[        R                  " U5      (       d  M   [        R
                  R                  U5      n  O   U R                  S5        [        R                  R                  W5      nU R                  U[        R                  5        g ra   )r9   r   r4   r:   r>   joystickJoystickrc   r;   from_joystickr<   )r   rC   joyrD   s       r   test_from_joystick%ControllerTypeTest.test_from_joystickd   s}    z++-.A''**oo..q1 /
 MM34!!//4a!6!67r   c                     U R                  5       nU(       aI  UR                  5       nU R                  U[        [        R
                  R                  S5      5      5        g U R                  S5        g )Nr   rb   )r]   as_joystickr<   typer>   rm   rn   rc   )r   rD   rp   s      r   test_as_joystick#ControllerTypeTest.test_as_joysticko   sO    &&(--/C!!#tFOO,D,DQ,G'HIMM34r   c                     U R                  5       nU(       a;  UR                  5       nU R                  U[        5        U R	                  US   5        g U R                  S5        g )Narb   )r]   get_mappingr<   dictassertIsNotNonerc   )r   rD   mappings      r   test_get_mapping#ControllerTypeTest.test_get_mappingw   sM    &&(mmoG!!'40  .MM34r   c                    U R                  5       nU(       a  UR                  5       nSUS'   SUS'   UR                  U5        UR                  5       nU R                  [	        U5      [	        U5      5        U HY  nX$   S;  a  U R                  X$   X4   5        M#  US:X  a  U R                  X4   US   5        MB  U R                  X4   US   5        M[     g U R                  S5        g )Nb3ry   b0y)ry   r   rb   )r]   rz   set_mappingassertEquallenrc   )r   rD   r}   new_mappingrC   s        r   test_set_mapping#ControllerTypeTest.test_set_mapping   s    &&(mmoGGCLGCLMM'"--/KS\3{+;<:Z/$$WZ@Cx((F((F  MM34r   rM   N)rN   rO   rP   rQ   r   r   r]   re   rh   r+   rq   rv   r~   r   rR   rM   r   r   rT   rT   A   s4    0
555	8555r   rT   c                   J    \ 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g)ControllerInteractiveTest   interactivec                     [        [        R                  " 5       5       H6  n[        R                  " U5      (       d  M   [        R                  " U5      s  $    g r	   r[   r\   s     r   r]   /ControllerInteractiveTest._get_first_controller   r_   r   c                 .    [         R                  " 5         g r	   r
   r   s    r   r   ControllerInteractiveTest.setUp   r   r   c                 .    [         R                  " 5         g r	   r   r   s    r   r   "ControllerInteractiveTest.tearDown   r   r   c                     [        S5        [        R                  " 5         [        R                  " 5         [        R                  " 5       n[        SR                  U5      5      nU R                  U5        g )NzXPlease connect at least one controller before the test for controller.get_count() startszEget_count() thinks there are {} joysticks connected. Is that correct?)r   r   r   r   r4   r   formatr   )r   joystick_numanss      r   test__get_count_interactive5ControllerInteractiveTest.test__get_count_interactive   s[    @	
 	!++-**0&*>

 	r   c                    U R                  5       nU(       d  U R                  S5        [        R                  R	                  5         [        R
                  R	                  5         [        R                  R                  S5      n[        R
                  R                  S S5      nSnUR                  S5        UR                  UR                  SSS5      S5        [        R                  R                  5         [        R                  " S5        U(       ap  [        R                  R                  5        HE  nUR                   [        R"                  :X  a  S	nUR                   [        R$                  :X  d  MC  S	nMG     U(       a  Mp  [        R                  R'                  5         [        R
                  R'                  5         g 
Nrb     r      T   r   r   +Press button 'x' (on ps4) or 'a' (on xbox).r   r   r   r   r   F)r]   rc   r>   displayr   fontset_modeFontfillblitrenderupdater   r.   eventgetru   QUITCONTROLLERBUTTONDOWNr   r   rD   screenr   runningr   s         r   "test_set_eventstate_on_interactive<ControllerInteractiveTest.test_set_eventstate_on_interactive   s*   &&(MM34((4{{b)O$KKEtYW	
 	!!$'))+::,#G::!<!<<#G , g 	r   c                 ~   U R                  5       nU(       d  U R                  S5        [        R                  R	                  5         [        R
                  R	                  5         [        R                  R                  S5      n[        R
                  R                  S S5      nSnUR                  S5        UR                  UR                  SSS5      S5        [        R                  R                  5         [        R                  " S	5        U(       a  [        R                  R                  [        R                   5       H  nU(       d  M  S	nM     UR#                  [        R$                  5      (       a  [        R                  R'                  [        R(                  5      (       aM  [        R                  R+                  5         [        R
                  R+                  5         U R-                  5         OS	nU(       a  M  [        R                  R+                  5         [        R
                  R+                  5         g r   )r]   rc   r>   r   r   r   r   r   r   r   r   r   r   r.   r   r   r   
get_buttonCONTROLLER_BUTTON_Apeekr   r   failr   s         r   #test_set_eventstate_off_interactive=ControllerInteractiveTest.test_set_eventstate_off_interactive   sn   &&(MM34((4{{b)O$KKEtYW	
 	!!%())&++65#G 7 ||F6677<<$$V%@%@AANN'')KK$$&IIK#G g 	r   c                 6   U R                  5       nU(       d  U R                  S5        [        R                  R	                  5         [        R
                  R	                  5         [        R                  R                  S5      n[        R
                  R                  S S5      nSnUR                  SSS5      nUR                  SSS5      nSS/nU(       Ga  [        R                  R                  5        GH8  nUR                  [        R                  :X  a  SnUR                  [        R                  :X  a  UR                  S	:X  a  SUS	'   UR                  [        R                  :X  a  UR                  S	:X  a  SUS	'   UR                  [        R                   :X  d  M  UR"                  [        R$                  :X  a  SnUR"                  [        R&                  :X  d  M  Sn[        R                  R)                  5         [        R
                  R)                  5         U R+                  5         GM;     UR-                  [        R.                  5      US
'   UR1                  S5        UR3                  US5        UR3                  US5        UR3                  UR                  [5        U5      SS5      S5        [        R                  R7                  5         U(       a  GM  [        R                  R)                  5         [        R
                  R)                  5         g )Nrb   r   r   Tr   r   z<The two values should match up. Press "y" or "n" to confirm.Fr      r   r   r   r   r   (   )r]   rc   r>   r   r   r   r   r   r   r   r   ru   r   r   buttonCONTROLLERBUTTONUPKEYDOWNkeyK_yK_nr   r   r   r   r   r   strr   )	r   rD   r   r   r   label1label2
is_pressedr   s	            r   test_get_button_interactive5ControllerInteractiveTest.test_get_button_interactive   s!   &&(MM34((4{{b)94
 J
 U^
))+::,#G::!<!<<QRAR$(JqM::!:!::u||q?P$)JqM::/yyFJJ."'yyFJJ."'++-((*		 ," LL)C)CDJqMKK(KK'KK(KKC
OT9EwONN!!#1 g4 	r   c                    U R                  5       nU(       d  U R                  S5        [        R                  R	                  5         [        R
                  R	                  5         [        R                  R                  S5      n[        R
                  R                  S S5      nSnUR                  SSS5      nUR                  SSS5      nUR                  SSS5      nU(       Ga  [        R                  R                  5        H  nUR                  [        R                  :X  a  S	nUR                  [        R                  :X  d  MC  UR                  [        R                  :X  a  S	nUR                  [        R                   :X  d  M  S	n[        R                  R#                  5         [        R
                  R#                  5         U R%                  5         M     UR'                  [        R(                  5      n	UR+                  S
5        UR-                  US5        UR-                  US5        UR-                  US5        UR-                  UR                  [/        U	5      SS5      S5        [        R                  R1                  5         U(       a  GM  [        R                  R#                  5         [        R
                  R#                  5         g )Nrb   r   r   Tz8Press down the right trigger. The value on-screen shouldr   z?indicate how far the trigger is pressed down. This value shouldz8be in the range of 0-32767. Press "y" or "n" to confirm.Fr   r   r   r   )r   <   )r]   rc   r>   r   r   r   r   r   r   r   r   ru   r   r   r   r   r   r   r   get_axisCONTROLLER_AXIS_TRIGGERRIGHTr   r   r   r   )
r   rD   r   r   r   r   r   label3r   right_triggers
             r   test_get_axis_interactive3ControllerInteractiveTest.test_get_axis_interactive/  s   &&(MM34((4{{b)Fi
 M
 Fi
 ))+::,#G::/yyFJJ."'yyFJJ."'++-((*		 , JJv'J'JKMKK(KK'KK(KK(KKC$6iH'RNN!!#+ g. 	r   rM   N)rN   rO   rP   rQ   __tags__r]   r   r   r   r   r   r   r   rR   rM   r   r   r   r      s4    H0
$@#J2h2r   r   __main__)unittestr>   pygame._sdl2.controllerr?   r   pygame.tests.test_utilsr   r   TestCaser   rT   r   rN   mainrM   r   r   <module>r      si      , , 4788,, 78tR5** R5jK 1 1 K\ zMMO r   