o
    OZŽhR*  ã                   @   s€   d dl Z d dlZd dlm  mZ d dlmZmZ G dd„ de jƒZ	G dd„ de jƒZ
G dd„ de jƒZed	kr>e  ¡  dS dS )
é    N)ÚpromptÚquestionc                   @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚControllerModuleTestc                 C   ó   t  ¡  d S ©N©Ú
controllerÚinit©Úself© r   úK/var/www/auris/lib/python3.10/site-packages/pygame/tests/controller_test.pyÚsetUp   ó   zControllerModuleTest.setUpc                 C   r   r   ©r   Úquitr
   r   r   r   ÚtearDown   r   zControllerModuleTest.tearDownc                 C   s"   t  ¡  t  ¡  |  t  ¡ ¡ d S r   )r   r   r	   Ú
assertTrueÚget_initr
   r   r   r   Ú	test_init   ó   zControllerModuleTest.test_initc                 C   ó"   t  ¡  t  ¡  |  t  ¡ ¡ d S r   )r   r	   r   r   r
   r   r   r   Útest_init__multiple   r   z(ControllerModuleTest.test_init__multiplec                 C   s   t  ¡  |  t  ¡ ¡ d S r   ©r   r   ÚassertFalser   r
   r   r   r   Ú	test_quit   s   zControllerModuleTest.test_quitc                 C   r   r   r   r
   r   r   r   Útest_quit__multiple   r   z(ControllerModuleTest.test_quit__multiplec                 C   s   |   t ¡ ¡ d S r   )r   r   r   r
   r   r   r   Útest_get_init!   s   z"ControllerModuleTest.test_get_initc                 C   s>   t  d¡ |  t  ¡ ¡ t  d¡ |  t  ¡ ¡ t  d¡ d S )NTF)r   Úset_eventstater   Zget_eventstater   r
   r   r   r   Útest_get_eventstate$   s
   

z(ControllerModuleTest.test_get_eventstatec                 C   s   |   t ¡ d¡ d S )Nr   )ZassertGreaterEqualr   Ú	get_countr
   r   r   r   Útest_get_count-   ó   z#ControllerModuleTest.test_get_countc              	   C   s²   t t ¡ ƒD ]5}t |¡rt |¡}|  |tj¡ | ¡  q|  tj	j
j¡ t |¡}W d   ƒ n1 s6w   Y  q|  t¡ t d¡ W d   ƒ d S 1 sRw   Y  d S )NZTest)Úranger   r    Úis_controllerÚ
ControllerÚassertIsInstancer   ÚassertRaisesÚpygameÚ_sdl2Zsdl2ÚerrorÚ	TypeError)r   ÚiÚcr   r   r   Útest_is_controller0   s   


ÿ€"ÿz'ControllerModuleTest.test_is_controllerc                 C   s   |   t d¡¡ d S )Néÿÿÿÿ)ZassertIsNoner   Zname_forindexr
   r   r   r   Útest_name_forindex=   r"   z'ControllerModuleTest.test_name_forindexN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r!   r.   r0   r   r   r   r   r      s    	r   c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚControllerTypeTestc                 C   r   r   r   r
   r   r   r   r   B   r   zControllerTypeTest.setUpc                 C   r   r   r   r
   r   r   r   r   E   r   zControllerTypeTest.tearDownc                 C   ó.   t t ¡ ƒD ]}t |¡rt |¡  S qd S r   ©r#   r   r    r$   r%   ©r   r,   r   r   r   Ú_get_first_controllerH   ó
   
ÿÿz(ControllerTypeTest._get_first_controllerc                 C   s,   |   ¡ }|r|  |tj¡ d S |  d¡ d S ©NúNo controller connected)r8   r&   r   r%   ÚskipTest©r   r-   r   r   r   Útest_constructionM   ó   z$ControllerTypeTest.test_constructionc                 C   s,   |   ¡ }|r|  | ¡ ¡ d S |  d¡ d S r:   )r8   r   r   r<   r=   r   r   r   Útest__auto_initT   r?   z"ControllerTypeTest.test__auto_initc                 C   sB   |   ¡ }|r|  | ¡ ¡ | ¡  |  | ¡ ¡ d S |  d¡ d S r:   )r8   r   r   r   r   r<   r=   r   r   r   r   [   s   z ControllerTypeTest.test_get_initc                 C   sT   t t ¡ ƒD ]}t |¡rtj |¡} nq|  d¡ tj 	|¡}|  
|tj¡ d S r:   )r#   r   r    r$   r(   ÚjoystickÚJoystickr<   r%   Zfrom_joystickr&   )r   r,   Újoyr-   r   r   r   Útest_from_joystickd   s   
þ
z%ControllerTypeTest.test_from_joystickc                 C   s>   |   ¡ }|r| ¡ }|  |ttj d¡ƒ¡ d S |  d¡ d S )Nr   r;   )r8   Zas_joystickr&   Útyper(   rA   rB   r<   )r   r-   rC   r   r   r   Útest_as_joysticko   s
   z#ControllerTypeTest.test_as_joystickc                 C   s@   |   ¡ }|r| ¡ }|  |t¡ |  |d ¡ d S |  d¡ d S )NÚar;   )r8   Úget_mappingr&   ÚdictZassertIsNotNoner<   )r   r-   Úmappingr   r   r   Útest_get_mappingw   s   z#ControllerTypeTest.test_get_mappingc                 C   sº   |   ¡ }|rV| ¡ }d|d< d|d< | |¡ | ¡ }|  t|ƒt|ƒ¡ |D ],}|| dvr:|  || || ¡ q'|dkrI|  || |d ¡ q'|  || |d ¡ q'd S |  d¡ d S )NZb3rG   Zb0Úy)rG   rL   r;   )r8   rH   Zset_mappingÚassertEqualÚlenr<   )r   r-   rJ   Znew_mappingr,   r   r   r   Útest_set_mapping€   s    
ù	z#ControllerTypeTest.test_set_mappingN)r1   r2   r3   r   r   r8   r>   r@   r   rD   rF   rK   rO   r   r   r   r   r4   A   s    		r4   c                   @   sR   e Zd ZdgZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚControllerInteractiveTestÚinteractivec                 C   r5   r   r6   r7   r   r   r   r8   ™   r9   z/ControllerInteractiveTest._get_first_controllerc                 C   r   r   r   r
   r   r   r   r   ž   r   zControllerInteractiveTest.setUpc                 C   r   r   r   r
   r   r   r   r   ¡   r   z"ControllerInteractiveTest.tearDownc                 C   s<   t dƒ t ¡  t ¡  t ¡ }td |¡ƒ}|  |¡ d S )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   Zjoystick_numZansr   r   r   Útest__get_count_interactive¤   s   ÿþz5ControllerInteractiveTest.test__get_count_interactivec                 C   sÌ   |   ¡ }|s|  d¡ tj ¡  tj ¡  tj d¡}tj d d¡}d}| d¡ | 	| 
ddd¡d¡ tj ¡  t d¡ |rZtj ¡ D ]}|jtjkrOd	}|jtjkrWd	}qE|s@tj ¡  tj ¡  d S ©
Nr;   ©é  rV   é   T©éÿ   rY   rY   ú+Press button 'x' (on ps4) or 'a' (on xbox).©r   r   r   ©r   r   F)r8   r<   r(   Údisplayr	   ÚfontÚset_modeÚFontÚfillÚblitÚrenderÚupdater   r   ÚeventÚgetrE   ÚQUITÚCONTROLLERBUTTONDOWNr   ©r   r-   Úscreenr^   Úrunningre   r   r   r   Ú"test_set_eventstate_on_interactive¶   s2   



þ

€ú
z<ControllerInteractiveTest.test_set_eventstate_on_interactivec                 C   sô   |   ¡ }|s|  d¡ tj ¡  tj ¡  tj d¡}tj d d¡}d}| d¡ | 	| 
ddd¡d¡ tj ¡  t d	¡ |rntj tj¡D ]}|rMd	}qG| tj¡rltj tj¡rjtj ¡  tj ¡  |  ¡  nd	}|s@tj ¡  tj ¡  d S rT   )r8   r<   r(   r]   r	   r^   r_   r`   ra   rb   rc   rd   r   r   re   rf   rg   Ú
get_buttonÚCONTROLLER_BUTTON_AÚpeekrh   r   Úfailri   r   r   r   Ú#test_set_eventstate_off_interactiveÖ   s:   



þ

€


õ
z=ControllerInteractiveTest.test_set_eventstate_off_interactivec           	      C   s†  |   ¡ }|s|  d¡ tj ¡  tj ¡  tj d¡}tj d d¡}d}| ddd¡}| ddd¡}ddg}|r·tj	 
¡ D ]L}|jtjkrGd}|jtjkrV|jd	krVd|d	< |jtjkre|jd	kred|d	< |jtjkr‰|jtjkrsd}|jtjkr‰d}tj ¡  tj ¡  |  ¡  q=| tj¡|d
< | d¡ | |d¡ | |d¡ | | t|ƒdd¡d¡ tj ¡  |s8tj ¡  tj ¡  d S )Nr;   rU   rW   TrZ   r[   z<The two values should match up. Press "y" or "n" to confirm.Fr   é   rX   r\   ©r   rW   ©r   é(   )r8   r<   r(   r]   r	   r^   r_   r`   rc   re   rf   rE   rg   rh   ZbuttonZCONTROLLERBUTTONUPÚKEYDOWNÚkeyÚK_yÚK_nr   rp   rm   rn   ra   rb   Ústrrd   )	r   r-   rj   r^   rk   Úlabel1Úlabel2Z
is_pressedre   r   r   r   Útest_get_button_interactiveû   sV   


ÿý

€

è
z5ControllerInteractiveTest.test_get_button_interactivec           
      C   sX  |   ¡ }|s|  d¡ tj ¡  tj ¡  tj d¡}tj d d¡}d}| ddd¡}| ddd¡}| ddd¡}|r tj	 
¡ D ].}|jtjkrJd	}|jtjkrn|jtjkrXd	}|jtjkrnd	}tj ¡  tj ¡  |  ¡  q@| tj¡}	| d
¡ | |d¡ | |d¡ | |d¡ | | t|	ƒdd¡d¡ tj ¡  |s;tj ¡  tj ¡  d S )Nr;   rU   rW   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.FrX   r\   rs   rt   )r   é<   )r8   r<   r(   r]   r	   r^   r_   r`   rc   re   rf   rE   rg   rv   rw   rx   ry   r   rp   Zget_axisZCONTROLLER_AXIS_TRIGGERRIGHTra   rb   rz   rd   )
r   r-   rj   r^   rk   r{   r|   Zlabel3re   Zright_triggerr   r   r   Útest_get_axis_interactive/  sT   


ÿýÿ

€

ë
z3ControllerInteractiveTest.test_get_axis_interactiveN)r1   r2   r3   Z__tags__r8   r   r   rS   rl   rq   r}   r   r   r   r   r   rP   –   s     %4rP   Ú__main__)Zunittestr(   Zpygame._sdl2.controllerr)   r   Zpygame.tests.test_utilsr   r   ZTestCaser   r4   rP   r1   Úmainr   r   r   r   Ú<module>   s    :U Oÿ