o
    OZhYµ  ć                   @   sō   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ G dd de j	Z
G dd de j	ZG dd	 d	eZG d
d de j	ZG dd de j	Ze  ej d”dkd”G dd de j	ZG dd de j	Zedkrxe  ”  dS dS )é    N©Śquestion)Śdisplayc                   @   sB  e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Ze	 
ej 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e	 
dd”dd  Zd!d" Zd#d$ Ze	 
d%d&”d'd( Ze	 
d%d&”d)d* Ze	 
d%d&”d+d, Ze	 
d%d&”d-d. Ze	 
ej d”d/v d0”d1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Z d;d< Z!d=d> Z"d?d@ Z#dAdB Z$dCdD Z%e	 
ej d”dkdE”dFdG Z&e	 
ej d”dkdE”dHdI Z'e	 
e(e)j*dJ dK”dLdM Z+dNdO Z,dPdQ Z-dRdS Z.dTdU Z/dVdW Z0e	 
ddX”dYdZ Z1dd[gZ2e	 
ddX”d\d] Z3dd[gZ2e	 
ej d”e2v d^”d_d` Z4daS )bŚDisplayModuleTestzpygame windowc                 C   ó   t  ”  d S ©N)r   Śinit©Śself© r   śH/var/www/auris/lib/python3.10/site-packages/pygame/tests/display_test.pyŚsetUp   ó   zDisplayModuleTest.setUpc                 C   r   r   ©r   Śquitr	   r   r   r   ŚtearDown   r   zDisplayModuleTest.tearDownc                 C   s\   t j ” }|  |jd” |  |jd” t j d”}t j ” }|  |jd” |  |jd” d S )Né’’’’©é   r   r   )Śpygamer   ZInfoŚassertNotEqualZ	current_hZ	current_wŚset_modeŚassertEqual)r
   ŚinfŚscreenr   r   r   Ś	test_Info   s   

zDisplayModuleTest.test_Infoc                 C   sø   t j d”}|  t j ” ” t j |d” |  t j ” ” t j ”  |  t j	” t j ”  W d    n1 s8w   Y  ~|  t j	” t j ”  W d    d S 1 sUw   Y  d S )N©éd   r   )éB   r   é5   )
r   r   r   ŚassertIsNoneŚflipŚSurfaceŚfillr   ŚassertRaisesŚerror©r
   r   r   r   r   Ś	test_flip!   s   
’"’zDisplayModuleTest.test_flipc                 C   sn   t j ”  |  t j ” d” t j ”  t j d” |  t j ” d” t j ”  t j ”  |  t j ” d” dS )zTest the get_active functionF©i  ią  TN)r   r   r   r   Ś
get_activer   r   r	   r   r   r   Śtest_get_active5   s   



z!DisplayModuleTest.test_get_activeŚSDL_VIDEODRIVERŚdummyz4requires the SDL_VIDEODRIVER to be a non dummy valuec                 C   sX   t j d” t j ”  t j ”  tdD ]}t d” t j 	”  q|  
t j ” d” dS )z-Test the get_active function after an iconifyr(   r   ē{®Gįz?FN)r   r   r   ŚeventŚclearŚiconifyŚrangeŚtimeŚsleepŚpumpr   r)   )r
   Ś_r   r   r   Śtest_get_active_iconifyG   s   	


z)DisplayModuleTest.test_get_active_iconifyc                 C   s$   t  d”}|  t  ” d | j” d S )Nr   r   )r   r   r   Śget_captionŚdefault_captionr&   r   r   r   Śtest_get_caption[   s   
z"DisplayModuleTest.test_get_captionc                 C   sJ   d}t  d”}|  t  |”” |  t  ” d |” |  t  ” d |” d S )NŚtestr   r   é   ©r   r   r    Śset_captionr   r7   ©r
   ŚTEST_CAPTIONr   r   r   r   Śtest_set_caption`   s
   
z"DisplayModuleTest.test_set_captionc                 C   sL   d}t  d”}|  t j|d” |  t  ” d |” |  t  ” d |” d S )Nr:   r   )Śtitler   r;   r<   r>   r   r   r   Śtest_set_caption_kwargsh   s
   
z)DisplayModuleTest.test_set_caption_kwargsc                 C   s&   d}t  |” |  t  ” d |” d S )Nu   å°r   )r   r=   r   r7   )r
   r?   r   r   r   Śtest_caption_unicodep   s   
z&DisplayModuleTest.test_caption_unicodec                 C   s^   g d¢}t  ” }|  ||” t  ”  |  tj” t  ” }W d    d S 1 s(w   Y  d S )N)ZaalibŚandroidŚarmZcocoaZdgaZdirectxZdirectfbr,   Z
emscriptenZfbconZggiZhaikuZkhronosZkmsdrmZnaclZ	offscreenZpandoraZpspZqnxZ	raspberryZsvgalibZuikitŚvglZvivanteZwaylandŚwindowsZwindibZwinrtZx11)r   Z
get_driverZassertInr   r$   r   r%   )r
   ZdriversZdriverr   r   r   Śtest_get_driveru   s   
"’z!DisplayModuleTest.test_get_driverc                 C   s   |   t ” ” dS )z;Ensures the module's initialization state can be retrieved.N)Ś
assertTruer   Śget_initr	   r   r   r   Śtest_get_init   s   zDisplayModuleTest.test_get_initTzSDL2 issuesc                    s|   d  fdd D D ]0}dD ]+}t  |d|”}tj  ” }|  ||” |  |tj” |  | ” |” |  | ” |” qqdS )z5Ensures get_surface gets the current display surface.)r;   é   r   c                 3   s"    | ]} D ]}||fV  qqd S r   r   )Ś.0ŚwŚh©Ślengthsr   r   Ś	<genexpr>§   s     z5DisplayModuleTest.test_get_surface.<locals>.<genexpr>)é   é   é   é    r   N)	r   r   r   Śget_surfacer   ŚassertIsInstancer"   Śget_sizeZget_bitsize)r
   Zexpected_sizeZexpected_depthZexpected_surfaceŚsurfacer   rP   r   Śtest_get_surface¢   s   
ų’z"DisplayModuleTest.test_get_surfacec                 C   s   t j ” }|  |” dS )z;Ensures get_surface handles the display mode not being set.N)r   r   rW   r    )r
   rZ   r   r   r   Śtest_get_surface__mode_not_set²   s   
z0DisplayModuleTest.test_get_surface__mode_not_setc                 C   s<   t  ” }|  |t” h d£}t| ”  |”}|  |” d S )N>   ZcolorbufferZhglrcrZ   ZwindowZshell_surfaceŚdatar   ZdfbZwmwindowZ
taskHandleŚ
connectionZfswindowZhdcZwimpVersionZresolveFramebufferZframebufferZunlock_funcZ	hinstanceZ	lock_func)r   Zget_wm_inforX   ŚdictŚsetŚkeysŚ
differenceŚassertFalse)r
   Zwm_infoZwm_info_potential_keysZwm_info_remaining_keysr   r   r   Śtest_get_wm_infoø   s
   z"DisplayModuleTest.test_get_wm_infozJskipping for all because some failures on rasppi and maybe other platformsś-OpenGL requires a non-"dummy" SDL_VIDEODRIVERc                 C   sP  t  dtj”}g }| tj  tj”” | tj  tj”” | tj  tj”” | tj  tj	”” | tj  tj
”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” tj  tjd” tj  tjd” tj  tjd” tj  tj	d” tj  tj
d” tj  tjd” tj  tjd” tj  tjd” tj  tjd” tj  tjd” tj  tjd” tj  tjd” tj  tjd” tj  tjd” tj  tjd” tj  tjd” tj  tjd” g d¢}g }| tj  tj”” | tj  tj”” | tj  tj”” | tj  tj	”” | tj  tj
”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” tt|D ]}|  || || kp|| || k” qń|  t” tj  d” W d    d S 1 s!w   Y  d S )	N©r   r   rS   rU   rT   r;   r   ©rS   rU   rS   rT   rT   rT   rT   r;   r;   r   r   r;   r;   r   r   r   r;   r   ŚDUMMY©r   r   r   ŚOPENGLŚappendŚgl_get_attributeŚGL_ALPHA_SIZEŚGL_DEPTH_SIZEŚGL_STENCIL_SIZEŚGL_ACCUM_RED_SIZEŚGL_ACCUM_GREEN_SIZEŚGL_ACCUM_BLUE_SIZEŚGL_ACCUM_ALPHA_SIZEŚGL_MULTISAMPLEBUFFERSŚGL_MULTISAMPLESAMPLESŚ	GL_STEREOZGL_ACCELERATED_VISUALZGL_CONTEXT_MAJOR_VERSIONZGL_CONTEXT_MINOR_VERSIONZGL_CONTEXT_FLAGSZGL_CONTEXT_PROFILE_MASKZGL_SHARE_WITH_CURRENT_CONTEXTZGL_FRAMEBUFFER_SRGB_CAPABLEŚgl_set_attributer1   ŚlenrI   r$   Ś	TypeError©r
   r   Zoriginal_valuesŚ
set_valuesŚ
get_valuesŚir   r   r   Śtest_gl_get_attributeŪ   sĀ   ’’’’’’’’’’’’’’’’’ž$’z'DisplayModuleTest.test_gl_get_attributec                 C   s¶  t  dtj”}g }| tj jtjd” | tj jtjd” | tj jtjd” | tj jtj	d” | tj jtj
d” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” tj jtjdd tj jtjdd tj jtjdd tj jtj	dd tj jtj
dd tj jtjdd tj jtjdd tj jtjdd tj jtjdd tj jtjdd tj jtjdd tj jtjdd tj jtjdd tj jtjdd tj jtjdd tj jtjdd tj jtjdd g d	¢}g }| tj jtjd” | tj jtjd” | tj jtjd” | tj jtj	d” | tj jtj
d” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” tt|D ]}|  || || kp8|| || k” q$|  t” tj  d
” W d    d S 1 sTw   Y  d S )Nrf   ©ŚflagrS   ©r   ŚvaluerU   rT   r;   r   rg   rh   ri   rz   r   r   r   Śtest_gl_get_attribute_kwargsW  sö   ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ž$’z.DisplayModuleTest.test_gl_get_attribute_kwargsc                 C   s  t  dtj”}g d¢}tj  tj|d ” tj  tj|d ” tj  tj|d ” tj  tj|d ” tj  tj	|d ” tj  tj
|d ” tj  tj|d	 ” tj  tj|d
 ” tj  tj|d ” tj  tj|d ” g }| tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj	”” | tj  tj
”” | tj  tj”” | tj  tj”” | tj  tj”” | tj  tj”” tt|D ]}|  || || k” qŪ|  t” tj  d” W d    d S 1 sw   Y  d S )Nrf   ©
rS   rU   rS   rT   rT   rT   rT   r;   r;   r   r   r;   é   é   é   rL   é   é   rS   é	   rh   ©r   r   r   rj   rw   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rk   rl   r1   rx   rI   r$   ry   ©r
   r   r{   r|   r}   r   r   r   Śtest_gl_set_attributeķ  s8   $’z'DisplayModuleTest.test_gl_set_attributec                 C   s8  t  dtj”}g d¢}tj jtj|d d tj jtj|d d tj jtj|d d tj jtj|d d tj jtj	|d d tj jtj
|d	 d tj jtj|d
 d tj jtj|d d tj jtj|d d tj jtj|d d g }| tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtj	d” | tj jtj
d” | tj jtjd” | tj jtjd” | tj jtjd” | tj jtjd” tt|D ]}|  || || k” qļ|  t” tj  d” W d    d S 1 sw   Y  d S )Nrf   r   r   r   r;   r   r   r   rL   r   r   rS   r   r   rh   r   r   r   r   r   Śtest_gl_set_attribute_kwargs0  sl   
’
’
’
’
’
’
’’’’’’’$’z.DisplayModuleTest.test_gl_set_attribute_kwargs)r,   rD   z9iconify is only supported on some video drivers/platformsc                 C   sÄ   t j d” |  t j ” d” t j ” }|r[d }}tdD ](}t d” t j	 
” D ]}|jt jkr=|js=|jt jkr=d}|jt jkrEd}q*q|  |” |  |” |  t j ” ” d S |  d” d S )Nr(   TFé2   r-   z3Iconify not supported on this platform, please skip)r   r   r   r   r)   r0   r1   r2   r3   r.   ŚgetŚtypeZACTIVEEVENTZgainŚstateZ	APPACTIVEZWINDOWMINIMIZEDrI   rc   Śfail)r
   ŚsuccessZactive_eventZwindow_minimized_eventr5   r.   r   r   r   Śtest_iconify  s&   

ū

zDisplayModuleTest.test_iconifyc                 C   s"   t  ”  t  ”  |  t  ” ” dS )z4Ensures the module is initialized after init called.N)r   r   r   rI   rJ   r	   r   r   r   Ś	test_init¬  s   zDisplayModuleTest.test_initc                 C   ó"   t  ”  t  ”  |  t  ” ” dS )z<Ensures the module is initialized after multiple init calls.N)r   r   rI   rJ   r	   r   r   r   Śtest_init__multiple“  ó   z%DisplayModuleTest.test_init__multiplec                 C   sģ   t jjdt jdd}|dkr$|  t|d d” |  t|d d t” t j ” }|dkrO|  t|d d” |  t|d d t” |  t|tt|” t jjdddd}|dkrt|  t|d d” |  t|d d t” d S d S )Nr   ©ŚdepthŚflagsr   r   r   )	r   r   Ś
list_modesŚ
FULLSCREENr   rx   r   Śintr`   )r
   Śmodesr   r   r   Śtest_list_modes»  s   
žz!DisplayModuleTest.test_list_modesc                 C   sb   t j d” t j ” }|dkr|d }|  t j |”d” t j ddd” t jjddddd d S )Nr   r   r   rV   )r   r   r   )r   r   Śmode_okr   r   ©r
   r    Śsizer   r   r   Śtest_mode_okĶ  s   
zDisplayModuleTest.test_mode_okc                 C   ó<   t j ” }|dkr|d }|  t jj|t jdd” d S d S ©Nr   r   ©r   )r   r   r   r   r¢   r   r£   r   r   r   Śtest_mode_ok_fullscreen×  s   
’žz)DisplayModuleTest.test_mode_ok_fullscreenc                 C   r¦   r§   )r   r   r   r   r¢   ŚSCALEDr£   r   r   r   Śtest_mode_ok_scaledß  s
   
žz%DisplayModuleTest.test_mode_ok_scaledc                 C   s   |   tj ” d” d S )Nr   )ZassertGreaterr   r   Zget_num_displaysr	   r   r   r   Śtest_get_num_displayså  ó   z'DisplayModuleTest.test_get_num_displaysc                 C   s   t  ”  |  t  ” ” dS )z8Ensures the module is not initialized after quit called.N©r   r   rc   rJ   r	   r   r   r   Ś	test_quitč  s   zDisplayModuleTest.test_quitc                 C   r   )z@Ensures the module is not initialized after multiple quit calls.Nr®   r	   r   r   r   Śtest_quit__multipleī  r   z%DisplayModuleTest.test_quit__multiplezNeeds a not dummy videodriverc              
   C   s    t j d” g d¢}|D ]A}| j|d1 |  t” |  t j |”d” W d    n1 s/w   Y  |  t j |”d” W d    n1 sHw   Y  qd S )N©r;   r;   )ē      Š?ē      ą?g)\Āõ(ģ?ē      š?)ŚgammaT)r   r   r   ŚsubTestŚassertWarnsŚDeprecationWarningr   Ś	set_gamma)r
   Śgammasrµ   r   r   r   Śtest_set_gammaõ  s   ’ż’z DisplayModuleTest.test_set_gammac              	   C   sp   t j d” g d¢}|D ])\}}}| j|||d |  t j |||”d” W d    n1 s0w   Y  qd S )Nr±   ))r³   r³   r³   )r“   r“   r“   )r²   gėQøÕ?g)\Āõ(Ü?)ŚrŚgŚbT)r   r   r   r¶   r   r¹   )r
   rŗ   r¼   r½   r¾   r   r   r   Śtest_set_gamma__tuple  s   ’’z'DisplayModuleTest.test_set_gamma__tupleŚset_gamma_rampz0Not all systems and hardware support gamma rampsc                 C   s¦   t j d” ttd}dd |D }dd |D }|  t” t j |||”}W d    n1 s2w   Y  |rF|  t j |||”” d S |  	t j |||”” d S )N)rL   rL   é   c                 S   ó   g | ]}|d  qS ©rĮ   r   ©rM   Śnumberr   r   r   Ś
<listcomp>   ó    z9DisplayModuleTest.test_set_gamma_ramp.<locals>.<listcomp>c                 S   rĀ   rĆ   r   rÄ   r   r   r   rĘ   !  rĒ   )
r   r   r   Ślistr1   r·   rø   rĄ   rI   rc   )r
   r¼   r½   r¾   ZisSupportedr   r   r   Śtest_set_gamma_ramp  s   ’z%DisplayModuleTest.test_set_gamma_rampc                 C   s   t jjddddd d S )Nr±   r   ©r¤   r   r   r   )r   r   r   r	   r   r   r   Śtest_set_mode_kwargs)  ó   z&DisplayModuleTest.test_set_mode_kwargsc                 C   s   t jjdt jddd}t j ” }|  |d | ” d  dd” |  |d | ” d  dd” |  |d | ” d  |d | ” d  ” d S )Nr±   r   rŹ   z6window width should be a multiple of the surface widthr;   z8window height should be a multiple of the surface height)r   r   r   rŖ   Zget_window_sizer   rY   )r
   ZsurfZwinsizer   r   r   Śtest_set_mode_scaled,  s"   
’
żż$’z&DisplayModuleTest.test_set_mode_scaledc                 C   s   t j t  dd”” d S )Nr;   )r   r   r   ZVector2r	   r   r   r   Śtest_set_mode_vector2?  rĢ   z'DisplayModuleTest.test_set_mode_vector2c                 C   s@   t j dt j”}|  | ” d” t j d”}|  | ” d” dS )z8Ensures a window created with SCALED can become smaller.)é,  rĻ   )éČ   rŠ   N)r   r   r   rŖ   r   rY   r&   r   r   r   Śtest_set_mode_unscaledB  s   z(DisplayModuleTest.test_set_mode_unscaledc                 C   sV   t j d” |  t j ” ” t j d” |  t j ” ” t j ”  |  t j ” ” d S )NTF)r   r   Zset_allow_screensaverrI   Zget_allow_screensaverrc   r	   r   r   r   Śtest_screensaver_supportL  s   
z*DisplayModuleTest.test_screensaver_supportz#set_palette() not supported in SDL2c                 C   sü  |   tj” g d¢}tj |” W d    n1 sw   Y  tj ddd” g }|  tj |”” |   t” d}tj |” W d    n1 sKw   Y  |   t” ddgddgg}tj |” W d    n1 snw   Y  |   t” g d¢gd	d
 t	ddD  }tj |” W d    n1 sw   Y  |   t” d}tj |” W d    n1 sµw   Y  |   t” g d¢d g}tj |” W d    n1 s×w   Y  |   t” g d¢}tj |” W d    d S 1 s÷w   Y  d S )N©r;   r   r   ©i   i   r   rS   é   r;   r   ©r   r   r   r   r   c                 S   ó   g | ]	}|||||gqS r   r   ©rM   Śxr   r   r   rĘ   e  ó    z6DisplayModuleTest.test_set_palette.<locals>.<listcomp>é’   Śqwerty©é{   rŽ   rŽ   é'  ©
r$   r   r%   r   Zset_paletter   r    Ś
ValueErrorry   r1   ©r
   Śpaletter   r   r   Śtest_set_paletteU  s>   žžžžžž"žz"DisplayModuleTest.test_set_paletterD   c                 C   s  |   tj” g d¢}tjj|d W d    n1 sw   Y  tj ddd” g }|  tjj|d” |   t” d}tjj|d W d    n1 sNw   Y  |   t” ddgddgg}tjj|d W d    n1 srw   Y  |   t” g d	¢gd
d t	ddD  }tjj|d W d    n1 sw   Y  |   t” d}tjj|d W d    n1 s»w   Y  |   t” g d¢d g}tjj|d W d    n1 sŽw   Y  |   t” g d¢}tjj|d W d    d S 1 s’w   Y  d S )NrÓ   )rć   rŌ   r   rS   rÕ   r;   r   rÖ   c                 S   r×   r   r   rŲ   r   r   r   rĘ     rŚ   z=DisplayModuleTest.test_set_palette_kwargs.<locals>.<listcomp>rŪ   rÜ   rŻ   rß   rą   rā   r   r   r   Śtest_set_palette_kwargss  s>   žžžžžž"žz)DisplayModuleTest.test_set_palette_kwargsz,requires the SDL_VIDEODRIVER to be non dummyc                 C   sę   t j ”  |  t j” t j ”  W d   n1 sw   Y  t j ”  d}t j |”}zt j ”  W n t jyC   |  ”  Y dS w t j ” dkre| 	” | 
” ft jjdt jddv }|  |d” dS |  | 	” | 
” f|” dS )zTest for toggle fullscreenNr(   r;   r   r   T)r   r   r   r$   r%   Śtoggle_fullscreenr   r   r   Z	get_widthZ
get_heightr   r   r   )r
   Zwidth_heightZ	test_surfŚbooleanr   r   r   Śtest_toggle_fullscreen  s0   
	’
’ž’ż’z(DisplayModuleTest.test_toggle_fullscreenN)5Ś__name__Ś
__module__Ś__qualname__r8   r   r   r   r'   r*   ŚunittestŚskipIfŚosŚenvironr   r6   r9   r@   rB   rC   rH   rK   r[   r\   rd   r~   r   r   r   r   r   r   r”   r„   r©   r«   r¬   rÆ   r°   r»   ræ   Śhasattrr   r   rÉ   rĖ   rĶ   rĪ   rŃ   rŅ   rä   Z	skip_listrå   rč   r   r   r   r   r      s¬    ž
'

#ū
uū
 ū
<ū
Vž

’

’
ž


	


žr   c                   @   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 )ŚDisplayUpdateTestc                 C   s   dS )z)this is used in the interactive subclass.Nr   ©r
   Zqstrr   r   r   r   ¾  s    zDisplayUpdateTest.questionc                 C   s:   t  ”  tj  d”| _| j d” tj  ”  tj ”  d S )N)éō  ró   Śblack)	r   r   r   r   r   r#   r!   r.   r4   r	   r   r   r   r   Į  s
   
zDisplayUpdateTest.setUpc                 C   r   r   r   r	   r   r   r   r   Č  r   zDisplayUpdateTest.tearDownc                 C   sn   | j  d” t dddd”}tj |” t dddd”}tj |” t dddd”}tj |” |  d” dS )z!takes rects with negative values.Śgreenr   r   iö’’’i’’’z(Is the screen green in (0, 0, 100, 100)?N)r   r#   r   ŚRectr   Śupdater   )r
   Śr1Śr2Zr3r   r   r   Śtest_update_negativeĖ  s   z&DisplayUpdateTest.test_update_negativec              	   C   st   | j  d” t dddd”t dddd”t dddd”t dddd”g}tj |” tj ”  |  d| d” dS )	z8only updates the part of the display given by the rects.rõ   r   r   rŠ   rĻ   śIs the screen green in ś?N©	r   r#   r   rö   r   r÷   r.   r4   r   ©r
   Zrectsr   r   r   Śtest_update_sequenceŚ  s   ü
z&DisplayUpdateTest.test_update_sequencec              
   C   sj   | j  d” dt dddd”dt dddd”t dddd”f}tj |” tj ”  |  d| d” dS )	z!None is skipped inside sequences.rõ   Nr   r   rŠ   rĻ   rū   rü   rż   rž   r   r   r   Śtest_update_none_skippedč  s   ū
z*DisplayUpdateTest.test_update_none_skippedc                 C   s0   | j  d” tj d” tj ”  |  d” dS )śdoes NOT update the display.rõ   Nz"Is the screen black and NOT green?©r   r#   r   r   r÷   r.   r4   r   r	   r   r   r   Śtest_update_none÷  s   
z"DisplayUpdateTest.test_update_nonec                 C   s.   | j  d” tj ”  tj ”  |  d” dS )r  rõ   zIs the WHOLE screen green?Nr  r	   r   r   r   Śtest_update_no_argsž  s   

z%DisplayUpdateTest.test_update_no_argsc                 C   s6   | j  d” tj dddd” tj ”  |  d” dS )z-updates the display using the args as a rect.rõ   r   z,Is the screen green in (100, 100, 100, 100)?Nr  r	   r   r   r   Śtest_update_args  s   
z"DisplayUpdateTest.test_update_argsc                 C   s|   |   t” tj dddd” W d   n1 sw   Y  |   t” tj g d¢” W d   dS 1 s7w   Y  dS )z*raises a ValueError when inputs are wrong.r   ŚasdfN)r   r  r   r   )r$   rį   r   r   r÷   r	   r   r   r   Śtest_update_incorrect_args  s   ’"’z,DisplayUpdateTest.test_update_incorrect_argsc                 C   sF   t j ”  |  t j” t j ”  W d   dS 1 sw   Y  dS )zraises a pygame.error.N)r   r   r   r$   r%   r÷   r	   r   r   r   Śtest_update_no_init  s   
"’z%DisplayUpdateTest.test_update_no_initN)ré   rź   rė   r   r   r   rś   r’   r   r  r  r  r  r  r   r   r   r   rń   ½  s    	rń   c                   @   s   e Zd ZdZdgZdd ZdS )ŚDisplayUpdateInteractiveTestzFBecause we want these tests to run as interactive and not interactive.Śinteractivec                 C   s   t | dS )z9since this is the interactive subclass we ask a question.Nr   rņ   r   r   r   r   "  s   z%DisplayUpdateInteractiveTest.questionN)ré   rź   rė   Ś__doc__Ś__tags__r   r   r   r   r   r	    s    r	  c                   @   s"   e Zd ZdgZdd Zdd ZdS )ŚDisplayInteractiveTestr
  c                 C   sv   dt jd< tj ”  tj ”  t d”}| d” tj |” tj 	d”}tj 
d” td}|  |” tj ”  d S )Nś100,250ŚSDL_VIDEO_WINDOW_POS)rV   rV   )rŪ   r   r   ©i  r   z Is the window icon a red square?zIs the display icon red square?)rī   rļ   r   r   r   r   r"   r#   Zset_iconr   r=   r   rI   )r
   Z	test_iconr   Śresponser   r   r   Śtest_set_icon_interactive*  s   





z0DisplayInteractiveTest.test_set_icon_interactivec                 C   sŗ   dt jd< tj ”  tj ”  tj d”}| d” dd tddD }d	|d
< dd tddD }d}tj 	|||”rCtj 
”  d}|rVtd}|  |” tj 	|||” tj ”  d S )Nr  r  r  )r   r   r   c                 S   ó   g | ]}|d  qS rĆ   r   rŲ   r   r   r   rĘ   C  rĒ   z>DisplayInteractiveTest.test_set_gamma_ramp.<locals>.<listcomp>r   rĮ   i   r   c                 S   r  rĆ   r   rŲ   r   r   r   rĘ   E  rĒ   FTz%Is the window background tinted blue?)rī   rļ   r   r   r   r   r   r#   r1   rĄ   r÷   r   rI   )r
   r   Z	blue_rampZnormal_rampZgamma_successr  r   r   r   rÉ   ;  s"   





z*DisplayInteractiveTest.test_set_gamma_rampN)ré   rź   rė   r  r  rÉ   r   r   r   r   r  '  s    r  c                   @   sP   e Zd ZdgZdZdZdZdZdZdd Z	dd	 Z
dd
dZdd Zdd ZdS )ŚFullscreenToggleTestsr
  NFi   iX  c                 C   s|   t  ”  tjdkrt jj| j| jft jd| _	nt j | j| jf”| _	t j 
d” | j	 d” t j ”  t j d d”| _d S )NŚwin32rØ   zFullscreen Tests)rŪ   rŪ   rŪ   rV   )r   r   ŚsysŚplatformr   r   ŚWIDTHŚHEIGHTrŖ   r   r=   r#   r!   ŚfontZFontr	   r   r   r   r   _  s   

’
zFullscreenToggleTests.setUpc                 C   s   | j rtj ”  t ”  d S r   )Śisfullscreenr   r   rę   r   r	   r   r   r   r   n  s   
zFullscreenToggleTests.tearDownc                 C   sģ   d}|r| j stj ”  d| _ d}n| j rtj ”  d| _ d}| j |dd”}| j || jd | j 	|”d d  d	f” tj 
”  	 tj ” D ],}|jtjkrk|jtjkrY dS |jtjkrb dS |jtjkrk dS |jtjkrt dS qHqC)
NŚ TzIs this in fullscreen? [y/n]FzIs this not in fullscreen [y/n])r   r   r   r   r   r   )r  r   r   rę   r  Śrenderr   Zblitr  r¤   r!   r.   r   r   ZKEYDOWNŚkeyZK_ESCAPEZK_yZK_nZQUIT)r
   Ś
fullscreenŚtextŚsr.   r   r   r   Śvisual_tests  s4   

,
’÷z!FullscreenToggleTests.visual_testc                 C   ó   |   | jdd” d S )NT©r  ©rI   r"  r	   r   r   r   Śtest_fullscreen_true  r­   z*FullscreenToggleTests.test_fullscreen_truec                 C   r#  )NFr$  r%  r	   r   r   r   Śtest_fullscreen_false  r­   z+FullscreenToggleTests.test_fullscreen_false)F)ré   rź   rė   r  r   r  r  r  r  r   r   r"  r&  r'  r   r   r   r   r  U  s    
r  r+   r,   re   c                   @   ó   e Zd Zdd ZdS )ŚDisplayOpenGLTestc                 C   s.   t j ”  t j dt j”}|  d| ” ” dS )z[returns a surface with the same size requested.
        |tags:display,slow,opengl|
        r(   N)r   r   r   r   rj   r   rY   r&   r   r   r   Śtest_screen_size_opengl  s   
z)DisplayOpenGLTest.test_screen_size_openglN)ré   rź   rė   r*  r   r   r   r   r)    s    r)  c                   @   r(  )ŚX11CrashTestc                 C   s6   t j ”  t j ”  t j dd”}|  d| ” ” d S )Nr(   r   )r   r   r   r   r   r   rY   r&   r   r   r   Śtest_x11_set_mode_crash_gh1654„  s   

z+X11CrashTest.test_x11_set_mode_crash_gh1654N)ré   rź   rė   r,  r   r   r   r   r+  ¤  s    r+  Ś__main__)rģ   rī   r  r2   r   Zpygame.transformZpygame.tests.test_utilsr   r   ZTestCaser   rń   r	  r  r  rķ   rļ   r   r)  r+  ré   Śmainr   r   r   r   Ś<module>   s8           7`
.Až

’