
    &hY                        S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJr   " S S\ R                  5      r
 " S S\ R                  5      r " S S	\5      r " S
 S\ R                  5      r " S S\ R                  5      r\ R                  " \R                   R#                  S5      S:H  S5       " S S\ R                  5      5       r " S S\ R                  5      r\S:X  a  \ R*                  " 5         gg)    Nquestion)displayc                      \ rS rSrSrS rS rS rS rS r	\
R                  " \R                  R                  S5      S	:H  S
5      S 5       rS rS rS rS rS rS r\
R                  " SS5      S 5       rS rS r\
R                  " SS5      S 5       r\
R                  " SS5      S 5       r\
R                  " SS5      S 5       r\
R                  " SS5      S 5       r\
R                  " \R                  R                  S5      S;   S5      S 5       rS  rS! rS" r S# r!S$ r"S% r#S& r$S' r%S( r&\
R                  " \R                  R                  S5      S	:H  S)5      S* 5       r'\
R                  " \R                  R                  S5      S	:H  S)5      S+ 5       r(\
R                  " \)" \*RV                  S,5      (       + S-5      S. 5       r,S/ r-S0 r.S1 r/S2 r0S3 r1\
R                  " SS45      S5 5       r2S	S6/r3\
R                  " SS45      S7 5       r4S	S6/r3\
R                  " \R                  R                  S5      \3;   S85      S9 5       r5S:r6g;)<DisplayModuleTest   zpygame windowc                 .    [         R                  " 5         g N)r   initselfs    Q/var/www/auris/envauris/lib/python3.13/site-packages/pygame/tests/display_test.pysetUpDisplayModuleTest.setUp           c                 .    [         R                  " 5         g r
   r   quitr   s    r   tearDownDisplayModuleTest.tearDown   r   r   c                    [         R                  R                  5       nU R                  UR                  S5        U R                  UR
                  S5        [         R                  R                  S5      n[         R                  R                  5       nU R                  UR                  S5        U R                  UR
                  S5        g )N   r   r   )pygamer   InfoassertNotEqual	current_h	current_wset_modeassertEqual)r   infscreens      r   	test_InfoDisplayModuleTest.test_Info   s    nn!!#CMM2.CMM2. ((4nn!!#,,r   c                    [         R                  R                  S5      nU R                  [         R                  R	                  5       5        [         R
                  R                  US5        U R                  [         R                  R	                  5       5        [         R                  R                  5         U R                  [         R                  5         [         R                  R	                  5         S S S 5        AU R                  [         R                  5         [         R                  R	                  5         S S S 5        g ! , (       d  f       NV= f! , (       d  f       g = f)Nd   r)   )B   r*   5   )
r   r   r!   assertIsNoneflipSurfacefillr   assertRaiseserrorr   r$   s     r   	test_flipDisplayModuleTest.test_flip!   s    ((4 	&..--/0 	FL1&..--/0 	v||,^^  " - v||,^^  " -, -,
 -,s   EE
E
E%c                 F   [         R                  R                  5         U R                  [         R                  R	                  5       S5        [         R                  R                  5         [         R                  R                  S5        U R                  [         R                  R	                  5       S5        [         R                  R                  5         [         R                  R                  5         U R                  [         R                  R	                  5       S5        g)zTest the get_active functionFi  i  TN)r   r   r   r"   
get_activer   r!   r   s    r   test_get_active!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                    [         R                  R                  S5        [         R                  R	                  5         [         R                  R                  5         [        S5       H7  n[        R                  " S5        [         R                  R                  5         M9     U R                  [         R                  R                  5       S5        g)z-Test the get_active function after an iconifyr6   r)   {Gz?FN)r   r   r!   eventcleariconifyrangetimesleeppumpr"   r7   )r   _s     r   test_get_active_iconify)DisplayModuleTest.test_get_active_iconifyG   s     	
+ sAJJtLL  	224e<r   c                     [         R                  " S5      nU R                  [         R                  " 5       S   U R                  5        g )Nr(   r   )r   r!   r"   get_captiondefault_captionr2   s     r   test_get_caption"DisplayModuleTest.test_get_caption[   s6    !!*-,,.q143G3GHr   c                    Sn[         R                  " S5      nU R                  [         R                  " U5      5        U R	                  [         R
                  " 5       S   U5        U R	                  [         R
                  " 5       S   U5        g )Ntestr(   r      r   r!   r,   set_captionr"   rI   r   TEST_CAPTIONr$   s      r   test_set_caption"DisplayModuleTest.test_set_caption`   sl    !!*-'--l;<,,.q1<@,,.q1<@r   c                    Sn[         R                  " S5      nU R                  [         R                  " US95        U R	                  [         R
                  " 5       S   U5        U R	                  [         R
                  " 5       S   U5        g )NrN   r(   )titler   rO   rP   rR   s      r   test_set_caption_kwargs)DisplayModuleTest.test_set_caption_kwargsh   sl    !!*-'--LAB,,.q1<@,,.q1<@r   c                     Sn[         R                  " U5        U R                  [         R                  " 5       S   U5        g )Nu   台r   )r   rQ   r"   rI   )r   rS   s     r   test_caption_unicode&DisplayModuleTest.test_caption_unicodep   s3    L),,.q1<@r   c                    / SQn[         R                  " 5       nU R                  X!5        [         R                  " 5         U R	                  [
        R                  5         [         R                  " 5       nS S S 5        g ! , (       d  f       g = f)N)aalibandroidarmcocoadgadirectxdirectfbr;   
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   r0   r   r1   )r   driversdrivers      r   test_get_driver!DisplayModuleTest.test_get_driveru   sZ    
> ##%f&v||,'')F -,,s   A>>
Bc                 L    U R                  [        R                  " 5       5        g)z;Ensures the module's initialization state can be retrieved.N)
assertTruer   get_initr   s    r   test_get_initDisplayModuleTest.test_get_init   s     	((*+r   TzSDL2 issuesc                   ^ SmU4S jT 5        H  nS H  n[         R                  " USU5      n[        R                   R                  5       nU R	                  XC5        U R                  U[        R                  5        U R	                  UR                  5       U5        U R	                  UR                  5       U5        M     M     g)z5Ensures get_surface gets the current display surface.)rO      r)   c              3   >   >#    U  H  nT  H  o!U4v   M
     M     g 7fr
    ).0whlengthss      r   	<genexpr>5DisplayModuleTest.test_get_surface.<locals>.<genexpr>   s     Ggw!!fwfgs   )             r   N)	r   r!   r   get_surfacer"   assertIsInstancer.   get_sizeget_bitsize)r   expected_sizeexpected_depthexpected_surfacesurfacer   s        @r   test_get_surface"DisplayModuleTest.test_get_surface   s     GgGM"1#*#3#3M1n#U  ..446  ;%%gv~~>  !1!1!3]C  !4!4!6G #2 Hr   c                 b    [         R                  R                  5       nU R                  U5        g)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_set0DisplayModuleTest.test_get_surface__mode_not_set   s"    ..,,.'"r   c                     [         R                  " 5       nU R                  U[        5        1 Skn[	        UR                  5       5      R                  U5      nU R                  U5        g )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_info"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                    [         R                  " S[        R                  5      n/ nUR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                   5      5        UR	                  [        R                   R                  [        R"                  5      5        UR	                  [        R                   R                  [        R$                  5      5        UR	                  [        R                   R                  [        R&                  5      5        UR	                  [        R                   R                  [        R(                  5      5        UR	                  [        R                   R                  [        R*                  5      5        UR	                  [        R                   R                  [        R,                  5      5        [        R                   R/                  [        R                  S5        [        R                   R/                  [        R                  S5        [        R                   R/                  [        R                  S5        [        R                   R/                  [        R                  S5        [        R                   R/                  [        R                  S5        [        R                   R/                  [        R                  S5        [        R                   R/                  [        R                  S5        [        R                   R/                  [        R                  S5        [        R                   R/                  [        R                  S5        [        R                   R/                  [        R                  S5        [        R                   R/                  [        R                   S5        [        R                   R/                  [        R"                  S5        [        R                   R/                  [        R$                  S5        [        R                   R/                  [        R&                  S5        [        R                   R/                  [        R(                  S5        [        R                   R/                  [        R*                  S5        [        R                   R/                  [        R,                  S5        / SQn/ nUR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                  5      5        UR	                  [        R                   R                  [        R                   5      5        UR	                  [        R                   R                  [        R"                  5      5        UR	                  [        R                   R                  [        R$                  5      5        UR	                  [        R                   R                  [        R&                  5      5        UR	                  [        R                   R                  [        R(                  5      5        UR	                  [        R                   R                  [        R*                  5      5        UR	                  [        R                   R                  [        R,                  5      5        [1        [3        U5      5       H+  nU R5                  XE   X%   :H  =(       d	    XE   X5   :H  5        M-     U R7                  [8        5         [        R                   R                  S5        S S S 5        g ! , (       d  f       g = f)	Nr   r   r   r   r   rO   r   r   r   r   r   r   r   r   rO   rO   r   r   rO   rO   r   r   r   rO   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_attributerA   lenr   r0   	TypeErrorr   r$   original_values
set_values
get_valuesis         r   test_gl_get_attribute'DisplayModuleTest.test_gl_get_attribute   sQ    !!&&--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/"44 4MZ]2 - y)NN++G4 *))s    n55
oc                    [         R                  " S[        R                  5      n/ nUR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                   S95        UR	                  [        R                   R                  [        R"                  S95        UR	                  [        R                   R                  [        R$                  S95        UR	                  [        R                   R                  [        R&                  S95        UR	                  [        R                   R                  [        R(                  S95        UR	                  [        R                   R                  [        R*                  S95        UR	                  [        R                   R                  [        R,                  S95        [        R                   R/                  [        R                  SS9  [        R                   R/                  [        R                  SS9  [        R                   R/                  [        R                  SS9  [        R                   R/                  [        R                  SS9  [        R                   R/                  [        R                  SS9  [        R                   R/                  [        R                  SS9  [        R                   R/                  [        R                  SS9  [        R                   R/                  [        R                  SS9  [        R                   R/                  [        R                  SS9  [        R                   R/                  [        R                  SS9  [        R                   R/                  [        R                   SS9  [        R                   R/                  [        R"                  SS9  [        R                   R/                  [        R$                  SS9  [        R                   R/                  [        R&                  SS9  [        R                   R/                  [        R(                  SS9  [        R                   R/                  [        R*                  SS9  [        R                   R/                  [        R,                  SS9  / S	Qn/ nUR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                  S95        UR	                  [        R                   R                  [        R                   S95        UR	                  [        R                   R                  [        R"                  S95        UR	                  [        R                   R                  [        R$                  S95        UR	                  [        R                   R                  [        R&                  S95        UR	                  [        R                   R                  [        R(                  S95        UR	                  [        R                   R                  [        R*                  S95        UR	                  [        R                   R                  [        R,                  S95        [1        [3        U5      5       H+  nU R5                  XE   X%   :H  =(       d	    XE   X5   :H  5        M-     U R7                  [8        5         [        R                   R                  S
5        S S S 5        g ! , (       d  f       g = f)Nr   flagr   r   valuer   r   rO   r   r   r   r   r   s         r   test_gl_get_attribute_kwargs.DisplayModuleTest.test_gl_get_attribute_kwargsW  s3    !!&&--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/"44 4MZ]2 - y)NN++G4 *))s   & m
mc                 	   [         R                  " S[        R                  5      n/ SQn[        R                   R	                  [        R
                  US   5        [        R                   R	                  [        R                  US   5        [        R                   R	                  [        R                  US   5        [        R                   R	                  [        R                  US   5        [        R                   R	                  [        R                  US   5        [        R                   R	                  [        R                  US   5        [        R                   R	                  [        R                  US	   5        [        R                   R	                  [        R                  US
   5        [        R                   R	                  [        R                  US   5        [        R                   R	                  [        R                  US   5        / nUR                  [        R                   R!                  [        R
                  5      5        UR                  [        R                   R!                  [        R                  5      5        UR                  [        R                   R!                  [        R                  5      5        UR                  [        R                   R!                  [        R                  5      5        UR                  [        R                   R!                  [        R                  5      5        UR                  [        R                   R!                  [        R                  5      5        UR                  [        R                   R!                  [        R                  5      5        UR                  [        R                   R!                  [        R                  5      5        UR                  [        R                   R!                  [        R                  5      5        UR                  [        R                   R!                  [        R                  5      5        [#        [%        U5      5       H  nU R'                  X4   X$   :H  5        M     U R)                  [*        5         [        R                   R!                  S5        S S S 5        g ! , (       d  f       g = f)Nr   
r   r   r   r   r   r   r   rO   rO   r   r   rO            r         r   	   r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   r   r   r0   r   r   r$   r   r   r   s        r   test_gl_set_attribute'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OOJMZ]:; ( y)NN++G4 *))s   6 S
S-c                 	   [         R                  " S[        R                  5      n/ SQn[        R                   R	                  [        R
                  US   S9  [        R                   R	                  [        R                  US   S9  [        R                   R	                  [        R                  US   S9  [        R                   R	                  [        R                  US   S9  [        R                   R	                  [        R                  US   S9  [        R                   R	                  [        R                  US	   S9  [        R                   R	                  [        R                  US
   S9  [        R                   R	                  [        R                  US   S9  [        R                   R	                  [        R                  US   S9  [        R                   R	                  [        R                  US   S9  / nUR                  [        R                   R!                  [        R
                  S95        UR                  [        R                   R!                  [        R                  S95        UR                  [        R                   R!                  [        R                  S95        UR                  [        R                   R!                  [        R                  S95        UR                  [        R                   R!                  [        R                  S95        UR                  [        R                   R!                  [        R                  S95        UR                  [        R                   R!                  [        R                  S95        UR                  [        R                   R!                  [        R                  S95        UR                  [        R                   R!                  [        R                  S95        UR                  [        R                   R!                  [        R                  S95        [#        [%        U5      5       H  nU R'                  X4   X$   :H  5        M     U R)                  [*        5         [        R                   R!                  S5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   rO   r   r   r   r   r   r   r   r   r   r   r   r   s        r   test_gl_set_attribute_kwargs.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OOJMZ]:; ( y)NN++G4 *))s    R77
S)r;   r_   z9iconify is only supported on some video drivers/platformsc                 .   [         R                  R                  S5        U R                  [         R                  R	                  5       S5        [         R                  R                  5       nU(       Ga  S=p#[        S5       H  n[        R                  " S5        [         R                  R                  5        Ht  nUR                  [         R                  :X  a1  UR                  (       d   UR                  [         R                  :X  a  SnUR                  [         R                   :X  d  Mr  SnMv     M     U R#                  U5        U R#                  U5        U R%                  [         R                  R	                  5       5        g U R'                  S5        g )Nr6   TF2   r=   z3Iconify not supported on this platform, please skip)r   r   r!   r"   r7   r@   rA   rB   rC   r>   gettypeACTIVEEVENTgainstate	APPACTIVEWINDOWMINIMIZEDr   r   fail)r   successactive_eventwindow_minimized_eventrE   r>   s         r   test_iconifyDisplayModuleTest.test_iconify  s   
 	
+224d;..((*499L 2Y

4 #\\--/EzzV%7%77$zzekkV=M=M.M+/LzzV%;%;;15. 0  OO23OOL)V^^6689 IIKLr   c                     [         R                  " 5         [         R                  " 5         U R                  [         R                  " 5       5        g)z4Ensures the module is initialized after init called.N)r   r   r   r   r   r   s    r   	test_initDisplayModuleTest.test_init  s+     	((*+r   c                     [         R                  " 5         [         R                  " 5         U R                  [         R                  " 5       5        g)z<Ensures the module is initialized after multiple init calls.N)r   r   r   r   r   s    r   test_init__multiple%DisplayModuleTest.test_init__multiple  s)    ((*+r   c                    [         R                  R                  S[         R                  SS9nUS:w  aC  U R	                  [        US   5      S5        U R	                  [        US   S   5      [        5        [         R                  R                  5       nUS:w  ap  U R	                  [        US   5      S5        U R	                  [        US   S   5      [        5        U R	                  [        U5      [        [        U5      5      5        [         R                  R                  SSSS9nUS:w  aD  U R	                  [        US   5      S5        U R	                  [        US   S   5      [        5        g g )Nr   depthflagsr   r   r   )	r   r   
list_modes
FULLSCREENr"   r   r   intr   )r   modess     r   test_list_modes!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                 t   [         R                  R                  S5        [         R                  R                  5       nUS:w  a4  US   nU R	                  [         R                  R                  U5      S5        [         R                  R                  SSS5        [         R                  R                  SSSSS9  g )Nr   r   r   r   )r  r  r   )r   r   mode_okr  r   r   r  sizes      r   test_mode_okDisplayModuleTest.test_mode_ok  s    z*))+B;8D 6 6t <a@z1b1z"aHr   c                     [         R                  R                  5       nUS:w  aB  US   nU R                  [         R                  R	                  U[         R
                  S9S5        g g Nr   r   r  )r   r   r  r   r  r  r  s      r   test_mode_ok_fullscreen)DisplayModuleTest.test_mode_ok_fullscreen  sV    ))+B;8D&&t63D3D&Eq r   c                     [         R                  R                  5       nUS:w  aB  US   nU R                  [         R                  R	                  U[         R
                  S9S5        g g r  )r   r   r  r   r  SCALEDr  s      r   test_mode_ok_scaled%DisplayModuleTest.test_mode_ok_scaled  sR    ))+B;8D 6 6t6== 6 QSTU r   c                 `    U R                  [        R                  R                  5       S5        g )Nr   )assertGreaterr   r   get_num_displaysr   s    r   test_get_num_displays'DisplayModuleTest.test_get_num_displays  s    6>>::<a@r   c                 v    [         R                  " 5         U R                  [         R                  " 5       5        g)z8Ensures the module is not initialized after quit called.Nr   r   r   r   r   s    r   	test_quitDisplayModuleTest.test_quit  s"    ))+,r   c                     [         R                  " 5         [         R                  " 5         U R                  [         R                  " 5       5        g)z@Ensures the module is not initialized after multiple quit calls.Nr+  r   s    r   test_quit__multiple%DisplayModuleTest.test_quit__multiple  s+    ))+,r   zNeeds a not dummy videodriverc                    [         R                  R                  S5        / SQnU H  nU R                  US9   U R	                  [
        5         U R                  [         R                  R                  U5      S5        S S S 5        U R                  [         R                  R                  U5      S5        S S S 5        M     g ! , (       d  f       NJ= f! , (       d  f       M  = f)NrO   rO   )      ?      ?g)\(?      ?)gammaT)r   r   r!   subTestassertWarnsDeprecationWarningr"   	set_gamma)r   gammasr6  s      r   test_set_gamma DisplayModuleTest.test_set_gamma  s     	''EE*%%&89$$V^^%=%=e%DdK :  !9!9%!@$G +* 99 +*s#   C0C>7C
CC
C"	c           	         [         R                  R                  S5        / SQnU HO  u  p#nU R                  X#US9   U R	                  [         R                  R                  X#U5      S5        S S S 5        MQ     g ! , (       d  f       Mc  = f)Nr2  ))r4  r4  r4  )r5  r5  r5  )r3  gQ?g)\(?)rgbT)r   r   r!   r7  r"   r:  )r   r;  r?  r@  rA  s        r   test_set_gamma__tuple'DisplayModuleTest.test_set_gamma__tuple  si     	'GGA!!,  !9!9!!BDI -, ,,s   1A::
B		set_gamma_rampz0Not all systems and hardware support gamma rampsc                 8   [         R                  R                  S5        [        [	        S5      5      nU Vs/ s H  o"S-   PM	     nnU Vs/ s H  o"S-   PM	     nnU R                  [        5         [         R                  R                  XU5      nS S S 5        W(       a0  U R                  [         R                  R                  XU5      5        g U R                  [         R                  R                  XU5      5        g s  snf s  snf ! , (       d  f       N= f)N)r   r      )
r   r   r!   listrA   r8  r9  rD  r   r   )r   r?  numberr@  rA  isSupporteds         r   test_set_gamma_ramp%DisplayModuleTest.test_set_gamma_ramp  s    " 	's()*fc\*()*fc\*01 ..77a@K 2OOFNN99!BCV^^::1CD +*11s   DD1!D
Dc                 D    [         R                  R                  SSSSS9  g )Nr2  r   r  r  r  r   )r   r   r!   r   s    r   test_set_mode_kwargs&DisplayModuleTest.test_set_mode_kwargs)  s    V1AqIr   c                    [         R                  R                  S[         R                  SSS9n[         R                  R	                  5       nU R                  US   UR                  5       S   -  SS5        U R                  US   UR                  5       S   -  SS5        U R                  US   UR                  5       S   -  US   UR                  5       S   -  5        g )Nr2  r   rM  z6window width should be a multiple of the surface widthrO   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_scaled&DisplayModuleTest.test_set_mode_scaled,  s    ~~&&v}}Aq ' 
 ..002AJ++D	

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

 	AJ++WQZ$--/!:L-L	
r   c                 l    [         R                  R                  [         R                  " SS5      5        g )NrO   )r   r   r!   Vector2r   s    r   test_set_mode_vector2'DisplayModuleTest.test_set_mode_vector2?  s    q! 45r   c                    [         R                  R                  S[         R                  5      nU R	                  UR                  5       S5        [         R                  R                  S5      nU R	                  UR                  5       S5        g)z8Ensures a window created with SCALED can become smaller.),  r[  )   r\  N)r   r   r!   r"  r"   r   r2   s     r   test_set_mode_unscaled(DisplayModuleTest.test_set_mode_unscaledB  s`     ((V]]C*J7((4*J7r   c                    [         R                  R                  S5        U R                  [         R                  R	                  5       5        [         R                  R                  S5        U R                  [         R                  R	                  5       5        [         R                  R                  5         U R                  [         R                  R	                  5       5        g )NTF)r   r   set_allow_screensaverr   get_allow_screensaverr   r   s    r   test_screensaver_support*DisplayModuleTest.test_screensaver_supportL  s    ,,T2<<>?,,U3==?@,,.<<>?r   z#set_palette() not supported in SDL2c           
         U R                  [        R                  5         / SQn[        R                  R	                  U5        S S S 5        [        R                  R                  SSS5        / nU R                  [        R                  R	                  U5      5        U R                  [        5         Sn[        R                  R	                  U5        S S S 5        U R                  [        5         SS/SS//n[        R                  R	                  U5        S S S 5        U R                  [        5         / SQ/[        SS	5       Vs/ s H  o"X"X"/PM	     sn-   n[        R                  R	                  U5        S S S 5        U R                  [        5         S
n[        R                  R	                  U5        S S S 5        U R                  [        5         / SQS-  /n[        R                  R	                  U5        S S S 5        U R                  [        5         / SQn[        R                  R	                  U5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN[= fs  snf ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)NrO   r   r   i   i   r   r      rO   r   r   r   r   r   r      qwerty{   rl  rl  '  
r0   r   r1   r   set_paletter!   r,   
ValueErrorr   rA   r   palettexs      r   test_set_palette"DisplayModuleTest.test_set_paletteU  s   v||,GNN&&w/ - 	Q2&..44W=>z*GNN&&w/ + y)1v1v&GNN&&w/ * y)&'E!SM*RMqqQ?M*RRGNN&&w/ * y)GNN&&w/ * y)&./GNN&&w/ * y)GNN&&w/ *)- -, +* *) +S *) *) *) *)se   $I	2"I1(I-6J	I?$J"J(J'$J8	
I
I*-
I<?J
J
J$'
J58
Kr_   c           
      r   U R                  [        R                  5         / SQn[        R                  R	                  US9  S S S 5        [        R                  R                  SSS5        / nU R                  [        R                  R	                  US95        U R                  [        5         Sn[        R                  R	                  US9  S S S 5        U R                  [        5         SS/SS//n[        R                  R	                  US9  S S S 5        U R                  [        5         / S	Q/[        SS
5       Vs/ s H  o"X"X"/PM	     sn-   n[        R                  R	                  US9  S S S 5        U R                  [        5         Sn[        R                  R	                  US9  S S S 5        U R                  [        5         / SQS-  /n[        R                  R	                  US9  S S S 5        U R                  [        5         / SQn[        R                  R	                  US9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNS= fs  snf ! , (       d  f       GN
= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nre  )rr  rf  r   r   rg  rO   r   rh  ri  rj  rk  rm  rn  rq  s      r   test_set_palette_kwargs)DisplayModuleTest.test_set_palette_kwargss  s   v||,GNN&&w&7 - 	Q2&..44W4EFz*GNN&&w&7 + y)1v1v&GNN&&w&7 * y)&'E!SM*RMqqQ?M*RRGNN&&w&7 * y)GNN&&w&7 * y)&./GNN&&w&7 * y)GNN&&w&7 *)- -, +* *) +S *) *) *) *)se   "H9. I+&I.I4I/"I4 J&J"J(9
I
I
I,/I44
J
J
J%(
J6z,requires the SDL_VIDEODRIVER to be non dummyc                 f   [         R                  R                  5         U R                  [         R                  5         [         R                  R                  5         SSS5        [         R                  R                  5         Sn[         R                  R                  U5      n [         R                  R                  5         [         R                  R                  5       S:X  aa  UR                  5       UR                  5       4[         R                  R                  S[         R                  SS9;   nU R                  US5        gU R                  UR                  5       UR                  5       4U5        g! , (       d  f       GN!= f! [         R                   a    U R                  5          gf = f)zTest for toggle fullscreenNr6   rO   r   r  T)r   r   r   r0   r1   toggle_fullscreenr   r!   	get_width
get_heightr  r  r"   r   )r   width_height	test_surfbooleans       r   test_toggle_fullscreen(DisplayModuleTest.test_toggle_fullscreen  s@    	v||,NN,,. - 	!NN++L9		NN,,. ~~//1Q6'')((* ^^..6#4#4a /    $/   ((*I,@,@,BC\; -, || 	IIK	s   E7%F	 7
F	$F0/F0r   N)7__name__
__module____qualname____firstlineno__rJ   r   r   r%   r3   r8   unittestskipIfosenvironr   rF   rK   rT   rX   r[   r~   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r#  r(  r,  r/  r<  rB  hasattrr   r   rJ  rN  rT  rX  r]  rb  rt  	skip_listrw  r  __static_attributes__r   r   r   r   r      s   %O	-$(=$ __


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


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


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


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


()Y66%	%r   r   c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)DisplayUpdateTesti  c                     g)z)this is used in the interactive subclass.Nr   r   qstrs     r   r   DisplayUpdateTest.question  s    r   c                 $   [         R                  " 5         [        R                   R                  S5      U l        U R                  R                  S5        [        R                   R                  5         [        R                  R                  5         g )N)  r  black)	r   r   r   r!   r$   r/   r-   r>   rD   r   s    r   r   DisplayUpdateTest.setUp  sS    nn--j9!r   c                 .    [         R                  " 5         g r
   r   r   s    r   r   DisplayUpdateTest.tearDown  r   r   c                    U R                   R                  S5        [        R                  " SSSS5      n[        R                  R                  U5        [        R                  " SSSS5      n[        R                  R                  U5        [        R                  " SSSS5      n[        R                  R                  U5        U R                  S5        g)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_negative&DisplayUpdateTest.test_update_negative  s    ![[AsC(b![[ac*b![[at,b!@Ar   c           	         U R                   R                  S5        [        R                  " SSSS5      [        R                  " SSSS5      [        R                  " SSSS5      [        R                  " SSSS5      /n[        R                  R                  U5        [        R                  R                  5         U R                  SU S35        g)	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>   rD   r   r   rectss     r   test_update_sequence&DisplayUpdateTest.test_update_sequence  s    !KK1c3'KKQS)KKQS)KKS#s+	
 	e$/wa89r   c           
      v   U R                   R                  S5        S[        R                  " SSSS5      S[        R                  " SSSS5      [        R                  " SSSS5      4n[        R                  R                  U5        [        R                  R                  5         U R                  SU S35        g)	z!None is skipped inside sequences.r  Nr)   r   r\  r[  r  r  r  r  s     r   test_update_none_skipped*DisplayUpdateTest.test_update_none_skipped  s    !KKQS)KKQS)KKS#s+
 	e$/wa89r   c                     U R                   R                  S5        [        R                  R	                  S5        [        R
                  R                  5         U R                  S5        g)does NOT update the display.r  Nz"Is the screen black and NOT green?r$   r/   r   r   r  r>   rD   r   r   s    r   test_update_none"DisplayUpdateTest.test_update_none  sC    !d#:;r   c                     U R                   R                  S5        [        R                  R	                  5         [        R
                  R                  5         U R                  S5        g)r  r  zIs the WHOLE screen green?Nr  r   s    r   test_update_no_args%DisplayUpdateTest.test_update_no_args  sA    !23r   c                     U R                   R                  S5        [        R                  R	                  SSSS5        [        R
                  R                  5         U R                  S5        g)z-updates the display using the args as a rect.r  r)   z,Is the screen green in (100, 100, 100, 100)?Nr  r   s    r   test_update_args"DisplayUpdateTest.test_update_args  sI    !c3S1DEr   c                 F   U R                  [        5         [        R                  R	                  SSSS5        SSS5        U R                  [        5         [        R                  R	                  / SQ5        SSS5        g! , (       d  f       NN= f! , (       d  f       g= f)z*raises a ValueError when inputs are wrong.r)   asdfN)r)   r  r)   r)   )r0   rp  r   r   r  r   s    r   test_update_incorrect_args,DisplayUpdateTest.test_update_incorrect_args  sl     z*NN!!#vsC8 + z*NN!!"9: +* +* +*s   #B"B
B
B c                     [         R                  R                  5         U R                  [         R                  5         [         R                  R                  5         SSS5        g! , (       d  f       g= f)zraises a pygame.error.N)r   r   r   r0   r1   r  r   s    r   test_update_no_init%DisplayUpdateTest.test_update_no_init  sB     	v||,NN!!# -,,s   A&&
A4)r$   N)r  r  r  r  r   r   r   r  r  r  r  r  r  r  r  r  r   r   r   r  r    s;    8B::<4F;$r   r  c                   $    \ rS rSrSrS/rS rSrg)DisplayUpdateInteractiveTesti  zFBecause we want these tests to run as interactive and not interactive.interactivec                     [        U5        g)z9since this is the interactive subclass we ask a question.Nr   r  s     r   r   %DisplayUpdateInteractiveTest.question"  s	    r   r   N)r  r  r  r  __doc____tags__r   r  r   r   r   r  r    s    PHr   r  c                   &    \ rS rSrS/rS rS rSrg)DisplayInteractiveTesti'  r  c                    S[         R                  S'   [        R                  R	                  5         [        R                  R                  5         [        R                  " S5      nUR                  S5        [        R                  R                  U5        [        R                  R                  S5      n[        R                  R                  S5        [        S5      nU R                  U5        [        R                  R	                  5         g )N100,250SDL_VIDEO_WINDOW_POS)r   r   )ri  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!   rQ   r   r   )r   	test_iconr$   responses       r   test_set_icon_interactive0DisplayInteractiveTest.test_set_icon_interactive*  s    -6

)*NN8,	{#	*((4""#EF=>!r   c                    S[         R                  S'   [        R                  R	                  5         [        R                  R                  5         [        R                  R                  S5      nUR                  S5        [        SS5       Vs/ s H  o"S-  PM	     nnSUS'   [        SS5       Vs/ s H  o"S-  PM	     nnS	n[        R                  R                  XDU5      (       a   [        R                  R                  5         S
nU(       a<  [        S5      nU R                  U5        [        R                  R                  XDU5        [        R                  R	                  5         g s  snf s  snf )Nr  r  r  )r)   r)   r)   r   rF  i   r)   FTz%Is the window background tinted blue?)r  r  r   r   r   r   r!   r/   rA   rD  r  r   r   )r   r$   rs  	blue_rampnormal_rampgamma_successr  s          r   rJ  *DisplayInteractiveTest.test_set_gamma_ramp;  s	   -6

)*((4O$&+Asm4mWm	4"	#(-a613w6>>((9MMNN!!# M GHHOOH%NN))+KP 56s   E*1E/r   N)r  r  r  r  r  r  rJ  r  r   r   r   r  r  '  s    H"r   r  c                   P    \ rS rSrS/rSrSrSrSrSr	S r
S rSS	 jrS
 rS rSrg)FullscreenToggleTestsiU  r  NFi   iX  c                 T   [         R                  " 5         [        R                  S:X  aH  [         R                  R                  U R                  U R                  4[         R                  S9U l	        O:[         R                  R                  U R                  U R                  45      U l	        [         R                  R                  S5        U R                  R                  S5        [         R                  R                  5         [         R                  R                  S S5      U l        g )Nwin32r  zFullscreen Tests)ri  ri  ri  r   )r   r   sysplatformr   r!   WIDTHHEIGHTr"  r$   rQ   r/   r-   fontFontr   s    r   r   FullscreenToggleTests.setUp_  s    <<7" !..11T[[) 2 DK !..114::t{{2KLDK""#56)KK$$T2.	r   c                     U R                   (       a  [        R                  R                  5         [        R                  " 5         g r
   )isfullscreenr   r   rz  r   r   s    r   r   FullscreenToggleTests.tearDownn  s$    NN,,.r   c                    SnU(       a9  U R                   (       d%  [        R                  R                  5         SU l         SnO8U R                   (       a%  [        R                  R                  5         SU l         SnU R                  R                  USS5      nU R                  R                  X0R                  S-  U R                  R                  U5      S   S-  -
  S	45        [        R                  R                  5          [        R                  R                  5        H  nUR                  [        R                  :X  a`  UR                  [        R                   :X  a    gUR                  [        R"                  :X  a    gUR                  [        R$                  :X  a    gUR                  [        R&                  :X  d  M    g   M  )
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   rz  r  renderr$   blitr  r  r-   r>   r   r   KEYDOWNkeyK_ESCAPEK_yK_nQUIT)r   
fullscreentextsr>   s        r   visual_test!FullscreenToggleTests.visual_tests  s4   $$002$(!1D  002$)!4DIIT5)4ZZ!^diinnT.B1.E.II3OP))+::/yyFOO3$yyFJJ.#yyFJJ.$::,  , r   c                 @    U R                  U R                  SS95        g )NTr  r   r  r   s    r   test_fullscreen_true*FullscreenToggleTests.test_fullscreen_true  s    ((D(9:r   c                 @    U R                  U R                  SS95        g )NFr  r  r   s    r   test_fullscreen_false+FullscreenToggleTests.test_fullscreen_false  s    ((E(:;r   )r  r  r$   )F)r  r  r  r  r  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  r:   r;   r   c                       \ rS rSrS rSrg)DisplayOpenGLTesti  c                     [         R                  R                  5         [         R                  R                  S[         R                  5      nU R                  SUR                  5       5        g)zKreturns a surface with the same size requested.
|tags:display,slow,opengl|
r6   N)r   r   r   r!   r   r"   r   r2   s     r   test_screen_size_opengl)DisplayOpenGLTest.test_screen_size_opengl  sE     	((V]]CV__%67r   r   N)r  r  r  r  r  r  r   r   r   r  r    s    
8r   r  c                       \ rS rSrS rSrg)X11CrashTesti  c                     [         R                  R                  5         [         R                  R                  5         [         R                  R	                  SS5      nU R                  SUR                  5       5        g )Nr6   r   )r   r   r   r   r!   r"   r   r2   s     r   test_x11_set_mode_crash_gh1654+X11CrashTest.test_x11_set_mode_crash_gh1654  sQ     	((Q7V__%67r   r   N)r  r  r  r  r  r  r   r   r   r  r    s    8r   r  __main__)r  r  r  rB   r   pygame.transformpygame.tests.test_utilsr   r   TestCaser   r  r  r  r  r  r  r   r  r  r  mainr   r   r   <module>r
     s     	 
   , m)) m`]$)) ]$@#4 +X.. +\><H-- ><B 
JJNN$%038)) 8	888$$ 8 zMMO r   