
    &hP                         S SK r S SKrS SKrS SKJr  S SKJr  S SKrS SKrS SK	7  / 4S jr
   SS jr " S S\ R                  5      r " S	 S
\ R                  5      r\S:X  a  \ R                   " 5         gg)    N)
test_utils)example_path)*c                    U R                  5       SS  n[        R                  R                  U5      nUR	                  U S5        [        R                  R                  5         [        R                  R                  5         SnSnU(       Ga  [        R                  R                  5       nU H  nUR                  [        :X  a  SnUR                  [        :X  d  M/  UR                  [        [        4;   a  UR                  [        :X  a  US-  nUR                  [        :X  a  US-  nX   n UR	                  U S5        [        R                  R                  5         [        R                  R                  5         M  UR                  [        4;   d  M  SnM     U(       a  GM  [        R                  R!                  5         [        R                  R#                  5         g )N   r   r   Tr   F   )get_rectpygamedisplayset_modeblitflipeventpumpgettypeQUITKEYDOWNkeyK_sK_aK_ESCAPEquitinit)simagessizescreengoingidxeventses           S/var/www/auris/envauris/lib/python3.13/site-packages/pygame/tests/transform_test.py
show_imager%      sD   ::<D^^$$T*F
KK6
NN
LLE
C
!!#Avv~vv 55S#J&uu|quu|qAKK6*NN'')LL%%'UUxj(!E  %" NN
NN    c                    UR                  5       UR                  5       pvU(       a  U R                  U5         Uu  pn
 Uu  pnSn[	        U5       H  n[	        U5       H{  nUR                  UU45      n[        US   U-
  5      U:  [        US   U	-
  5      U:  -  [        US   U
-
  5      U:  -  (       d  M[  U(       a  U R                  UU4U5        US-  nM}     M     U$ ! [         a    Uu  pp Nf = f! [         a    Uu  pp Nf = f)zKgiven the color it makes return_surf only have areas with the given colour.r   r	   r   )	get_width
get_heightfill
ValueErrorrangeget_atabsset_at)return_surfsurfcolor	threshold
diff_colorchange_returnwidthheightrgbatrtgtbtasimilaryxc1s                       r$   r3   r3   +   s    NN$doo&76$a
 G6]uAaV$BBqEAI#BqEAI(;<BqEAIQS@STT &&1vr21   N+  
a
  Bs"   C$ C9 $C65C69D
Dc                      \ 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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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+S*r,g+),TransformModuleTestT   c                    [         R                  " S5      nUR                  S5        U R                  UR	                  5       S5        [         R                  " S5      nUR                  S5        [         R
                  R                  US5      nUR                  5       nU R                  UR	                  5       UR	                  5       5        U R                  UR	                  5       UR	                  5       5        g)z%see if set_alpha information is kept.    rI   7   @   rL   N)r   Surface	set_alphaassertEqual	get_alpha	transformscalecopyselfr   s2s3s       r$   test_scale__alpha%TransformModuleTest.test_scale__alphaU   s     NN8$	B+NN8$	B##Ax0VVX77r&   c                    [         R                  " S5      n[         R                  R                  US5      nUR	                  5       n[         R                  R                  USUS9n[         R                  R                  USU5        U R                  [        [         R                  R                  USU5        [         R                  " S5      n[         R                  R                  US5      nUR	                  5       n[         R                  R                  USUS9nU R                  [        [         R                  R                  USU5        g)z7see if the destination surface can be passed in to use.rH   rK   )surfacer   dest_surface)!   rL   N)r   rM   rQ   rR   rS   assertRaisesr+   smoothscalerT   s       r$   test_scale__destination+TransformModuleTest.test_scale__destinationc   s    NN8$##Ax0WWY ##AH2#Nq(B/ 	*f&6&6&<&<a2NNN8$))!X6WWY ))!(QS)T 	*f&6&6&B&BAxQSTr&   c                    [         R                  " S5      n[         R                  R                  U[         R                  " SS5      5      n[         R                  R                  U[         R                  " SS5      5      nU R                  SUR                  5       5        U R                  SUR                  5       5        g )NrH   rL   rK   )r   rM   rQ   rR   Vector2r_   rO   get_sizerT   s       r$   test_scale__vector2'TransformModuleTest.test_scale__vector2{   s    NN8$##Av~~b"'=>))!V^^B-CD2;;=12;;=1r&   c                 ,   [         R                  R                  [         R                  " S5      S5      nU R	                  UR                  5       S5        [         R                  R                  US5      nU R	                  UR                  5       S5        g )N   ri   r   )r   rQ   rR   rM   rO   rd   )rU   tmp_surfaces     r$   "test_scale__zero_surface_transform6TransformModuleTest.test_scale__zero_surface_transform   sm    &&,,V^^J-GP--/8&&,,[*E--/<r&   c                    [         R                  " S5      n[         R                  R                  US5      nU R	                  SUR                  5       5        [         R                  R                  USS9nU R	                  SUR                  5       5        [         R                  " S5      n[         R                  R                  USUS9  g NrH   r   rK   )g       @g      ?)factor)rL   0   )r\   )r   rM   rQ   scale_byrO   rd   rU   r   rV   dests       r$   test_scale_by!TransformModuleTest.test_scale_by   s    NN8$&&q!,2;;=1&&q&<2;;=1~~h'!!!Zd!Cr&   c                    [         R                  " S5      n[         R                  R                  US5      nU R	                  SUR                  5       5        [         R                  R                  USS9nU R	                  SUR                  5       5        [         R                  " S5      n[         R                  R                  USUS9  g rn   )r   rM   rQ   smoothscale_byrO   rd   rr   s       r$   test_smoothscale_by'TransformModuleTest.test_smoothscale_by   s    NN8$,,Q22;;=1,,Qz,B2;;=1~~h''':D'Ir&   c                 
   [         R                  " S5      nUR                  S5        [         R                  R	                  U5      nU R                  [         R                  R                  U5      S   S5        U R                  [         R                  R                  U5      S   S5        U R                  [         R                  R                  U5      S   S5        [         R                  " SSS9n[         R                  R	                  X5        U R                  [         R                  R                  U5      S   S5        U R                  [         R                  R                  U5      S   S5        U R                  [         R                  R                  U5      S   S5        [         R                  " SSS9nUR                  S	5        [         R                  R	                  X5        U R                  [         R                  R                  U5      S   S
5        U R                  [         R                  R                  U5      S   S
5        U R                  [         R                  R                  U5      S   S
5        [         R                  " SSS9nUR                  S5        [         R                  R	                  X5        U R                  [         R                  R                  U5      S   SS/5        U R                  [         R                  R                  U5      S   SS/5        U R                  [         R                  R                  U5      S   SS/5        [         R                  " SS
S9nUR                  S5        [         R                  " SS
S9n[         R                  R	                  X5        U R                  [         R                  R                  U5      S   S5        U R                  [         R                  R                  U5      S   S5        U R                  [         R                  R                  U5      S   S5        [         R                  " SSS9nUR                  S5        [         R                  " SSS9n[         R                  R	                  X5        U R                  [         R                  R                  U5      S   S5        U R                  [         R                  R                  U5      S   S5        U R                  [         R                  R                  U5      S   S5        g )NrH      r   r   r   L   r	   r   rI   depth)"      A      ){   r   r   r   z      H   )r   rM   r*   rQ   	grayscalerO   average_colorassertInrr   s       r$   test_grayscale"TransformModuleTest.test_grayscale   s   NN8$	{''*))77;A>C))77;A>C))77;A>C~~hb1""1+))77=a@"E))77=a@"E))77=a@"E~~hb1	|""1+))77=a@"E))77=a@"E))77=a@"E~~hb1	""1+f&&44T:1=SzJf&&44T:1=SzJf&&44T:1=SzJNN82.	{~~hb1""1+))77=a@"E))77=a@"E))77=a@"ENN82.	{~~hb1""1+))77=a@"E))77=a@"E))77=a@"Er&   c           
         S=u  pnSnSnSn[         R                  " U[         R                  S5      n[         R                  " U[         R                  S5      n[         R                  " U[         R                  S5      n	UR                  U5        U	R                  U5        [         R                  R                  S UUUS SS9n
U R                  X-  U
5        [         R                  R                  S US US SU	S9n
U R                  X-  U
5        g )	NrH      r   r   r      r   r   r   
   r   r   r   rI   r   r\   r[   search_colorr3   	set_colorset_behaviorr\   r[   r   r3   r   r   search_surf)r   rM   SRCALPHAr*   rQ   r3   rO   )rU   whr   r3   original_colorthreshold_colororiginal_surfacer\   third_surfacepixels_within_thresholds              r$   $test_threshold__honors_third_surface8TransformModuleTest.test_threshold__honors_third_surface   s    !  %	)* ">>$D~~dFOOR@ tV__bA 	n-?+
 #)"2"2"<"<$( #= #
 	 78 #)"2"2"<"<$% #= #
 	 78r&   c           
         S=u  pnSnSnSnSnSn[         R                  " U[         R                  S5      n	[         R                  " U[         R                  S5      n
[         R                  " U[         R                  S5      nU	R                  U5        UR                  U5        U
R                  U5        Sn[         R                  R                  U
U	S	UUUUS
9nU R                  X-  U5        U
R                  5       nUR                  nU R                  X?5        [        R                  " U5       HE  nU R                  U
R                  U5      U5        U R                  U
R                  U5      U5        MG     g	)zthe pixels within the threshold.

All pixels not within threshold are changed to set_color.
So there should be none changed in this test.
rH   r   r   r   r   r   rJ   r   r|   r   r   r   rI   r	   Nr   )r   rM   r   r*   rQ   r3   rO   r
   r   r   rect_area_ptsassertNotEqualr-   rU   r   r   r   r3   r   original_dest_colorr   r   r1   	dest_surfr   $THRESHOLD_BEHAVIOR_FROM_SEARCH_COLORr   	dest_rect	dest_sizepts                    r$   #test_threshold_dest_surf_not_change7TransformModuleTest.test_threshold_dest_surf_not_change  sV    ! $	).*%	~~dFOOR8NN4"=	nnT6??B?		.!)*+
 01,"("2"2"<"<"=# #= #
 	 78 &&(	NN	)
 **95B	 0 0 4i@Y--b13FG 6r&   c           	         S=u  pnSnSnSnSnSn[         R                  " U[         R                  S5      n	[         R                  " U[         R                  S5      n
[         R                  " U[         R                  S5      nU	R                  U5        UR                  U5        U
R                  U5        Sn[         R                  R                  U
U	S	UUUS
9nU R                  SU5        U
R                  5       nUR                  nU R                  X?5        [        R                  " U5       H$  nU R                  U
R                  U5      U5        M&     g	)z1Lowering the threshold, expecting changed surfacerH   r   r   r   r   r   rI   r	   Nr   r   r   r   r   )r   rM   r   r*   rQ   r3   rO   r
   r   r   r   r-   r   s                    r$   $test_threshold_dest_surf_all_changed8TransformModuleTest.test_threshold_dest_surf_all_changed@  s1    ! $	).*%	~~dFOOR8NN4"=	nnT6??B?		.!)*+/0,"("2"2"<"<=# #= #
 	34&&(	NN	) **95BY--b19= 6r&   c           	      >   Sn[         R                  " U[         R                  S5      n[         R                  " U[         R                  S5      nSnSnUR                  U5        UR	                  SU5        UR	                  SU5        U R                  [        [         R                  R                  SX$5        SnU R                  [        [         R                  R                  SUUUS	9  S
n[         R                  R                  SUUUS9nU R                  US5        g)z(counts the colors, and not changes them.rH   rI   rJ   rJ   rJ   r|   r   r   r   r|   r   r      Nr   )r   r   )r\   r[   r   r   
r   rM   r   r*   r/   r^   	TypeErrorrQ   r3   rO   )	rU   	surf_sizer1   r   r   r   #THRESHOLD_BEHAVIOR_FROM_SEARCH_SURFTHRESHOLD_BEHAVIOR_COUNTnum_threshold_pixelss	            r$   test_threshold_count(TransformModuleTest.test_threshold_countg  s   	~~i"=nnYD(*		.!FL)G\* 	v''114	
 /0+&&< 	 	
 $% %//99%1	  :  
 	-q1r&   c                    Sn[         R                  " U[         R                  S5      n[         R                  " U[         R                  S5      n[         R                  " U[         R                  S5      nSnSnUR                  U5        UR                  U5        UR	                  SU5        UR	                  SU5        UR                  U5        SnU R                  [        [         R                  R                  UUUUUS9  [         R                  " S	[         R                  S5      nU R                  [        [         R                  R                  UUS S UUS
9  U R                  [        [         R                  R                  UUS S UUS
9  [         R                  R                  UUS S UUS9n	Sn
U R                  X5        UR                  U5        [         R                  R                  UUS S UUSS9n	U R                  U	S5        g )NrH   rI   r   r   r   r   r   )r   r   )   r]   r   )r\   r[   r   r   r   r   T)r   r   r   r   inverse_setr   )rU   r   r1   r   r   r   r   r   different_sized_surfr   num_pixels_withins              r$   test_threshold_search_surf.TransformModuleTest.test_threshold_search_surf  s   	~~i"=nnYDNN9foorB	*(		.!~&FL)G\*& /0+ 	&&<# 	 	
  &~~hL&& <# 	 		
 	&&<, 	 		
  &//99"<#  :  
 -A~&%//99<#  :  
 	-q1r&   c           
         Sn[         R                  " U[         R                  S5      n[         R                  " U[         R                  S5      nUnUnSnSnSnSn	Sn
UR                  U
5        UR	                  SU5        UR	                  S	U5        UR                  U
5        UR	                  SU5        UR	                  S	U5        Sn[         R
                  R                  UUUUUUSS
9nU R                  US5        U R                  UR                  S5      U5        U R                  UR                  S	5      U5        U R                  UR                  S5      U
5        g)z9changes the pixels within the threshold, and not outside.rH   rI   r   )r   r   r   r   )   r   r   r|   r	   r   r   r   )r   r3   r   r   r   r   )r   r   N)	r   rM   r   r*   r/   rQ   r3   rO   r-   )rU   r   
_dest_surf_surfr   r1   r   r3   r   r   r   r   r   s                r$   test_threshold_inverse_set.TransformModuleTest.test_threshold_inverse_set  sG   	^^IvC
y&//2>	( 	(	*		.!FL)G\*~&.,//0,%//99%=  :  
 	-q1))&19=))'2I> 	))&1>Br&   c           	      F   [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      nUR                  S5      nUR                  SS5        UR                  S5      nUR                  S5      nUR                  S5      nUR                  SS5        UR                  SS5        UR                  SS	5        UR                  SS
5        UR                  SS5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        U R	                  SUR                  5       UR                  5       45        SnSnSn	Sn
[         R                  R                  UUUU	UU
S9nU R	                  US5        [         R                  R                  UUSU	UU
S9nU R	                  US5        U R	                  UR                  S5      U5        g )Nr   r   r   r   r   r   )rI   r   r   )r   r   r   )r]      r   )   r   )?   =   r   )p      r   )   r   r   r	   r	   )r   r   r   )rI   r   r   r|   )r]   r   r   r|   r|   r|   r|   r|   )   r   r   r|   )r   r   r   r|   r	   r   r   )(   r   r   )	r   rM   r*   r/   rO   r-   	get_flagsrQ   r3   )rU   results1rV   rW   s4rB   similar_colorr4   r   r   r   s               r$   test_threshold_non_src_alpha0TransformModuleTest.test_threshold_non_src_alpha  s   )^^H%^^H%^^H%^^H%GGI
		&+&GGJGGIGGI
		&+&
		&+&
		&,'
		&+&
		&+&6*,<=6*,<=",,.",,.!AB,%
+/0,%//99&% =  :  
 	-q1%//99$% =  :  
 	-q1v.
;r&   c           
         S=u  pn[         R                  " U[         R                  S5      n[         R                  " U[         R                  S5      nUR                  S5        / SQn/ SQn[	        [        S5      5       HK  nUS S  n	US S  n
SX'   SX'   [         R                  R                  S UU	U
S SS	9nU R                  X-  U5        MM     g )
N)r   r   rI   r   )r   r   r   r   )   r   r   r   rgb-   2   )r   r   )	r   rM   r   r*   r,   lenrQ   r3   rO   )rU   r   r   r   r   r\   threshold_color_templatethreshold_templateposr   r3   r   s               r$   test_threshold__uneven_colors1TransformModuleTest.test_threshold__uneven_colors?  s      !>>$D~~dFOOR@a #/ ) U$C6q9O*1-I#%O IN&,&6&6&@&@  'A '# QU$;<! %r&   c                     SSK Jn  [        R                  " S[        S5      n[        R                  " S[        S5      nSnU R                  [        UUUSSSUS	9  g
)z>raises an error when set_behavior=2 and set_color is not None.r   r3   rH   rI   r      r   r   r   r   r   r{   r   Npygame.transformr3   r   rM   r   r^   r   )rU   r3   r   rV   r   s        r$   test_threshold_set_behavior20TransformModuleTest.test_threshold_set_behavior2`  sZ    .^^Hh3^^Hh3./+%"!< 	 		
r&   c                    SSK Jn  [        R                  " S[        S5      n[        R                  " S[        S5      nSnU R                  [        USUSSSUS	9  U R                  [        UUUSSSUS	9  U" SUSSSUS	9  g)
zZraises an error when set_behavior=1
and set_color is not None,
and dest_surf is not None.
r   r   rH   rI   Nr   r   r   r   r   )rU   r3   r   rV   r   s        r$   test_threshold_set_behavior00TransformModuleTest.test_threshold_set_behavior0r  s    
 	/^^Hh3^^Hh3#$ %"1 	 		
 	%"1 	 		
 	%"1	
r&   c           
         SSK Jn  [        R                  " S[        S5      n[        R                  " S[        S5      nSnSnUR                  U5        UR                  U5        SnU" UUSS	S
USS9nU R                  XsR                  5       UR                  5       -  5        U R                  UR                  S5      U5        g
)z9Set similar pixels in 'dest_surf' to color in the 'surf'.r   r   rH   rI   )r   r   r   r|   r|   r|   r|   r   r   r   Nr	   )r\   r[   r   r3   r   r   r   r   )
r   r3   r   rM   r   r*   rO   r)   r(   r-   )rU   r3   r1   r   
surf_color
dest_colorr   r   s           r$   test_threshold_from_surface/TransformModuleTest.test_threshold_from_surface  s    .~~h"5NN8Xr:	&
$
		*z"./+("%"< 
 	 "6"6"89;N;N;P"P	
 	))&1:>r&   c           	         SSK Jn  [        R                  " S[        S5      n[        R                  " S[        S5      n[        R                  " S[        S5      nSnUR                  S5        UR                  SS	5        SnU" S
USSS
US9nU R                  XrR                  5       UR                  5       -  S-
  5        UR                  S5        UR                  S5        UR                  S5        UR                  SS	5        U" S
USSS
U5      nU R                  XrR                  5       UR                  5       -  S-
  5        U" S
US
SS
Xc5      nU R                  XrR                  5       UR                  5       -  S-
  5        U" S
USSS
U5      nU R                  US5        U" S
US
SS
Xc5      nU R                  US5        g
) r   r   rH   rI   r   r   )r   r   r   r   )   r  r  Nr   r   r   r	   )   r  r  r   r	   r	   r	   )   r  r  r   )
r   r3   r   rM   r   r*   r/   rO   r)   r(   )rU   r3   r   rV   rW   r   r   r   s           r$   test_threshold__surface+TransformModuleTest.test_threshold__surface  s   .^^Hh3^^Hh3^^FHb1./+@ 	
		&/*#$ (%"1 
 	-",,.0PTU/UV
 	 
 
 
		&/*("oy$8P 
 	-",,.0PTU/UV  )"dIt-E 
 	-",,.0PTU/UV  )"oy$8P 
 	-q1  )"dIt-E 
 	-q1r&   c           	         SnSnSnSnSn[         R                  " XU5      n[         R                  " XU5      n[         R                  " XU5      nUR                  S5        UR                  S5        UR                  S5        [        R                  R                  UUSUS	US
9n	U R                  U[        R                  5        U R                  U[         R                  5        U R                  X5        U R                  UR                  S5      U5        U R                  UR                  5       U5        U R                  UR                  5       U5        U R                  UR                  5       U5        g	)z-Ensure threshold accepts subclassed surfaces.)   r   r   rI   )Z   P   F   r|   )r   r   r   r   )r   r   r   r  N)r\   r[   r3   r   r   r   r   )r   SurfaceSubclassr*   r   rQ   r3   assertIsInstancerM   rO   r-   get_bitsizerd   r   )
rU   expected_sizeexpected_flagsexpected_depthexpected_colorexpected_countr[   r\   search_surfacecounts
             r$   "test_threshold__subclassed_surface6TransformModuleTest.test_threshold__subclassed_surface  sU    *,,>
 "11>
 $33>
 	\"/*L)  **%$& + 
 	lFNN;lJ,F,FG/,,V4nE113^D..0-@//1>Br&   c                    Sn[         R                  " X45      n[         R                  " X45      nUR                  S5        [         R                  R	                  USSS5        [         R                  R	                  USSS5        [         R
                  R                  X#5        U R                  UR                  S5      S	5        U R                  UR                  S5      S
5        U R                  UR                  S5      S
5        U R                  UR                  S5      S
5        [         R
                  R                  U5      nU R                  UR                  S5      S	5        U R                  UR                  S5      S
5        U R                  UR                  S5      S
5        U R                  UR                  S5      S
5        g)r  rI   r   r   r  r{   r   r   r   r   r   r   r   r   r   r   r   r   r|   r|   r   r   r|   N)	r   rM   r*   drawlinerQ   	laplacianrO   r-   )rU   SIZEr   rV   s       r$   test_laplacian"TransformModuleTest.test_laplacian1  sc    ^^TL)^^TL)
['8< 	['8<""2*
 	6*N;7+-=>7+-=>8,.>? ''+6*N;7+-=>7+-=>8,.>?r&   c                    [         R                  R                  5          [         R                  R	                  [        [        R                  R                  SS5      5      5      nSn[         R                  " X"4SS5      n[         R                  R                  XS9  U R                  UR                  S5      S5        U R                  UR                  S	5      S
5        U R                  UR                  S5      S
5        U R                  UR                  S5      S
5        [         R                  R                  U5      nU R                  UR                  S5      S5        U R                  UR                  S	5      S
5        U R                  UR                  S5      S
5        U R                  UR                  S5      S
5        [         R                  R                  5         g! [         R                  R                  5         f = f)r  datazlaplacian.pngrI   r   r   )r[   r\   r   r!  r  r"  r  r   N)r   r   r   imageloadr   ospathjoinrM   rQ   r%  rO   r-   r   )rU   surf_1r&  surf_2s       r$   test_laplacian__24_big_endian1TransformModuleTest.test_laplacian__24_big_endianO  s   	"\\&&RWW\\&/BCF D^^TL!R8F &&v&K
 V]]62NCV]]735EFV]]735EFV]]846FG %%//7FV]]62NCV]]735EFV]]735EFV]]846FGNN!FNN!s   F%G$ $ Hc                 8   Sn[         R                  " X45      n[         R                  " X45      n[         R                  " X45      nUR                  S5        UR                  S5        UR                  S5        X#U/nX#/n[         R                  R	                  U5      nU R                  UR                  S5      S5        U R                  [        [         R                  R                  S5        U R                  [        [         R                  R                  / 5        U R                  [        [         R                  R                  S/5        U R                  [        [         R                  R                  US/5        U R                  [        [         R                  R                  SU/5        U R                  [        [         R                  R                  X#S/5        U R                  [        [         R                  R                  S X#U4 5       5        g	)
r  rI   r  )r   r   r  )r      r   r   )r      r  r|   r	   c              3   $   #    U  H  ov   M     g 7fN ).0r   s     r$   	<genexpr><TransformModuleTest.test_average_surfaces.<locals>.<genexpr>  s     :Sl1ls   N)	r   rM   r*   rQ   average_surfacesrO   r-   r^   r   )rU   r&  r   rV   rW   surfacessrs          r$   test_average_surfaces)TransformModuleTest.test_average_surfacess  s    ^^TL)^^TL)^^TL)


B<8..x86*,=>)V%5%5%F%FJ)V%5%5%F%FK)V%5%5%F%FL)V%5%5%F%FQP)V%5%5%F%FBP)V%5%5%F%FQRTv''88:Srrl:S	
r&   c                    SnSn[         R                  " X4SU5      n[         R                  " X4SU5      n[         R                  " X4SU5      nUR                  S5        UR                  S5        UR                  S5        X4U/n[         R                  R	                  U5      nU R                  UR                  5       UR                  5       5        U R                  UR                  5       UR                  5       5        U R                  UR                  5       UR                  5       5         U R                  UR                  S5      S5        g )	NrI   r   r   )r   r   r  r|   )r   r   r  r|   )r   r5  r   r|   r   )r   5   r   r|   )r   rM   r*   rQ   r=  rO   	get_masksr   
get_lossesprint
get_shiftsr-   )rU   r&  r   r   rV   rW   r>  r?  s           r$   test_average_surfaces__24-TransformModuleTest.test_average_surfaces__24  s   ^^TL!U3^^TL!U3^^TL!U3
!"
!"
"#B<..x888"--/: 	6*,=>r&   c                    [         R                  R                  5          [         R                  R	                  [        [        R                  R                  SS5      5      5      nUR                  5       nX/nU R                  UR                  S5      S5        U R                  UR                  S5      S5        [         R                  R                  U5      nU R                  UR                  5       UR                  5       5        U R                  UR                  5       UR                  5       5        U R                  UR!                  5       UR!                  5       5        U R                  UR                  S5      S5        [         R                  R#                  5         g ! [         R                  R#                  5         f = f)Nr*  zBGR.pngr   r"  )r   r   r   r+  r,  r   r-  r.  r/  rS   rO   r-   rQ   r=  rD  r   rE  r   )rU   r0  r1  r>  surf_avs        r$   $test_average_surfaces__24_big_endian8TransformModuleTest.test_average_surfaces__24_big_endian  s=   	"\\&&|BGGLL4S'TUF[[]F'HV]]624DEV]]624DE&&77AGW..0&2B2B2DEW..0&2B2B2DEW//163D3D3FGW^^F35EFNN!FNN!s   E%F$ $ Gc                 \   SnSnSnSn/ nS H<  n[         R                  " XU5      nUR                  U5        UR                  U5        M>     [        R
                  R                  U5      nU R                  U[        R                  5        U R                  U[         R                  5        U R                  UR                  S5      U5        U R                  UR                  5       U5        U R                  UR                  5       U5        U R                  UR                  5       U5        g)z4Ensure average_surfaces accepts subclassed surfaces.)      r   rI   )r   r   r   r|   ))r   <   r   )rQ  r   rQ  r   N)r   r  r*   appendr   rQ   r=  r  rM   assertNotIsInstancerO   r-   r  rd   r   )	rU   r  r  r  r  r>  r2   r   r[   s	            r$   *test_average_surfaces__subclassed_surfaces>TransformModuleTest.test_average_surfaces__subclassed_surfaces  s     *1E**~A FF5MOOA 2 ""33H=gv~~6  **D*DE/@,,.?))+];**,n=r&   c                    SnSnSnSn/ nS H<  n[         R                  " XU5      nUR                  U5        UR                  U5        M>     UR	                  5       n[
        R                  R                  XXS9n	U R                  U	[
        R                  5        U R                  U	[         R                  5        U R                  X5        U R                  U	R                  S5      U5        U R                  U	R                  5       U5        U R                  U	R                  5       U5        U R                  U	R                  5       U5        g)	zAEnsure average_surfaces accepts a destination subclassed surface.)r     r   rI   )r6  r6  r6  r|   ))r   r   r   )r   r   r   r   )r>  r\   r   N)r   r  r*   rR  popr   rQ   r=  r  rM   assertIsrO   r-   r  rd   r   )
rU   r  r  r  r  r>  r2   r   expected_dest_surfacer\   s
             r$   5test_average_surfaces__subclassed_destination_surfaceITransformModuleTest.test_average_surfaces__subclassed_destination_surface  s     *?E**~A FF5MOOA @ !) ''88 9 
 	lFNN;lJ,F,FGl:,,V4nE113^D..0-@//1>Br&   c                    S H  nU R                  SU S35         [        R                  " SSU5      nUR                  S5        UR                  SS5        U R	                  [        R
                  R                  U5      S	5        [        R
                  R                  US
S9nU R	                  US5        SSS5        M     g! , (       d  f       M  = f)r  )r   rI   zTesting z-bit surfacerH   r   )r   d      )r   r   r^  r   r   r   rI   )r   K      r   r   r   r   rI   r[   rect)r   r^  r_  r   N)subTestr   rM   r*   rO   rQ   r   )rU   ir   	avg_colors       r$   test_average_color&TransformModuleTest.test_average_color  s    A<89NN8Q2}%}n5  !1!1!?!?!BOT #,,::O ; 	   ,<= :9 99s   BC
C	c                 T   [         R                  " S[         R                  S5      nUR                  S5        UR                  SS5        U R	                  [         R
                  R                  USS9S5        [         R
                  R                  US	SS
9nU R	                  US5        g)r  rH   rI   r   r^  r_  r|   )r   r   r^  r|   r`  Tconsider_alpha)r   ra  rb  r|   rc  r[   re  rn  Nr   rM   r   r*   rO   rQ   r   rU   r   rh  s      r$   6test_average_color_considering_alpha_all_pixels_opaqueJTransformModuleTest.test_average_color_considering_alpha_all_pixels_opaque  s    NN8V__b9	!"	!>2**1T*BDU	

 $$22OD 3 
	 	$67r&   c                 T   [         R                  " S[         R                  S5      nUR                  S5        UR                  SS5        U R	                  [         R
                  R                  USS9S5        [         R
                  R                  USSS	9nU R	                  US5        g
)r  rH   rI   rl  )r   r   r^  ri   r`  Trm  )r   S         ro  Nrp  rq  s      r$   $test_average_color_considering_alpha8TransformModuleTest.test_average_color_considering_alpha  s    NN8V__b9	!"	!>2 	**1T*BDU	

 $$22N4 3 
	 	$67r&   c                    SnSnSn[         R                  " S5      nSnUR                  SU5        UR                  SU5        U R                  UR	                  S5      U5        U R                  UR	                  S5      U5        U R                  UR	                  S5      U5        [        SS	5       H  nUS
-  S:X  a"  U R                  UR	                  S5      U5        OOUS:X  a"  U R                  UR	                  S5      U5        O'US:X  a!  U R                  UR	                  S5      U5        US-  n[         R                  R                  USS9nM     U R                  UR	                  S5      U5        g )N)r   r   r|   r|   r"  r   )r   r   r   )r   r   )r   r   r      r   r	   r   r  )r[   angle)r   rM   r/   rO   r-   r,   rQ   rotate)rU   blueredblackcanvasrotationrg  s          r$   test_rotateTransformModuleTest.test_rotate&  s>   'fd#fc"v.6v.5v.4q!A1uz  v!6>a  v!6=a  v!6<NH%%,,V2,FF  	v.6r&   c                     [         R                  " S5      n[         R                  " S5      n[         R                  R                  US5        [         R                  R                  US5        g )N)r   r	   )r	   r   *   )r   rM   rQ   r}  )rU   canvas1canvas2s      r$   test_rotate_of_0_sized_surface2TransformModuleTest.test_rotate_of_0_sized_surfaceC  sJ    ..(..(,,r&   c                 z   Su  p[         R                  " X4[         R                  5      n[        [        R
                  " X5      5      nU H  u  pVUR                  XV5        M     S H"  n[         R                  R                  X75      nM$     U H(  u  pVU R                  UR                  U5      U:H  5        M*     g )NrH   )r  i)r   rM   r   listr   gradientr/   rQ   r}  
assertTruer-   )rU   r   r   r   r  r   r2   r  s           r$   #test_rotate__lossless_at_90_degrees7TransformModuleTest.test_rotate__lossless_at_90_degreesJ  s    NNA66??3
++A12!IBHHR " "H  ''4A " "IBOOAHHRLE12 "r&   c                 z   Su  p[         R                  " X4[         R                  S5      n[         R                  R	                  U5      n[         R                  R	                  US9nU R                  UR                  5       R                  S5        U R                  UR                  5       R                  S5        g )NrH   rI   )r[   rK   )r   rM   r   rQ   scale2xrO   r
   r   )rU   r   r   r   r   rV   s         r$   test_scale2x TransformModuleTest.test_scale2xY  s     NNA66??B7 %%a(%%a%0++X6++X6r&   c                    Su  p[         R                  " X4[         R                  S5      nUR                  S5        [         R                  R                  USUS-  US-  4US-  5        [         R                  R                  X1S-  US-  45      n[         R                  R                  XAS-  US-  45      n[         R                  R                  X1S-  US-  45      nU R                  UR                  5       R                  S5        [        R                  " UR                  5       5       H3  nU R                  UR                  U5      UR                  U5      5        M5     g )	NrH   rI   r   r{   r   r   r{  rh   )r   rM   r   r*   r#  circlerQ   rR   rO   r
   r   r   r   r-   )rU   r   r   r   rV   s2_2r   r   s           r$   test_scale2xraw#TransformModuleTest.test_scale2xrawj  s   NNA66??B7	y1kAFAF+;a1fF##AAq1u~6%%bq5!a%.9##AAq1u~6--z:**4==?;BT[[_biim< <r&   c                 h    [         R                  R                  5       nU R                  US;   5        g )N)GENERICMMXSSE)r   rQ   get_smoothscale_backendr  )rU   filter_types     r$   test_get_smoothscale_backend0TransformModuleTest.test_get_smoothscale_backendy  s(    &&>>@'@@Ar&   c                 J   [         R                  R                  5       n[         R                  R                  S5        [         R                  R                  5       nU R	                  US5        [         R                  R                  US9  S nU R                  [        U5        S nU R                  [        U5        S nU R                  [        U5        US:w  a  S nU R                  [        U5        [         R                  R                  5       nU R	                  X!5        g )Nr  )backendc                  B    [         R                  R                  S5        g )Nmmxr   rQ   set_smoothscale_backendr9  r&   r$   change@TransformModuleTest.test_set_smoothscale_backend.<locals>.change  s    44U;r&   c                  >    [         R                  R                  SS9  g )Nr  )tr  r9  r&   r$   r  r    s    44y4Ar&   c                  B    [         R                  R                  S5        g )Nr	   r  r9  r&   r$   r  r    s    44Q7r&   r  c                  B    [         R                  R                  S5        g )Nr  r  r9  r&   r$   r  r    s      88?r&   )r   rQ   r  r  rO   r^   r+   r   )rU   original_typer  r  s       r$   test_set_smoothscale_backend0TransformModuleTest.test_set_smoothscale_backend  s    ((@@B00;&&>>@i0 	000G	< 	*f-	B 	)V,	8 	)V,E!@ j&1&&>>@4r&   c                 R
   [         R                  " S5      n[         R                  R                  USS5        [         R                  R                  USS5        [         R                  R                  USS5        [         R                  R                  USS	5        [         R                  " S
S
SS5      n[         R
                  R                  X5      nU R                  UR                  5       S5        [        S5       Ha  n[        S5       HO  nUS:  a$  U R                  UR                  XE45      S5        M-  U R                  UR                  XE45      S5        MQ     Mc     U R                  UR                  5       S5        [        S5       H  n[        S5       H  nUS:  a(  US:  a"  U R                  UR                  XE45      S5        USs=:  a  U:  a%  O  O"U R                  UR                  XE45      S5        USs=:  a  U:  a%  O  O"U R                  UR                  XE45      S5        US:  d  M  US:  d  M  U R                  UR                  XE45      S5        M     M     [         R                  " S
S
SS5      nUR                  5       R                  Ul        [         R
                  R                  XS9nU R                  UR                  5       S5        [        S5       H  n[        S5       H  nUS:  a(  US:  a"  U R                  UR                  XE45      S5        USs=:  a  U:  a%  O  O"U R                  UR                  XE45      S5        USs=:  a  U:  a%  O  O"U R                  UR                  XE45      S5        US:  d  M  US:  d  M  U R                  UR                  XE45      S5        M     M     [         R                  " SSS
S
5      n[         R
                  R                  X5      nU R                  UR                  5       S5        [         R                  " S
S
SS5      n[         R
                  R                  X5      nU R                  UR                  5       S5        [         R                  " SSSS5      n[         R
                  R                  X5      nU R                  UR                  5       S5        [         R                  " SSSS5      n[         R
                  R                  X5      nU R                  UR                  5       S5        g )Nr  r{   )r   r   r   r   )r   r|   r   )r   r   r   r   )r   r   r|   )r   r   r   r   )r|   r|   r   r   r   r   r6  )r6  r   r   r   rd  r   r   )r   r6  i  )r   rM   r#  re  RectrQ   choprO   rd   r,   r-   r
   center)rU   r   re  test_surfacerB   rA   s         r$   	test_chopTransformModuleTest.test_chop  s    !>>(3);G);H);H)=:JK{{1aB''',,-=D..0':rA1Xq5$$\%8%8!%@+N$$\%8%8!%@-P	   	)224h?rA2Yr6a"f$$%5%<%<aV%DkRr:A:$$%5%<%<aV%DkRr:A:$$%5%<%<aV%DkRr6a"f$$%5%<%<aV%DmT   {{1aR(&//188'',,5E,Q..0(;rA2Yq5QU$$\%8%8!%@+Nq919$$\%8%8!%@+Nq919$$\%8%8!%@+Nq5QU$$\%8%8!%@-P   {{2r1a('',,-=D..0(;{{1aR('',,-=D..0&9{{1b"b)'',,-=D..0':{{3R,'',,-=D..0(;r&   c           	         [         R                  " S5      n[         R                  R                  US5        [         R                  R	                  USS5      n[         R                  R	                  USSS9nU R                  UR                  5       [         R                  " SSSS5      5        U R                  UR                  5       [         R                  " SSSS5      5        g )N)r   r   )r   r   r   r	   )r[   r|  rR   r   )r   rM   rQ   rR   rotozoomrO   r
   r  )rU   r   r   rV   s       r$   test_rotozoom!TransformModuleTest.test_rotozoom  s     NN7#q'*&&q"a0&&q!&DAq!Q(?@Aq!Q(?@r&   c           	      b   S nU R                  [        U5        S nU R                  [        U5        S nU R                  [        U5        [        R                  " SSS9nUR	                  [        R
                  " SSS5      [        R                  " SSSS5      5        UR	                  [        R
                  " S	S	S	5      [        R                  " SSSS5      5        [        S
S5       Vs/ s H  nSU-  PM
     sn H  n[        R                  R                  XFS45      nU R                  UR                  US-  S45      [        R
                  " SSS5      5        U R                  UR                  5       US45        M     [        R                  " SSS9nUR	                  [        R
                  " SSS5      [        R                  " SSSS5      5        UR	                  [        R
                  " S	S	S	5      [        R                  " SSSS5      5        [        SSS5       H  n[        R                  R                  XS45      n	U R                  U	R                  US-  S45      [        R
                  " SSS5      5        U R                  U	R                  5       US45        M     gs  snf )zOTests the stated boundaries, sizing, and color blending of smoothscale functionc                  n    [         R                  " SSS9n [         R                  R                  U S5      ng )Nr  r   r~   r   r   rM   rQ   r_   starting_surfacesmoothscaled_surfaces     r$   smoothscale_low_bppATransformModuleTest.test_smoothscale.<locals>.smoothscale_low_bpp  /    %~~hbA#)#3#3#?#? ($ r&   c                  n    [         R                  " SSS9n [         R                  R                  U S5      ng )Nr  rp   r~   r   r  r  s     r$   smoothscale_high_bppBTransformModuleTest.test_smoothscale.<locals>.smoothscale_high_bpp  r  r&   c                  n    [         R                  " SSS9n [         R                  R                  U S5      ng )Nr  rI   r~   )r  r  r  s     r$   smoothscale_invalid_scaleGTransformModuleTest.test_smoothscale.<locals>.smoothscale_invalid_scale  r  r&   )r   r	   rI   r~   r   r	   r|   r      r      )   r	   ri   r   r   N)r^   r+   r   rM   r*   Colorr  r,   rQ   r_   rO   r-   rd   )
rU   r  r  r  two_pixel_surfacerB   kbigger_surfacetwo_five_six_surfsmaller_surfaces
             r$   test_smoothscale$TransformModuleTest.test_smoothscale  s9   *	 	*&9:	 	*&:;	 	*&?@ #NN6<v||Aq!4fkk!Q16MNv||Cc:FKK1aQR<ST %a,1!Q$,A#--99:KQRVTN%%qAvqk2FLLc34O ^446A? - #NN82>v||Aq!4fkk!QQ6OPv||Cc:FKKQPSUV<WXq"aA$..::;LRSfUO&&a!}5v||Cc7R _557!Q@ ! -s   -J,r9  N)-__name__
__module____qualname____firstlineno__rX   r`   re   rk   rt   rx   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r'  r2  r@  rH  rL  rT  r[  ri  rr  rx  r  r  r  r  r  r  r  r  r  r  __static_attributes__r9  r&   r$   rE   rE   T   s    8U02=
D
J+FZ>9@0Hd%>N$2LQ2f*CZ0<d=B
$(
T?6S2j#CJ@<""H
:?2"(>0C:> 8 8(7:-37"=B$5L<<|A,@Ar&   rE   c                   ,    \ rS rSrS rS rS rS rSrg)TransformDisplayModuleTesti=  c                 ~    [         R                  R                  5         [         R                  R                  S5        g )N)i@  r_  )r   r   r   r   rU   s    r$   setUp TransformDisplayModuleTest.setUp>  s$    
+r&   c                 @    [         R                  R                  5         g r8  )r   r   r   r  s    r$   tearDown#TransformDisplayModuleTest.tearDownB  s    r&   c                 r   [         R                  R                  [        S5      5      n[         R                  " UR                  5       SS5      nUR                  US5        UR                  5       nU R                  UR                  5       [         R                  -  5        U R                  UR                  5       [         R                  -  5        [         R                  " UR                  5       SS5      n[         R                  " UR                  5       SS5      nUR                  S5        UR                  S5        UR                  S5      nUR                  U[        5        [         R                  R!                  USS5      nUR                  S5      nUR                  U[        5        [         R                  R!                  USSS9nUR                  US5        UR                  US5        U R#                  UR                  S5      UR                  S5      5        U R#                  UR                  S5      S5        UR                  S5        UR                  S5        UR                  US5        UR                  US5        U R#                  UR                  S5      UR                  S5      5        g	)
z;honors the set_color key on the returned surface from flip.data/chimp.pngr   rI   r   r   r	   )r[   flip_xflip_yr   N)r   r+  r,  r   rM   rd   r   convertassertFalser   r   r*   r-   set_colorkeyRLEACCELrQ   r   rO   )	rU   image_loadedr+  image_convertedr1   surf2colorkeytimagetimage_converteds	            r$   	test_flip$TransformDisplayModuleTest.test_flipE  s   ||((6F)GH|4462>

<(&..0*V__<=224vFG~~enn.26u~~/B7		/"

?#<<'8X.!!&&ua3"))&1$$Xx8!++00#Aa 1 

 			&&!

5&! 	V,ell6.BCf-/CD 			/"

?#		"F+

?F+V,ell6.BCr&   c                    [         R                  R                  [        S5      5      n[         R                  " UR                  5       [         R                  S5      nUR                  US5        [         R                  " UR                  5       SS5      n[         R                  " UR                  5       SS5      nUR                  S5      nUR                  U[        5        [         R                  R                  USS5      nU R                  UR                  5       [         R                  -  5        U R                  UR                  5       [         R                  -  5        UR                  S5        UR                  S5        UR                  US5        UR                  US5        U R!                  UR                  S5      UR                  S5      5        U R!                  UR                  S5      S5        g)	z8returns a surface with the same properties as the input.r  rI   r   r   r	   r   r"  N)r   r+  r,  r   rM   rd   r   r   r-   r  r  rQ   r   r  r   r*   rO   )rU   r  image_alphar1   r  r  timage_alphas          r$   test_flip_alpha*TransformDisplayModuleTest.test_flip_alphaq  si   ||((6F)GHnn\%:%:%<foorRv.~~l335q"=|4462>%%f-  84'',,[!Q?--/&//AB..06??BC 			/"

?#		,'

;'V,ell6.BCf-/?@r&   r9  N)	r  r  r  r  r  r  r  r  r  r9  r&   r$   r  r  =  s    ,*DXAr&   r  __main__)r   r   T)unittestr-  platformpygame.testsr   pygame.tests.test_utilsr   r   r   pygame.localsr%   r3   TestCaserE   r  r  mainr9  r&   r$   <module>r     s     	  # 0     D &RfA(++ fAR'KA!2!2 KA\ zMMO r&   