
    iR*                         d dl Z d dlZd dlmc mZ d dlmZmZ  G d de j                        Z	 G d de j                        Z
 G d de j                        Zed	k(  r e j                          yy)
    N)promptquestionc                   N    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y)ControllerModuleTestc                 ,    t        j                          y N
controllerinitselfs    f/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pygame/tests/controller_test.pysetUpzControllerModuleTest.setUp           c                 ,    t        j                          y r   r
   quitr   s    r   tearDownzControllerModuleTest.tearDown   r   r   c                     t        j                          t        j                          | j                  t        j                                y r   )r
   r   r   
assertTrueget_initr   s    r   	test_initzControllerModuleTest.test_init   +    
++-.r   c                     t        j                          t        j                          | j                  t        j                                y r   )r
   r   r   r   r   s    r   test_init__multiplez(ControllerModuleTest.test_init__multiple   r   r   c                 r    t        j                          | j                  t        j                                y r   r
   r   assertFalser   r   s    r   	test_quitzControllerModuleTest.test_quit   s#    ,,./r   c                     t        j                          t        j                          | j                  t        j                                y r   r   r   s    r   test_quit__multiplez(ControllerModuleTest.test_quit__multiple   s-    ,,./r   c                 J    | j                  t        j                                y r   )r   r
   r   r   s    r   test_get_initz"ControllerModuleTest.test_get_init!   s    
++-.r   c                    t        j                  d       | j                  t        j                                t        j                  d       | j	                  t        j                                t        j                  d       y )NTF)r
   set_eventstater   get_eventstater   r   s    r   test_get_eventstatez(ControllerModuleTest.test_get_eventstate$   sX    !!$'
1134!!%(2245!!$'r   c                 L    | j                  t        j                         d       y )Nr   )assertGreaterEqualr
   	get_countr   s    r   test_get_countz#ControllerModuleTest.test_get_count-   s    
 4 4 6:r   c                 6   t        t        j                               D ]  }t        j                  |      rFt        j                  |      }| j                  |t        j                         |j                          ^| j                  t        j                  j                  j                        5  t        j                  |      }d d d         | j                  t              5  t        j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NTest)ranger
   r+   is_controller
ControllerassertIsInstancer   assertRaisespygame_sdl2sdl2error	TypeError)r   ics      r   test_is_controllerz'ControllerModuleTest.test_is_controller0   s    z++-. 	1A''*))!,%%a)>)>?&&v||'8'8'>'>? 1"--a0A1 1	1 y) 	-$$V,	- 	-1 1	- 	-s   /D$DD	Dc                 L    | j                  t        j                  d             y )N)assertIsNoner
   name_forindexr   s    r   test_name_forindexz'ControllerModuleTest.test_name_forindex=   s    *22267r   N)__name__
__module____qualname__r   r   r   r   r    r"   r$   r(   r,   r;   r@    r   r   r   r      s9    /
/
00
/(;-8r   r   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)ControllerTypeTestc                 ,    t        j                          y r   r	   r   s    r   r   zControllerTypeTest.setUpB   r   r   c                 ,    t        j                          y r   r   r   s    r   r   zControllerTypeTest.tearDownE   r   r   c                     t        t        j                               D ].  }t        j                  |      st        j                  |      c S  y r   r/   r
   r+   r0   r1   r   r9   s     r   _get_first_controllerz(ControllerTypeTest._get_first_controllerH   >    z++-. 	0A''*!,,Q//	0r   c                     | j                         }|r!| j                  |t        j                         y | j	                  d       y NNo controller connected)rL   r2   r
   r1   skipTestr   r:   s     r   test_constructionz$ControllerTypeTest.test_constructionM   s6    &&(!!!Z%:%:;MM34r   c                     | j                         }|r | j                  |j                                y | j                  d       y rO   )rL   r   r   rQ   rR   s     r   test__auto_initz"ControllerTypeTest.test__auto_initT   s2    &&(OOAJJL)MM34r   c                     | j                         }|rO| j                  |j                                |j                          | j	                  |j                                y | j                  d       y rO   )rL   r   r   r   r   rQ   rR   s     r   r$   z ControllerTypeTest.test_get_init[   sO    &&(OOAJJL)FFHQZZ\*MM34r   c                 T   t        t        j                               D ]8  }t        j                  |      st        j
                  j                  |      } n | j                  d       t        j                  j                        }| j                  |t        j                         y rO   )r/   r
   r+   r0   r4   joystickJoystickrQ   r1   from_joystickr2   )r   r9   joyr:   s       r   test_from_joystickz%ControllerTypeTest.test_from_joystickd   s    z++-. 	5A''*oo..q1	5
 MM34!!//4a!6!67r   c                     | j                         }|rI|j                         }| j                  |t        t        j
                  j                  d                   y | j                  d       y )Nr   rP   )rL   as_joystickr2   typer4   rX   rY   rQ   )r   r:   r[   s      r   test_as_joystickz#ControllerTypeTest.test_as_joysticko   sO    &&(--/C!!#tFOO,D,DQ,G'HIMM34r   c                     | j                         }|r;|j                         }| j                  |t               | j	                  |d          y | j                  d       y )NarP   )rL   get_mappingr2   dictassertIsNotNonerQ   )r   r:   mappings      r   test_get_mappingz#ControllerTypeTest.test_get_mappingw   sM    &&(mmoG!!'40  .MM34r   c                    | j                         }|r|j                         }d|d<   d|d<   |j                  |       |j                         }| j                  t	        |      t	        |             |D ]X  }||   dvr| j                  ||   ||          #|dk(  r| j                  ||   |d          A| j                  ||   |d          Z y | j                  d       y )Nb3rb   b0y)rb   rk   rP   )rL   rc   set_mappingassertEquallenrQ   )r   r:   rf   new_mappingr9   s        r   test_set_mappingz#ControllerTypeTest.test_set_mapping   s    &&(mmoGGCLGCLMM'"--/KS\3{+;< G1:Z/$$WQZQ@Cx((QF((QFG MM34r   N)rA   rB   rC   r   r   rL   rS   rU   r$   r\   r`   rg   rp   rD   r   r   rF   rF   A   s4    0
555	8555r   rF   c                   B    e Zd ZdgZd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)ControllerInteractiveTestinteractivec                     t        t        j                               D ].  }t        j                  |      st        j                  |      c S  y r   rJ   rK   s     r   rL   z/ControllerInteractiveTest._get_first_controller   rM   r   c                 ,    t        j                          y r   r	   r   s    r   r   zControllerInteractiveTest.setUp   r   r   c                 ,    t        j                          y r   r   r   s    r   r   z"ControllerInteractiveTest.tearDown   r   r   c                     t        d       t        j                          t        j                          t        j                         }t        dj                  |            }| j                  |       y )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   r+   r   formatr   )r   joystick_numanss      r   test__get_count_interactivez5ControllerInteractiveTest.test__get_count_interactive   s[    @	
 	!++-**0&*>

 	r   c                 X   | j                         }|s| j                  d       t        j                  j	                          t        j
                  j	                          t        j                  j                  d      }t        j
                  j                  d d      }d}|j                  d       |j                  |j                  ddd      d       t        j                  j                          t        j                  d       |ret        j                  j                         D ]A  }|j                   t        j"                  k(  rd	}|j                   t        j$                  k(  s@d	}C |ret        j                  j'                          t        j
                  j'                          y 
NrP     r      T   r   r   +Press button 'x' (on ps4) or 'a' (on xbox).r   r   r   r   r   F)rL   rQ   r4   displayr   fontset_modeFontfillblitrenderupdater
   r&   eventgetr_   QUITCONTROLLERBUTTONDOWNr   r   r:   screenr   runningr   s         r   "test_set_eventstate_on_interactivez<ControllerInteractiveTest.test_set_eventstate_on_interactive   s-   &&(MM34((4{{b)O$KKEtYW	
 	!!$'))+ $::,#G::!<!<<#G$  	r   c                 8   | j                         }|s| j                  d       t        j                  j	                          t        j
                  j	                          t        j                  j                  d      }t        j
                  j                  d d      }d}|j                  d       |j                  |j                  ddd      d       t        j                  j                          t        j                  d	       |rt        j                  j                  t        j                         D ]  }|sd	}	 |j#                  t        j$                        r|t        j                  j'                  t        j(                        rMt        j                  j+                          t        j
                  j+                          | j-                          nd	}|rt        j                  j+                          t        j
                  j+                          y r}   )rL   rQ   r4   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_interactivez=ControllerInteractiveTest.test_set_eventstate_off_interactive   si   &&(MM34((4{{b)O$KKEtYW	
 	!!%())&++6 $#G$ ||F667<<$$V%@%@ANN'')KK$$&IIK#G  	r   c                    | j                         }|s| j                  d       t        j                  j	                          t        j
                  j	                          t        j                  j                  d      }t        j
                  j                  d d      }d}|j                  ddd      }|j                  ddd      }ddg}|rt        j                  j                         D ]-  }|j                  t        j                  k(  rd}|j                  t        j                  k(  r|j                  d	k(  rd|d	<   |j                  t        j                  k(  r|j                  d	k(  rd|d	<   |j                  t        j                   k(  s|j"                  t        j$                  k(  rd}|j"                  t        j&                  k(  sd}t        j                  j)                          t        j
                  j)                          | j+                          0 |j-                  t        j.                        |d
<   |j1                  d       |j3                  |d       |j3                  |d       |j3                  |j                  t5        |      dd      d       t        j                  j7                          |rt        j                  j)                          t        j
                  j)                          y )NrP   r~   r   Tr   r   z<The two values should match up. Press "y" or "n" to confirm.Fr      r   r   r   r   r   (   )rL   rQ   r4   r   r   r   r   r   r   r   r   r_   r   r   buttonCONTROLLERBUTTONUPKEYDOWNkeyK_yK_nr   r   r   r   r   r   strr   )	r   r:   r   r   r   label1label2
is_pressedr   s	            r   test_get_button_interactivez5ControllerInteractiveTest.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 4 	r   c                 r   | j                         }|s| j                  d       t        j                  j	                          t        j
                  j	                          t        j                  j                  d      }t        j
                  j                  d d      }d}|j                  ddd      }|j                  ddd      }|j                  ddd      }|rt        j                  j                         D ]  }|j                  t        j                  k(  rd	}|j                  t        j                  k(  s@|j                  t        j                  k(  rd	}|j                  t        j                   k(  s}d	}t        j                  j#                          t        j
                  j#                          | j%                           |j'                  t        j(                        }	|j+                  d
       |j-                  |d       |j-                  |d       |j-                  |d       |j-                  |j                  t/        |	      dd      d       t        j                  j1                          |rt        j                  j#                          t        j
                  j#                          y )NrP   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   <   )rL   rQ   r4   r   r   r   r   r   r   r   r   r_   r   r   r   r   r   r   r   get_axisCONTROLLER_AXIS_TRIGGERRIGHTr   r   r   r   )
r   r:   r   r   r   r   r   label3r   right_triggers
             r   test_get_axis_interactivez3ControllerInteractiveTest.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!!#+ . 	r   N)rA   rB   rC   __tags__rL   r   r   r{   r   r   r   r   rD   r   r   rr   rr      s4    H0
$@#J2h2r   rr   __main__)unittestr4   pygame._sdl2.controllerr5   r
   pygame.tests.test_utilsr   r   TestCaser   rF   rr   rA   mainrD   r   r   <module>r      sk      , , 4788,, 78tR5** R5jK 1 1 K\ zHMMO r   