
    iY                        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e j                        Z
 G d de j                        Z G d d	e      Z G d
 de j                        Z G d de j                        Z e j                  ej                   j#                  d      dk(  d       G d de j                               Z G d de j                        Zedk(  r e j*                          yy)    Nquestion)displayc                      e Zd ZdZd Zd Zd Zd Zd Z e	j                  ej                  j                  d      dk(  d	      d
        Zd Zd Zd Zd Zd Zd Z e	j                  dd      d        Zd Zd Z e	j                  dd      d        Z e	j                  dd      d        Z e	j                  dd      d        Z e	j                  dd      d        Z e	j                  ej                  j                  d      dv d      d        Zd Zd  Zd! Zd" Z d# Z!d$ Z"d% Z#d& Z$d' Z% e	j                  ej                  j                  d      dk(  d(      d)        Z& e	j                  ej                  j                  d      dk(  d(      d*        Z' e	j                   e(e)jT                  d+       d,      d-        Z+d. Z,d/ Z-d0 Z.d1 Z/d2 Z0 e	j                  dd3      d4        Z1dd5gZ2 e	j                  dd3      d6        Z3dd5gZ2 e	j                  ej                  j                  d      e2v d7      d8        Z4y9):DisplayModuleTestzpygame windowc                 ,    t        j                          y N)r   initselfs    c/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pygame/tests/display_test.pysetUpzDisplayModuleTest.setUp           c                 ,    t        j                          y r	   r   quitr   s    r   tearDownzDisplayModuleTest.tearDown   r   r   c                    t         j                  j                         }| j                  |j                  d       | j                  |j
                  d       t         j                  j                  d      }t         j                  j                         }| j                  |j                  d       | j                  |j
                  d       y )N   r   r   )pygamer   InfoassertNotEqual	current_h	current_wset_modeassertEqual)r   infscreens      r   	test_InfozDisplayModuleTest.test_Info   s    nn!!#CMM2.CMM2. ((4nn!!#,,r   c                    t         j                  j                  d      }| j                  t         j                  j	                                t         j
                  j                  |d       | j                  t         j                  j	                                t         j                  j                          | j                  t         j                        5  t         j                  j	                          d d d        ~| j                  t         j                        5  t         j                  j	                          d d d        y # 1 sw Y   QxY w# 1 sw Y   y xY w)Nd   r%   )B   r&   5   )
r   r   r   assertIsNoneflipSurfacefillr   assertRaiseserrorr   r!   s     r   	test_flipzDisplayModuleTest.test_flip!   s    ((4 	&..--/0 	FL1&..--/0 	v||, 	$^^  "	$ v||, 	$^^  "	$ 	$	$ 	$
	$ 	$s   EEEEc                 F   t         j                  j                          | j                  t         j                  j	                         d       t         j                  j                          t         j                  j                  d       | j                  t         j                  j	                         d       t         j                  j                          t         j                  j                          | j                  t         j                  j	                         d       y)zTest the get_active functionFi  i  TN)r   r   r   r   
get_activer
   r   r   s    r   test_get_activez!DisplayModuleTest.test_get_active5   s     	224e< 	
+224d; 	224e<r   SDL_VIDEODRIVERdummyz4requires the SDL_VIDEODRIVER to be a non dummy valuec                    t         j                  j                  d       t         j                  j	                          t         j                  j                          t        d      D ]5  }t        j                  d       t         j                  j                          7 | j                  t         j                  j                         d       y)z-Test the get_active function after an iconifyr1   r%   {Gz?FN)r   r   r   eventcleariconifyrangetimesleeppumpr   r2   )r   _s     r   test_get_active_iconifyz)DisplayModuleTest.test_get_active_iconifyG   s     	
+ s 	 AJJtLL	  	224e<r   c                     t        j                  d      }| j                  t        j                         d   | j                         y )Nr$   r   )r   r   r   get_captiondefault_captionr.   s     r   test_get_captionz"DisplayModuleTest.test_get_caption[   s6    !!*-,,.q143G3GHr   c                    d}t        j                  d      }| j                  t        j                  |             | j	                  t        j
                         d   |       | j	                  t        j
                         d   |       y )Ntestr$   r      r   r   r(   set_captionr   rB   r   TEST_CAPTIONr!   s      r   test_set_captionz"DisplayModuleTest.test_set_caption`   sl    !!*-'--l;<,,.q1<@,,.q1<@r   c                    d}t        j                  d      }| j                  t        j                  |             | j	                  t        j
                         d   |       | j	                  t        j
                         d   |       y )NrF   r$   )titler   rG   rH   rJ   s      r   test_set_caption_kwargsz)DisplayModuleTest.test_set_caption_kwargsh   sl    !!*-'--LAB,,.q1<@,,.q1<@r   c                     d}t        j                  |       | j                  t        j                         d   |       y )Nu   台r   )r   rI   r   rB   )r   rK   s     r   test_caption_unicodez&DisplayModuleTest.test_caption_unicodep   s3    L),,.q1<@r   c                    g d}t        j                         }| j                  ||       t        j                          | j	                  t
        j                        5  t        j                         }d d d        y # 1 sw Y   y xY w)N)aalibandroidarmcocoadgadirectxdirectfbr5   
emscriptenfbconggihaikukhronoskmsdrmnacl	offscreenpandorapspqnx	raspberrysvgalibuikitvglvivantewaylandwindowswindibwinrtx11)r   
get_driverassertInr   r,   r   r-   )r   driversdrivers      r   test_get_driverz!DisplayModuleTest.test_get_driveru   se    
> ##%fg&v||, 	*'')F	* 	* 	*s   A<<Bc                 J    | j                  t        j                                y)z;Ensures the module's initialization state can be retrieved.N)
assertTruer   get_initr   s    r   test_get_initzDisplayModuleTest.test_get_init   s     	((*+r   TzSDL2 issuesc                    dfdD        D ]  }dD ]  }t        j                  |d|      }t        j                   j                         }| j	                  ||       | j                  |t        j                         | j	                  |j                         |       | j	                  |j                         |         y)z5Ensures get_surface gets the current display surface.)rG      r%   c              3   4   K   | ]  }D ]  }||f 
  y wr	    ).0whlengthss      r   	<genexpr>z5DisplayModuleTest.test_get_surface.<locals>.<genexpr>   s!     GwG!q!fGfGs   )             r   N)	r   r   r   get_surfacer   assertIsInstancer*   get_sizeget_bitsize)r   expected_sizeexpected_depthexpected_surfacesurfacer   s        @r   test_get_surfacez"DisplayModuleTest.test_get_surface   s     GgG 		HM"1 H#*#3#3M1n#U  ..446  *:;%%gv~~>  !1!1!3]C  !4!4!6GH		Hr   c                 b    t         j                  j                         }| j                  |       y)z;Ensures get_surface handles the display mode not being set.N)r   r   r   r(   )r   r   s     r   test_get_surface__mode_not_setz0DisplayModuleTest.test_get_surface__mode_not_set   s"    ..,,.'"r   c                     t        j                         }| j                  |t               h d}t	        |j                               j                  |      }| j                  |       y )N>   dfbhdcdatahglrcwindowr   r   fswindowwmwindow	hinstance	lock_func
connection
taskHandlecolorbufferframebufferunlock_funcwimpVersionshell_surfaceresolveFramebuffer)r   get_wm_infor   dictsetkeys
differenceassertFalse)r   wm_infowm_info_potential_keyswm_info_remaining_keyss       r   test_get_wm_infoz"DisplayModuleTest.test_get_wm_info   sX    %%'gt,"
0 "%W\\^!4!?!?@V!W 	/0r   zJskipping for all because some failures on rasppi and maybe other platforms-OpenGL requires a non-"dummy" SDL_VIDEODRIVERc                 z   t        j                  dt        j                        }g }|j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                                |j	                  t        j                   j                  t        j"                               |j	                  t        j                   j                  t        j$                               |j	                  t        j                   j                  t        j&                               |j	                  t        j                   j                  t        j(                               |j	                  t        j                   j                  t        j*                               |j	                  t        j                   j                  t        j,                               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       g d}g }|j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                                |j	                  t        j                   j                  t        j"                               |j	                  t        j                   j                  t        j$                               |j	                  t        j                   j                  t        j&                               |j	                  t        j                   j                  t        j(                               |j	                  t        j                   j                  t        j*                               |j	                  t        j                   j                  t        j,                               t1        t3        |            D ])  }| j5                  ||   ||   k(  xs ||   ||   k(         + | j7                  t8              5  t        j                   j                  d       d d d        y # 1 sw Y   y xY w)	Nr   r   r   r   r   rG   r   r   r   r   r   r   r   r   rG   rG   r   r   rG   rG   r   r   r   rG   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_STEREOGL_ACCELERATED_VISUALGL_CONTEXT_MAJOR_VERSIONGL_CONTEXT_MINOR_VERSIONGL_CONTEXT_FLAGSGL_CONTEXT_PROFILE_MASKGL_SHARE_WITH_CURRENT_CONTEXTGL_FRAMEBUFFER_SRGB_CAPABLEgl_set_attributer;   lenru   r,   	TypeErrorr   r!   original_values
set_values
get_valuesis         r   test_gl_get_attributez'DisplayModuleTest.test_gl_get_attribute   sg    !!&&--8 v~~>>v?S?STUv~~>>v?S?STUv~~>>v?U?UVWNN++F,D,DE	
 	NN++F,F,FG	
 	NN++F,E,EF	
 	NN++F,F,FG	
 	NN++F,H,HI	
 	NN++F,H,HI	
 	v~~>>v?O?OPQNN++F,H,HI	
 	NN++F,K,KL	
 	NN++F,K,KL	
 	v~~>>v?V?VWXNN++F,J,JK	
 	NN++F,P,PQ	
 	NN++F,N,NO	
 	''(<(<a@''(<(<bA''(>(>B''(@(@"E''(B(BBG''(A(A2F''(B(BBG''(D(DaH''(D(DaH''(8(8!<''(D(DaH''(G(GK''(G(GK''(?(?C''(F(FJ''(L(LaP''(J(JAN Q
 
&..99&:N:NOP&..99&:N:NOP&..99&:P:PQR&..99&:R:RST&..99&:T:TUV&..99&:S:STU&..99&:T:TUV&..99&:V:VWX&..99&:V:VWX&..99&:J:JKL&..99&:V:VWXNN++F,K,KL	
 	NN++F,K,KL	
 	&..99&:Q:QRSNN++F,J,JK	
 	NN++F,P,PQ	
 	NN++F,N,NO	
 s?+, 	AOOA/!"44 4qMZ]2	 y) 	5NN++G4	5 	5 	5s    n11n:c                    t        j                  dt        j                        }g }|j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                                |j	                  t        j                   j                  t        j"                               |j	                  t        j                   j                  t        j$                               |j	                  t        j                   j                  t        j&                               |j	                  t        j                   j                  t        j(                               |j	                  t        j                   j                  t        j*                               |j	                  t        j                   j                  t        j,                               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       g d	}g }|j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                               |j	                  t        j                   j                  t        j                                |j	                  t        j                   j                  t        j"                               |j	                  t        j                   j                  t        j$                               |j	                  t        j                   j                  t        j&                               |j	                  t        j                   j                  t        j(                               |j	                  t        j                   j                  t        j*                               |j	                  t        j                   j                  t        j,                               t1        t3        |            D ])  }| j5                  ||   ||   k(  xs ||   ||   k(         + | j7                  t8              5  t        j                   j                  d
       d d d        y # 1 sw Y   y xY w)Nr   flagr   r   valuer   r   rG   r   r   r   r   r   s         r   test_gl_get_attribute_kwargsz.DisplayModuleTest.test_gl_get_attribute_kwargsW  sI    !!&&--8 NN++1E1E+F	
 	NN++1E1E+F	
 	NN++1G1G+H	
 	NN++1I1I+J	
 	NN++1K1K+L	
 	NN++1J1J+K	
 	NN++1K1K+L	
 	NN++1M1M+N	
 	NN++1M1M+N	
 	v~~>>FDTDT>UVNN++1M1M+N	
 	NN++1P1P+Q	
 	NN++1P1P+Q	
 	NN++1H1H+I	
 	NN++1O1O+P	
 	NN++1U1U+V	
 	NN++1S1S+T	
 	''V-A-A'K''V-A-A'L''V-C-C1'M''V-E-ER'P''V-G-Gr'R''V-F-Fb'Q''V-G-Gr'R''V-I-IQR'S''V-I-IQR'S''V-=-=Q'G''V-I-IQR'S''V-L-LTU'V''V-L-LTU'V''V-D-DA'N''V-K-KST'U''55Q 	( 	
 	''331 	( 	

 Q
 
&..99v?S?S9TU&..99v?S?S9TU&..99v?U?U9VWNN++1I1I+J	
 	NN++1K1K+L	
 	NN++1J1J+K	
 	NN++1K1K+L	
 	NN++1M1M+N	
 	NN++1M1M+N	
 	&..99v?O?O9PQNN++1M1M+N	
 	NN++1P1P+Q	
 	NN++1P1P+Q	
 	&..99v?V?V9WXNN++1O1O+P	
 	NN++1U1U+V	
 	NN++1S1S+T	
 s?+, 	AOOA/!"44 4qMZ]2	 y) 	5NN++G4	5 	5 	5s   ; o$$o-c                 	   t        j                  dt        j                        }g 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          g }|j                  t        j                   j!                  t        j
                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               t#        t%        |            D ]  }| j'                  ||   ||   k(          | j)                  t*              5  t        j                   j!                  d       d d d        y # 1 sw Y   y xY w)Nr   
r   r   r   r   r   r   r   rG   rG   r   r   rG            ry         r   	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   r   ru   r,   r   r   r!   r   r   r   s        r   test_gl_set_attributez'DisplayModuleTest.test_gl_set_attribute  s    2 !!&&--8 9

 	''(<(<jmL''(<(<jmL''(>(>
1N''(@(@*Q-P''(B(BJqMR''(A(A:a=Q''(B(BJqMR''(D(DjQRmT''(D(DjQRmT''(8(8*Q-H 
&..99&:N:NOP&..99&:N:NOP&..99&:P:PQR&..99&:R:RST&..99&:T:TUV&..99&:S:STU&..99&:T:TUV&..99&:V:VWX&..99&:V:VWX&..99&:J:JKL s:' 	<AOOJqMZ]:;	< y) 	5NN++G4	5 	5 	5s   5 SS'c                 	   t        j                  dt        j                        }g 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          g }|j                  t        j                   j!                  t        j
                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               |j                  t        j                   j!                  t        j                               t#        t%        |            D ]  }| j'                  ||   ||   k(          | j)                  t*              5  t        j                   j!                  d       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   rG   r   r   r   ry   r   r   r   r   r   r   r   r   s        r   test_gl_set_attribute_kwargsz.DisplayModuleTest.test_gl_set_attribute_kwargs0  s   2 !!&&--8 9

 	''V-A-ATU'W''V-A-ATU'W''''z!} 	( 	
 	''))A 	( 	
 	''++:a= 	( 	
 	''***Q- 	( 	
 	''++:a= 	( 	
 	''--Z] 	( 	
 	''--Z] 	( 	
 	''V-=-=ZPQ]'S 
&..99v?S?S9TU&..99v?S?S9TU&..99v?U?U9VWNN++1I1I+J	
 	NN++1K1K+L	
 	NN++1J1J+K	
 	NN++1K1K+L	
 	NN++1M1M+N	
 	NN++1M1M+N	
 	&..99v?O?O9PQ s:' 	<AOOJqMZ]:;	< y) 	5NN++G4	5 	5 	5s   	 S22S;)r5   rT   z9iconify is only supported on some video drivers/platformsc                 
   t         j                  j                  d       | j                  t         j                  j	                         d       t         j                  j                         }|rdx}}t        d      D ]  }t        j                  d       t         j                  j                         D ]j  }|j                  t         j                  k(  r+|j                  s|j                  t         j                  k(  rd}|j                  t         j                   k(  sid}l  | j#                  |       | j#                  |       | j%                  t         j                  j	                                y | j'                  d       y )Nr1   TF2   r7   z3Iconify not supported on this platform, please skip)r   r   r   r   r2   r:   r;   r<   r=   r8   gettypeACTIVEEVENTgainstate	APPACTIVEWINDOWMINIMIZEDru   r   fail)r   successactive_eventwindow_minimized_eventr?   r8   s         r   test_iconifyzDisplayModuleTest.test_iconify  s   
 	
+224d;..((*499L1 2Y 6

4 #\\--/ 6EzzV%7%77$zzekkV=M=M.M+/LzzV%;%;;15.66 OO23OOL)V^^6689 IIKLr   c                     t        j                          t        j                          | j                  t        j                                y)z4Ensures the module is initialized after init called.N)r   r   r
   ru   rv   r   s    r   	test_initzDisplayModuleTest.test_init  s+     	((*+r   c                     t        j                          t        j                          | j                  t        j                                y)z<Ensures the module is initialized after multiple init calls.N)r   r
   ru   rv   r   s    r   test_init__multiplez%DisplayModuleTest.test_init__multiple  s)    ((*+r   c                    t         j                  j                  dt         j                  d      }|dk7  rC| j	                  t        |d         d       | j	                  t        |d   d         t               t         j                  j                         }|dk7  rp| j	                  t        |d         d       | j	                  t        |d   d         t               | j	                  t        |      t        t        |                   t         j                  j                  ddd      }|dk7  rD| j	                  t        |d         d       | j	                  t        |d   d         t               y y )Nr   depthflagsr   r   r   )	r   r   
list_modes
FULLSCREENr   r   r   intr   )r   modess     r   test_list_modesz!DisplayModuleTest.test_list_modes  s&   ))9J9JTU)VB;Sq]A.T%(1+.4))+B;Sq]A.T%(1+.4SZSZ9))A)FB;Sq]A.T%(1+.4 r   c                 x   t         j                  j                  d       t         j                  j                         }|dk7  r4|d   }| j	                  t         j                  j                  |      d       t         j                  j                  ddd       t         j                  j                  dddd       y )Nr   r   r   r   )r   r   r   )r   r   mode_okr   r   r   r   sizes      r   test_mode_okzDisplayModuleTest.test_mode_ok  s    z*))+B;8D 6 6t <a@z1b1z"aHr   c                     t         j                  j                         }|dk7  rE|d   }| j                  t         j                  j	                  |t         j
                        d       y y Nr   r   r   )r   r   r   r   r   r   r   s      r   test_mode_ok_fullscreenz)DisplayModuleTest.test_mode_ok_fullscreen  sV    ))+B;8D&&t63D3D&Eq r   c                     t         j                  j                         }|dk7  rE|d   }| j                  t         j                  j	                  |t         j
                        d       y y r  )r   r   r   r   r   SCALEDr   s      r   test_mode_ok_scaledz%DisplayModuleTest.test_mode_ok_scaled  sR    ))+B;8D 6 6t6== 6 QSTU r   c                 `    | j                  t        j                  j                         d       y )Nr   )assertGreaterr   r   get_num_displaysr   s    r   test_get_num_displaysz'DisplayModuleTest.test_get_num_displays  s    6>>::<a@r   c                 r    t        j                          | j                  t        j                                y)z8Ensures the module is not initialized after quit called.Nr   r   r   rv   r   s    r   	test_quitzDisplayModuleTest.test_quit  s"    ))+,r   c                     t        j                          t        j                          | j                  t        j                                y)z@Ensures the module is not initialized after multiple quit calls.Nr  r   s    r   test_quit__multiplez%DisplayModuleTest.test_quit__multiple  s+    ))+,r   zNeeds a not dummy videodriverc                    t         j                  j                  d       g d}|D ]  }| j                  |      5  | j	                  t
              5  | j                  t         j                  j                  |      d       d d d        | j                  t         j                  j                  |      d       d d d         y # 1 sw Y   CxY w# 1 sw Y   xY w)NrG   rG   )      ?      ?g)\(?      ?)gammaT)r   r   r   subTestassertWarnsDeprecationWarningr   	set_gamma)r   gammasr  s      r   test_set_gammaz DisplayModuleTest.test_set_gamma  s     	'' 	HEE* H%%&89 L$$V^^%=%=e%DdKL  !9!9%!@$GH H	HL LH Hs#   C0C7CCCC	c           	         t         j                  j                  d       g d}|D ]T  \  }}}| j                  |||      5  | j	                  t         j                  j                  |||      d       d d d        V y # 1 sw Y   axY w)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!  s        r   test_set_gamma__tuplez'DisplayModuleTest.test_set_gamma__tuple  s     	'G 	JGAq!Q!, J  !9!9!Q!BDIJ J	JJ Js   2A>>B	set_gamma_rampz0Not all systems and hardware support gamma rampsc                 "   t         j                  j                  d       t        t	        d            }|D cg c]  }|dz   	 }}|D cg c]  }|dz   	 }}| j                  t              5  t         j                  j                  |||      }d d d        r1| j                  t         j                  j                  |||             y | j                  t         j                  j                  |||             y c c}w c c}w # 1 sw Y   wxY w)N)ry   ry      )
r   r   r   listr;   r  r  r#  ru   r   )r   r  numberr   r!  isSupporteds         r   test_set_gamma_rampz%DisplayModuleTest.test_set_gamma_ramp  s    " 	's()*fVc\**()*fVc\**01 	A ..771a@K	AOOFNN99!QBCV^^::1aCD +*	A 	As   C;
D -"DDc                 J    t         j                  j                  dddd       y )Nr  r   r   r   r   r   )r   r   r   r   s    r   test_set_mode_kwargsz&DisplayModuleTest.test_set_mode_kwargs)  s    V1AqIr   c                    t         j                  j                  dt         j                  dd      }t         j                  j	                         }| j                  |d   |j                         d   z  dd       | j                  |d   |j                         d   z  dd       | j                  |d   |j                         d   z  |d   |j                         d   z         y )Nr  r   r+  z6window width should be a multiple of the surface widthrG   z8window height should be a multiple of the surface height)r   r   r   r  get_window_sizer   r   )r   surfwinsizes      r   test_set_mode_scaledz&DisplayModuleTest.test_set_mode_scaled,  s    ~~&&v}}Aq ' 
 ..002AJ++D	

 	AJ++F	

 	AJ++WQZ$--/!:L-L	
r   c                 j    t         j                  j                  t        j                  dd             y )NrG   )r   r   r   Vector2r   s    r   test_set_mode_vector2z'DisplayModuleTest.test_set_mode_vector2?  s    q! 45r   c                    t         j                  j                  dt         j                        }| j	                  |j                         d       t         j                  j                  d      }| j	                  |j                         d       y)z8Ensures a window created with SCALED can become smaller.),  r6  )   r7  N)r   r   r   r  r   r   r.   s     r   test_set_mode_unscaledz(DisplayModuleTest.test_set_mode_unscaledB  s`     ((V]]C*J7((4*J7r   c                    t         j                  j                  d       | j                  t         j                  j	                                t         j                  j                  d       | j                  t         j                  j	                                t         j                  j                          | j                  t         j                  j	                                y )NTF)r   r   set_allow_screensaverru   get_allow_screensaverr   r   s    r   test_screensaver_supportz*DisplayModuleTest.test_screensaver_supportL  s    ,,T2<<>?,,U3==?@,,.<<>?r   z#set_palette() not supported in SDL2c           
      J   | j                  t        j                        5  g d}t        j                  j	                  |       d d d        t        j                  j                  ddd       g }| j                  t        j                  j	                  |             | j                  t              5  d}t        j                  j	                  |       d d d        | j                  t              5  ddgddgg}t        j                  j	                  |       d d d        | j                  t              5  g dgt        dd	      D cg c]	  }|||||g c}z   }t        j                  j	                  |       d d d        | j                  t              5  d
}t        j                  j	                  |       d d d        | j                  t              5  g ddz  g}t        j                  j	                  |       d d d        | j                  t              5  g d}t        j                  j	                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   LxY wc c}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrG   r   r   i   i   r   r      rG   r   r   r   r   r   r      qwerty{   rE  rE  '  
r,   r   r-   r   set_paletter   r(   
ValueErrorr   r;   r   palettexs      r   test_set_palettez"DisplayModuleTest.test_set_paletteU  s"   v||, 	0GNN&&w/	0 	Q2&..44W=>z* 	0GNN&&w/	0 y) 	01v1v&GNN&&w/	0 y) 	0&'E!SM*RqAq!Q?*RRGNN&&w/	0 y) 	0GNN&&w/	0 y) 	0&./GNN&&w/	0 y) 	0GNN&&w/	0 	0-	0 	0	0 	0	0 	0 +S	0 	0	0 	0	0 	0	0 	0se   $I	2"I1(I#6I5	I0$I5"J(J$J	II #I-0I55I>J
JJ"rT   c           
      Z   | j                  t        j                        5  g d}t        j                  j	                  |       d d d        t        j                  j                  ddd       g }| j                  t        j                  j	                  |             | j                  t              5  d}t        j                  j	                  |       d d d        | j                  t              5  ddgddgg}t        j                  j	                  |       d d d        | j                  t              5  g d	gt        dd
      D cg c]	  }|||||g c}z   }t        j                  j	                  |       d d d        | j                  t              5  d}t        j                  j	                  |       d d d        | j                  t              5  g ddz  g}t        j                  j	                  |       d d d        | j                  t              5  g d}t        j                  j	                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   PxY wc c}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr>  )rK  r?  r   r   r@  rG   r   rA  rB  rC  rD  rF  rG  rJ  s      r   test_set_palette_kwargsz)DisplayModuleTest.test_set_palette_kwargss  s:   v||, 	8GNN&&w&7	8 	Q2&..44W4EFz* 	8GNN&&w&7	8 y) 	81v1v&GNN&&w&7	8 y) 	8&'E!SM*RqAq!Q?*RRGNN&&w&7	8 y) 	8GNN&&w&7	8 y) 	8&./GNN&&w&7	8 y) 	8GNN&&w&7	8 	8-	8 	8	8 	8	8 	8 +S	8 	8	8 	8	8 	8	8 	8se   %I4#I4)I+:I=I8%I=#J	)J#%J!II(+I58I==J	JJ!J*z,requires the SDL_VIDEODRIVER to be non dummyc                 \   t         j                  j                          | j                  t         j                        5  t         j                  j                          ddd       t         j                  j                          d}t         j                  j                  |      }	 t         j                  j                          t         j                  j                         dk(  rc|j                         |j                         ft         j                  j                  dt         j                  d      v }| j                  |d       y| j                  |j                         |j                         f|       y# 1 sw Y   xY w# t         j                  $ r | j                          Y yw xY w)zTest for toggle fullscreenNr1   rG   r   r   T)r   r   r   r,   r-   toggle_fullscreenr
   r   	get_width
get_heightr   r   r   r   )r   width_height	test_surfbooleans       r   test_toggle_fullscreenz(DisplayModuleTest.test_toggle_fullscreen  sG    	v||, 	/NN,,.	/ 	!NN++L9		NN,,. ~~//1Q6'')((* ^^..6#4#4a /    $/   ((*I,@,@,BC\;	/ 	/ || 	IIK	s   E8%F 8F#F+*F+N)5__name__
__module____qualname__rC   r   r   r"   r/   r3   unittestskipIfosenvironr   r@   rD   rL   rO   rQ   rs   rw   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r"  hasattrr   r   r)  r,  r1  r4  r8  r<  rM  	skip_listrO  rW  r{   r   r   r   r      s   %O	-$(=$ X__


()W4>=	= I
AAA
%*N, X__T=)H *H#!1F X__X 	8s5s5j X__X 	8M5M5^ X__X 	8:5:5x X__X 	8T5T5l X__


()-AACM	M6,,5$IVA-- X__


()W46UHH X__


()W46UJJ X__FNN$455:E	E0J
&68@ X__T@A0 B06 )$IX__T@A8 B86 )$IX__


()Y66%	%r   r   c                   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)DisplayUpdateTestc                      y)z)this is used in the interactive subclass.Nr{   r   qstrs     r   r   zDisplayUpdateTest.question  s    r   c                 "   t        j                          t        j                   j                  d      | _        | j                  j                  d       t        j                   j                          t        j                  j                          y )N)  rg  black)	r   r
   r   r   r!   r+   r)   r8   r>   r   s    r   r   zDisplayUpdateTest.setUp  sS    nn--j9!r   c                 ,    t        j                          y r	   r   r   s    r   r   zDisplayUpdateTest.tearDown  r   r   c                    | j                   j                  d       t        j                  dddd      }t        j                  j                  |       t        j                  dddd      }t        j                  j                  |       t        j                  dddd      }t        j                  j                  |       | j                  d       y)z!takes rects with negative values.greenr   r%   iiz(Is the screen green in (0, 0, 100, 100)?N)r!   r+   r   Rectr   updater   )r   r1r2r3s       r   test_update_negativez&DisplayUpdateTest.test_update_negative  s    ![[AsC(b![[ac*b![[at,b!@Ar   c           	         | j                   j                  d       t        j                  dddd      t        j                  dddd      t        j                  dddd      t        j                  dddd      g}t        j                  j                  |       t        j                  j                          | j                  d| d       y)	z8only updates the part of the display given by the rects.rk  r   r%   r7  r6  Is the screen green in ?N	r!   r+   r   rl  r   rm  r8   r>   r   r   rectss     r   test_update_sequencez&DisplayUpdateTest.test_update_sequence  s    !KK1c3'KKQS)KKQS)KKS#s+	
 	e$/wa89r   c           
      p   | j                   j                  d       dt        j                  dddd      dt        j                  dddd      t        j                  dddd      f}t        j                  j                  |       t        j                  j                          | j                  d| d       y)	z!None is skipped inside sequences.rk  Nr%   r   r7  r6  rs  rt  ru  rv  s     r   test_update_none_skippedz*DisplayUpdateTest.test_update_none_skipped  s    !KKQS)KKQS)KKS#s+
 	e$/wa89r   c                     | j                   j                  d       t        j                  j	                  d       t        j
                  j                          | j                  d       y)does NOT update the display.rk  Nz"Is the screen black and NOT green?r!   r+   r   r   rm  r8   r>   r   r   s    r   test_update_nonez"DisplayUpdateTest.test_update_none  sC    !d#:;r   c                     | j                   j                  d       t        j                  j	                          t        j
                  j                          | j                  d       y)r|  rk  zIs the WHOLE screen green?Nr}  r   s    r   test_update_no_argsz%DisplayUpdateTest.test_update_no_args  sA    !23r   c                     | j                   j                  d       t        j                  j	                  dddd       t        j
                  j                          | j                  d       y)z-updates the display using the args as a rect.rk  r%   z,Is the screen green in (100, 100, 100, 100)?Nr}  r   s    r   test_update_argsz"DisplayUpdateTest.test_update_args  sI    !c3S1DEr   c                 2   | j                  t              5  t        j                  j	                  dddd       ddd       | j                  t              5  t        j                  j	                  g d       ddd       y# 1 sw Y   IxY w# 1 sw Y   yxY w)z*raises a ValueError when inputs are wrong.r%   asdfN)r%   r  r%   r%   )r,   rI  r   r   rm  r   s    r   test_update_incorrect_argsz,DisplayUpdateTest.test_update_incorrect_args  s|     z* 	9NN!!#vsC8	9 z* 	;NN!!"9:	; 	;	9 	9	; 	;s   #B"BB
Bc                     t         j                  j                          | j                  t         j                        5  t         j                  j                          ddd       y# 1 sw Y   yxY w)zraises a pygame.error.N)r   r   r   r,   r-   rm  r   s    r   test_update_no_initz%DisplayUpdateTest.test_update_no_init  sK     	v||, 	$NN!!#	$ 	$ 	$s   A&&A/N)rX  rY  rZ  r   r   r   rq  rx  rz  r~  r  r  r  r  r{   r   r   rb  rb    s;    8B::<4F;$r   rb  c                       e Zd ZdZdgZd Zy)DisplayUpdateInteractiveTestzFBecause we want these tests to run as interactive and not interactive.interactivec                     t        |       y)z9since this is the interactive subclass we ask a question.Nr   rd  s     r   r   z%DisplayUpdateInteractiveTest.question"  s	    r   N)rX  rY  rZ  __doc____tags__r   r{   r   r   r  r    s    PHr   r  c                       e Zd ZdgZd Zd Zy)DisplayInteractiveTestr  c                    dt         j                  d<   t        j                  j	                          t        j                  j                          t        j                  d      }|j                  d       t        j                  j                  |       t        j                  j                  d      }t        j                  j                  d       t        d      }| j                  |       t        j                  j	                          y )N100,250SDL_VIDEO_WINDOW_POS)r   r   )rB  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+   set_iconr   rI   r   ru   )r   	test_iconr!   responses       r   test_set_icon_interactivez0DisplayInteractiveTest.test_set_icon_interactive*  s    -6

)*NN8,	{#	*((4""#EF=>!r   c                    dt         j                  d<   t        j                  j	                          t        j                  j                          t        j                  j                  d      }|j                  d       t        dd      D cg c]  }|dz  	 }}d|d<   t        dd      D cg c]  }|dz  	 }}d	}t        j                  j                  |||      r t        j                  j                          d
}|r=t        d      }| j                  |       t        j                  j                  |||       t        j                  j	                          y c c}w c c}w )Nr  r  r  )r%   r%   r%   r   r%  i   r%   FTz%Is the window background tinted blue?)r]  r^  r   r   r   r
   r   r+   r;   r#  rm  r   ru   )r   r!   rL  	blue_rampnormal_rampgamma_successr  s          r   r)  z*DisplayInteractiveTest.test_set_gamma_ramp;  s   -6

)*((4O$&+Asm4QW4	4"	#(-a61q3w66>>((k9MNN!!# M GHHOOH%NN))+{KP 56s   E/E#N)rX  rY  rZ  r  r  r)  r{   r   r   r  r  '  s    H"r   r  c                   F    e Zd ZdgZdZdZdZdZdZd Z	d Z
ddZd	 Zd
 Zy)FullscreenToggleTestsr  NFi   iX  c                 V   t        j                          t        j                  dk(  rKt         j                  j                  | j                  | j                  ft         j                        | _	        n:t         j                  j                  | j                  | j                  f      | _	        t         j                  j                  d       | j                  j                  d       t         j                  j                          t         j                  j                  d d      | _        y )Nwin32r  zFullscreen Tests)rB  rB  rB  r   )r   r
   sysplatformr   r   WIDTHHEIGHTr  r!   rI   r+   r)   fontFontr   s    r   r   zFullscreenToggleTests.setUp_  s    <<7" !..11T[[) 2 DK !..114::t{{2KLDK""#56)KK$$T2.	r   c                     | j                   rt        j                  j                          t        j                          y r	   )isfullscreenr   r   rQ  r   r   s    r   r   zFullscreenToggleTests.tearDownn  s$    NN,,.r   c                 d   d}|r4| j                   s%t        j                  j                          d| _         d}n3| j                   r%t        j                  j                          d| _         d}| j                  j                  |dd      }| j                  j                  || j                  dz  | j                  j                  |      d   dz  z
  d	f       t        j                  j                          	 t        j                  j                         D ]  }|j                  t        j                  k(  r]|j                  t        j                   k(  r y|j                  t        j"                  k(  r y|j                  t        j$                  k(  r y|j                  t        j&                  k(  s y )
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   rQ  r  renderr!   blitr  r   r)   r8   r   r   KEYDOWNkeyK_ESCAPEK_yK_nQUIT)r   
fullscreentextsr8   s        r   visual_testz!FullscreenToggleTests.visual_tests  s;   $$002$(!1D  002$)!4DIIT5)4TZZ!^diinnT.B1.E.II3OP))+ 	!::/yyFOO3$yyFJJ.#yyFJJ.$::, 	! r   c                 F    | j                  | j                  d             y )NTr  ru   r  r   s    r   test_fullscreen_truez*FullscreenToggleTests.test_fullscreen_true  s    ((D(9:r   c                 F    | j                  | j                  d             y )NFr  r  r   s    r   test_fullscreen_falsez+FullscreenToggleTests.test_fullscreen_false  s    ((E(:;r   )F)rX  rY  rZ  r  r!   r  r  r  r  r   r   r  r  r  r{   r   r   r  r  U  s;    HFDLEF/
!8;<r   r  r4   r5   r   c                       e Zd Zd Zy)DisplayOpenGLTestc                     t         j                  j                          t         j                  j                  dt         j                        }| j                  d|j                                y)z[returns a surface with the same size requested.
        |tags:display,slow,opengl|
        r1   N)r   r   r
   r   r   r   r   r.   s     r   test_screen_size_openglz)DisplayOpenGLTest.test_screen_size_opengl  sE     	((V]]CV__%67r   N)rX  rY  rZ  r  r{   r   r   r  r    s    
8r   r  c                       e Zd Zd Zy)X11CrashTestc                     t         j                  j                          t         j                  j                          t         j                  j	                  dd      }| j                  d|j                                y )Nr1   r   )r   r   r
   r   r   r   r   r.   s     r   test_x11_set_mode_crash_gh1654z+X11CrashTest.test_x11_set_mode_crash_gh1654  sQ     	((Q7V__%67r   N)rX  rY  rZ  r  r{   r   r   r  r    s    8r   r  __main__)r[  r]  r  r<   r   pygame.transformpygame.tests.test_utilsr   r   TestCaser   rb  r  r  r  r\  r^  r   r  r  rX  mainr{   r   r   <module>r     s     	 
   , m)) m`]$)) ]$@#4 +X.. +\><H-- ><B JJNN$%038)) 8	888$$ 8 zHMMO r   