o
    OZhZ3  ć                   @   s~   d dl Z d dlZd dlZd dlZd dlZde ” v ZG dd de jZG dd deZG dd deZ	e
d	kr=e  ”  dS dS )
é    NŚDarwinc                   @   s$   e Zd Zedd Zedd ZdS )Ś
MouseTestsc                 C   ó   t j ”  d S ©N)ŚpygameŚdisplayŚinit©Ścls© r   śF/var/www/auris/lib/python3.10/site-packages/pygame/tests/mouse_test.pyŚ
setUpClass   s   zMouseTests.setUpClassc                 C   r   r   )r   r   Śquitr	   r   r   r   ŚtearDownClass   s   zMouseTests.tearDownClassN)Ś__name__Ś
__module__Ś__qualname__Śclassmethodr   r   r   r   r   r   r      s
    
r   c                   @   s   e Zd ZdgZdd ZdS )ŚMouseModuleInteractiveTestŚinteractivec           	      C   sŹ   t j d” t j ”  t j ” sdS t j ” }d}|D ]G\}}t j 	||” t j ”  t j 
” }| ”  d}d}|sZ|dkrZ|| ” 7 }t j ” D ]
}|jt jkrSd}qI|sZ|dks>|  |||f” qdS )zhEnsures set_pos works correctly.
        Requires tester to move the mouse to be on the window.
        )éō  r   N))é
   r   ©r   r   )éó  r   )r   r   )iU  é   )é^   é1   g        Fg     @@T)r   r   Śset_modeŚeventŚgetŚmouseŚget_focusedŚtimeZClockŚset_posŚget_posZtickŚtypeZMOUSEMOTIONŚassertEqual)	ŚselfŚclockZexpected_posŚxŚyZ	found_posZtime_passedZready_to_testr   r   r   r   Śtest_set_pos   s,   




üńz'MouseModuleInteractiveTest.test_set_posN)r   r   r   Z__tags__r+   r   r   r   r   r      s    r   c                   @   s²   e Zd Ze ej dd”dkd”dd Ze ej dd”dkd”dd	 Z	e ej dd”dkd”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 )ŚMouseModuleTestZSDL_VIDEODRIVERŚ Śdummyz/Cursors not supported on headless test machinesc           	      C   s8  |   tj” tj ”  tj ”  W d   n1 sw   Y  tj ”  d}d}d}d}d}tj 	||||”}tj 
|” z5tj ” }|  |tjj	” |  t||” |D ]}|  |t” qVtj 
||||” |  tj ” |” W dS  tjy   |   tj” tj ”  W d   Y dS 1 sw   Y  Y dS w )z#Ensures get_cursor works correctly.N©é   r0   r   )r   é`   éx   é~   ép   r1   r   r   )éą   éš   éž   é’   r7   r6   r1   r   é   )ŚassertRaisesr   Śerrorr   r   r    Ś
get_cursorr   ŚcursorsŚCursorŚ
set_cursorŚassertIsInstancer&   ŚlenŚtuple)	r'   ŚsizeŚhotspotŚxormaskŚandmaskŚexpected_lengthZexpected_cursorŚcursorŚinfor   r   r   Śtest_get_cursor:   s2   
ž

&’’zMouseModuleTest.test_get_cursorz.mouse.set_system_cursor only available in SDL2c              	   C   s¦  t jddĆ}	 t  d” |  tj” tj ”  tj 	tj
” W d   n1 s*w   Y  tj ”  |  t” tj 	d” W d   n1 sJw   Y  |  t” tj 	d” W d   n1 sew   Y  |  t” tj 	dd” W d   n1 sw   Y  |  tj” tj 	d” W d   n1 sw   Y  |  tj 	tj”d” |  t|d	” |  td
d |D ” W d   dS 1 sĢw   Y  dS )z*Ensures set_system_cursor works correctly.T)ŚrecordŚalwaysNŚbr/   r   iŠ  é   c                 s   s    | ]	}t |jtV  qd S r   )Ś
issubclassŚcategoryŚDeprecationWarning)Ś.0Śwarnr   r   r   Ś	<genexpr>   s    z9MouseModuleTest.test_set_system_cursor.<locals>.<genexpr>)ŚwarningsŚcatch_warningsŚsimplefilterr:   r   r;   r   r   r    Zset_system_cursorZSYSTEM_CURSOR_HANDr   Ś	TypeErrorr&   ŚSYSTEM_CURSOR_ARROWrA   Ś
assertTrueŚall)r'   Śwr   r   r   Śtest_set_system_cursorb   s8   

ž
’’’’’’"įz&MouseModuleTest.test_set_system_cursorc                 C   sČ  d}d}d}d}t j ||||”}t j}t j |”}t  d”}t j ||”}	t j ”  |  t j” t j	 
|” W d   n1 sBw   Y  |  t j” t j	 
|” W d   n1 s^w   Y  |  t j” t j	 
|	” W d   n1 szw   Y  t j ”  |  t” t j	 
d|||” W d   n1 sw   Y  |  t” t j	 
|d||” W d   n1 s»w   Y  |  t” t j	 
|d	||” W d   n1 sŁw   Y  |  t” t j	 
||d
|” W d   n1 s÷w   Y  |  t” t j	 
|||d
” W d   n	1 sw   Y  |  t” t j	 
||d|” W d   n	1 s5w   Y  |  t” t j	 
|||ddgddddddf” W d   n	1 s]w   Y  |  t” t j	 
d|||” W d   n	1 s|w   Y  |  t” t j	 
d|d|” W d   n	1 sw   Y  |  t” t j	 
d||d” W d   n	1 sŗw   Y  |  t j	 
d|dd”d” t j	 
||||” |  t j	 ” |” t j	 
||t|t|” |  t j	 ” |” |  t” t j	 
d” W d   n	1 sw   Y  |  t” t j	 
d” W d   n	1 s'w   Y  |  t j	 
|”d” t j	 
|” |  t j	 ” |” t j	 
|” |  t j	 ” |” |  t” t j	 
d|” W d   n	1 slw   Y  |  t” t j	 
|d” W d   n	1 sw   Y  |  t j	 
||”d” t j	 
||” |  t j	 ” |	” t j	 
|	” |  t j	 ” |	” t j	 
dt  d”” t j	 ” }
|  |
jd” |  |
jd d” |  |
jd  ” d” dS )z#Ensures set_cursor works correctly.r/   r   )r   r3   é@   r^   é    é   r   r   )r7   r8   r7   r4   é8   é   é   r   )r   r   N)r\   Śh)Ś0re   )r)   r*   ŚziNa¼ Ś00000000é   r   r9   r0   é   )é   r0   )r`   rh   )é   r^   r_   )éĄ   r1   é0   r   ri   )r`   ri   )r0   r   )r   rl   i¼żŚyellow)r)   r*   Znot_a_surface)é   ro   Ścolor)r   r=   r>   rY   ZSurfacer   r   r:   r;   r    r?   r   rX   Ś
ValueErrorr&   r<   Ślistr%   ŚdataŚget_size)r'   rC   rD   rE   rF   Zbitmap_cursorZconstantZsystem_cursorZsurfaceZcolor_cursorrH   r   r   r   Śtest_set_cursor   sØ   

’’’
’’’’’’&’’’’’’’’’
zMouseModuleTest.test_set_cursorc                 C   s   t j ” }|  |t” dS )z-Ensures get_focused returns the correct type.N)r   r    r!   r@   Śint)r'   Zfocusedr   r   r   Śtest_get_focusedü   s   
z MouseModuleTest.test_get_focusedc                 C   sD  d}t j ” }|  |t” |  t||” |D ]}|  |t” qd}t jjdd}|  |t” |  t||” |D ]}|  |t” q9d}t j d”}|  |t” |  t||” |D ]}|  |t” qZd}t j d”}|  |t” |  t||” |D ]}|  |t” q{|  t	” t j d” W d   dS 1 sw   Y  dS )z.Ensures get_pressed returns the correct types.rj   é   )Znum_buttonsr9   N)
r   r    Zget_pressedr@   rB   r&   rA   Śboolr:   rq   )r'   rG   Zbuttons_pressedŚvaluer   r   r   Śtest_get_pressed  s6   
"’z MouseModuleTest.test_get_pressedc                 C   óD   d}t j ” }|  |t” |  t||” |D ]}|  |t” qdS )z*Ensures get_pos returns the correct types.rh   N)r   r    r$   r@   rB   r&   rA   rv   )r'   rG   Śposrz   r   r   r   Śtest_get_pos#  ó   
’zMouseModuleTest.test_get_posc              	   C   sT   dg d¢dddg fD ]}|   t” tj |” W d   n1 s"w   Y  q
dS )z4Ensures set_pos handles invalid positions correctly.©ri   ©ri   rh   rj   ri   Ś1©ri   r   N)r:   rX   r   r    r#   )r'   Zinvalid_posr   r   r   Śtest_set_pos__invalid_pos.  ó   ’’z)MouseModuleTest.test_set_pos__invalid_posc                 C   r|   )z*Ensures get_rel returns the correct types.rh   N)r   r    Zget_relr@   rB   r&   rA   rv   )r'   rG   Śrelrz   r   r   r   Śtest_get_rel4  r   zMouseModuleTest.test_get_relc                 C   s0   dD ]}t j |” t j ” }|  ||” qdS )z$Ensures get_visible works correctly.©FTN)r   r    Śset_visibleZget_visibler&   )r'   Zexpected_valueŚvisibler   r   r   Śtest_get_visible?  s
   
ūz MouseModuleTest.test_get_visiblec                 C   s4   t j d” dD ]}t j |”}|  || ” qdS )z/Ensures set_visible returns the correct values.Tr   N)r   r    r   r&   )r'   Zexpected_visibleŚprev_visibler   r   r   Śtest_set_visibleH  s
   żz MouseModuleTest.test_set_visiblec              	   C   sT   dg d¢dddg fD ]}|   t” tj |”}W d   n1 s"w   Y  q
dS )z8Ensures set_visible handles invalid positions correctly.r   r   gń?r   r   N)r:   rX   r   r    r   )r'   Zinvalid_valuer   r   r   r   Śtest_set_visible__invalid_valueR  r   z/MouseModuleTest.test_set_visible__invalid_valueN)r   r   r   ŚunittestZskipIfŚosŚenvironr   rJ   r]   ru   rw   r{   r~   r   r   r   r   r   r   r   r   r   r,   9   s0    ž
$ž
&ž
l!	
r,   Ś__main__)r   r   ŚplatformrU   r   ZDARWINZTestCaser   r   r,   r   Śmainr   r   r   r   Ś<module>   s    #  $’