
    i                     ,   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 	 d dlm
Z
 d dlZd ej                         k(  Z G d d      Z ej                   ed       G d	 d
ej"                  e             Z ej                   ed       G d dej"                  e             Z ej                   ej(                   d       ej                   ed       G d dej"                  e                    Zedk(  r ej.                          yy# e$ r Y w xY w)    N)reduce)SurfaceSubclass)arrinterPyPyc                       e Zd ZddZddZy)	TestMixinNc                 V   |j                         \  }}| j                  ||f|j                         |       |dn| d}|d| d| dz  }t        |      D ]P  }t        |      D ]@  }| j                  |j	                  ||f      |j	                  ||f      | d| d| d       B R y)z3Checks if two surfaces are equal in size and color.N z, zsize: ()z, position: ()get_sizeassertTupleEqualrangeassertEqualget_at)selfs1s2msgwhxys           f/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pygame/tests/pixelarray_test.pyassert_surfaces_equalzTestMixin.assert_surfaces_equal   s    {{}1q!fbkkmS9KbuBZ2aS""q 	A1X   IIq!f%IIq!f%e=2aS2	    c                     |j                         \  }|j                          fdt        |      D        D ]$  }| j                  |j	                  |      ||       & |j                          y)z5Checks if the surface is filled with the given color.c              3   F   K   | ]  }t              D ]  }||f 
  y wN)r   ).0r   r   widths      r   	<genexpr>z2TestMixin.assert_surface_filled.<locals>.<genexpr>-   s%     Hq5<HaQFHFHs   !N)r   lockr   r   r   unlock)r   surfaceexpected_colorr   heightposr    s         @r   assert_surface_filledzTestMixin.assert_surface_filled(   s]    ((*vHE&MH 	GCW^^C0.#F	Gr   r   )__name__
__module____qualname__r   r(    r   r   r   r      s    "r   r   zpypy having issuesc                   B   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Z ej                  ed      d        Zd Zd Zd Z ej                  ed      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'd% Z(d& Z)d' Z*y())PixelArrayTypeTestc                    d}d}||f}t        j                  |dd      }t        j                  |      }t        j                  |dd      }| j                  t        |j
                  |       t        j                  |      }|j                  |      }| j                  t        |t         j                               | j                  |j                  |       |j                  t        j                  d             | j                  ||j                         ~t        j                  dddd	      }	|j                  t        j                  d
      |	       |j                  t        j                  d             |j                  t        j                  d
      |	       |j                  |      }|j                  t        j                  d      |	       | j                  ||j                         y )N
      r       white            bluered)pygameSurface
PixelArrayassertRaises	TypeErrorcompare
assertTrue
isinstancer   shapefillColorr   r$   Rect)
r   r   r   sizesfarsf2ar2ar3rs
             r   test_comparezPixelArrayTypeTest.test_compare4   sf    !t^^D!R(r"nnT1b))RZZ5$jjo
3(9(9:;D)g&'""34KK1a$
V$a(e$%f%q)jjo
W%q)""2s{{3r   c                    d}t        j                  d      }d}dD ]<  }t        j                  ||      }|j                  |       |j	                         }|j                  |       |j                  d      }t        j                  |      }t        j                  |j	                               }	dD ]r  }
|j                  |	|
      }| j                  |j                  |||
f       | j                  |j                  |||
f       | j                  |	j                  |||
f       t |j                          |	j                          j                          ? y	)
z;Ensures compare works correctly with same colored surfaces.   r5   r3      rR   rR               r2   depthr   r   )        g{Gz?皙?      ?distanceNr:   rD   r;   rC   copyr   r<   r?   r   r$   r(   close)r   rF   pixelarray_result_colorsurface_colorrY   expected_pixelarray_surfacesurf_aexpected_surface_colorpixelarray_apixelarray_br_   pixelarray_results               r   )test_compare__same_colors_within_distancez<PixelArrayTypeTest.test_compare__same_colors_within_distanceS   sX   "(,,w"7,$ #	&E*0..U*K'',,-DE 1557FKK& &,]]6%:"!,,V4L!,,V[[];L1 $0$8$8 8 %9 %! **%--/H%
 ** ((*@5(BS ** ((*@5(BS&   ##%G#	&r   c                    d}t        j                  d      }d}d}dD ]`  }t        j                  ||      }|j                  |       |j	                         }|j                  |       |j                  d      }t        j                  |      }	|j	                         }
|
j                  |       |
j                  d      }t        j                  |
      }dD ]r  }|	j                  ||	      }| j                  |j                  |||f       | j                  |	j                  |||f       | j                  |j                  |||f       t |	j                          |j                          j                          c y
)zEnsures compare works correctly with different colored surfaces
        and the color difference is within the given distance.
        rO   r3   rQ      rR   rR   rS   rT   rX   rZ   )g?g333333?g      ?r]   r^   Nr`   r   rF   rc   surface_a_colorsurface_b_colorrY   re   rf   expected_surface_a_colorrh   surf_bexpected_surface_b_colorri   r_   rj   s                  r   .test_compare__different_colors_within_distancezAPixelArrayTypeTest.test_compare__different_colors_within_distance~   s    "(,,w"7..$ (	&E*0..U*K'',,-DE 1557FKK( (.}}V'<$!,,V4L0557FKK( (.}}V'<$!,,V4L0 $0$8$8 8 %9 %! **%--/H%
 ** ((*BUHDU ** ((*BUHDU&   ##%Q(	&r   c                    d}t        j                  d      }d}d}dD ]`  }t        j                  ||      }|j                  |       |j	                         }|j                  |       |j                  d      }t        j                  |      }	|j	                         }
|
j                  |       |
j                  d      }t        j                  |
      }dD ]r  }|	j                  ||	      }| j                  |j                  |||f       | j                  |	j                  |||f       | j                  |j                  |||f       t |	j                          |j                          j                          c y
)zEnsures compare works correctly with different colored surfaces
        and the color difference is not within the given distance.
        rO   blackrQ   rm   rT   rX   rZ   )r[   gh㈵>g-C6?gMbP?r^   Nr`   ro   s                  r   2test_compare__different_colors_not_within_distancezEPixelArrayTypeTest.test_compare__different_colors_not_within_distance   s    "(,,w"7..$ (	&E*0..U*K'',,-DE 1557FKK( (.}}V'<$!,,V4L0557FKK( (.}}V'<$!,,V4L9 $0$8$8 8 %9 %! **%--/H%
 ** ((*BUHDU ** ((*BUHDU&   ##%Q(	&r   c                 z    t        j                  d      }t        j                  |      }|j                          ~y)z"does not crash when it is deleted.r0   r0   N)r:   r;   r<   rb   r   sas      r   
test_closezPixelArrayTypeTest.test_close   s,    NN8$a 		r   c                 *  
 t        j                  d      }t        j                  |      

j                          
fd}| j	                  t
        |       
fd}| j	                  t
        |       
fd}| j	                  t
        |       
fd}| j	                  t
        |       
fd}| j	                  t
        |       
fd}| j	                  t
        |       
fd}| j	                  t
        |       
fd	}	| j	                  t
        |	       y
)z3when you try to do an operation after it is closed.rz   c                       d d   y r   r,   r}   s   r   access_afterz:PixelArrayTypeTest.test_close_raises.<locals>.access_after   s
    aDr   c                      d d d  y N   r,   r   s   r   assign_all_afterz>PixelArrayTypeTest.test_close_raises.<locals>.assign_all_after   s    AaDr   c                  &     j                          y r   )make_surfacer   s   r   make_surface_afterz@PixelArrayTypeTest.test_close_raises.<locals>.make_surface_after   s    NNr   c                      D ]  }  y r   r,   )r   r}   s    r   
iter_afterz8PixelArrayTypeTest.test_close_raises.<locals>.iter_after   s     r   c                  &     j                          y r   )rb   r   s   r   close_afterz9PixelArrayTypeTest.test_close_raises.<locals>.close_after  s    GGIr   c                       j                    y r   )r$   r   s   r   surface_afterz;PixelArrayTypeTest.test_close_raises.<locals>.surface_after  s
    IIr   c                       j                    y r   )itemsizer   s   r   itemsize_afterz<PixelArrayTypeTest.test_close_raises.<locals>.itemsize_after  s
    JJr   c                  &     j                          y r   )	transposer   s   r   transpose_afterz=PixelArrayTypeTest.test_close_raises.<locals>.transpose_after  s    KKMr   N)r:   r;   r<   rb   r=   
ValueError)r   r|   r   r   r   r   r   r   r   r   r}   s             @r   test_close_raisesz$PixelArrayTypeTest.test_close_raises   s    NN8$a 			 	*l3	 	*&67	 	*&89	 	*j1	 	*k2	 	*m4	 	*n5	 	*o6r   c                    t        j                  d      }t        j                  |      5 }|dd  ddd       t        j                  |      5 }t        j                  d      |dd ddd       y# 1 sw Y   @xY w# 1 sw Y   yxY w)zcloses properly.rz   Ndeepskyblue)r:   r;   r<   rD   r{   s      r   test_context_managerz'PixelArrayTypeTest.test_context_manager  sz    NN8$q! 	QaD	
 q! 	/Q<<.AaD	/ 	/	 	
	/ 	/s   A0A<0A9<Bc                    dD ]  }t        j                  dd|      }|j                  d       t        j                  |      }| j	                  |j
                  |j
                         |j                         r| j                  |j                                | j	                  t        |      d       ~|j                         s| j                  |j                                 y )NrT   r0   r1   r   r   r   r   r0   )r:   r;   rC   r<   r   _pixels_addressmustlockr@   
get_lockedlenassertFalser   bpprG   rH   s       r   test_pixel_arrayz#PixelArrayTypeTest.test_pixel_array%  s    " 	2C!S1BGGI""2&BR//1C1CD{{}0SWb){{}  1	2r   c                    t        j                  ddd      }t        j                  |      }| j                  t        t
        |d       d|_        | j                  |j                  d       t        j                  |      }| j                   |       |u        ~t        j                          | j                   |       d u         G d dt         j                        } ||      }| j                  t        |      d       t        j                  |      }| j                   |       |u        ~t        j                          | j                   |       d u        y )	Nr4   rP   r   r2   	nonnativevaluec                       e Zd Zd Zy)+PixelArrayTypeTest.test_as_class.<locals>.Cc                      d| j                   z  S )Nzstring (%i, %i))rB   )r   s    r   __str__z3PixelArrayTypeTest.test_as_class.<locals>.C.__str__D  s    (4::55r   N)r)   r*   r+   r   r,   r   r   Cr   C  s    6r   r   zstring (2, 3))r:   r;   r<   r=   AttributeErrorgetattrr   r   weakrefrefr@   gccollectstr)r   rG   rH   rL   r   s        r   test_as_classz PixelArrayTypeTest.test_as_class6  s    ^^FAr*r".'2{Cw/KKOr	"


t$	6!! 	6 rUR/2KKOr	"


t$r   c                     t        ddd      }t        j                  |      }| j                  |t        j                         y)z>Ensure the PixelArray constructor accepts subclassed surfaces.rO   r   r2   N)r   r:   r<   assertIsInstance)r   r$   
pixelarrays      r   #test_pixelarray__subclassed_surfacez6PixelArrayTypeTest.test_pixelarray__subclassed_surfaceO  s6    !&!R0&&w/
j&*;*;<r   c                    dD ]o  }t        j                  dd|      }|j                  d       |j                  d      }t        j                  |      }|j                  d      }| j                  t        |      d       | j                  |j                  d      |       | j                  |j                  d      |       | j                  |j                  d      |       |j                  d      }| j                  t        |      d       | j                  |j                  d      |       | j                  |j                  d      |       | j                  |j                  d      |       r y )	NrT   r6   rU   r   r   r   rS   r   rU   r4   )r:   r;   rC   map_rgbr<   __getitem__r   r   )r   r   rG   valrH   rJ   s         r   test_get_columnz"PixelArrayTypeTest.test_get_columnW  s'   " 	6C3/BGGK **[)C""2&B..#CSXq)S__Q/5S__Q/5S__Q/5..$CSXq)S__Q/5S__Q/5S__Q/5!	6r   zpypy malloc abortc           
      D	   d}d}||f}d}d}d}dD ]  }t        j                  |d|      }|j                  |      }	|j                  |      }
|j                  |      }| j                  |
|	d|fz         | j                  ||	d|fz         | j                  |
|d|fz         |j	                  |       t        j
                  |      }|j                  d	      }t        |      D ]j  }|j                  |      }| j                  ||	d
|||	fz         |j                  d	|f|       |j                  |      }| j                  ||
d|||
fz         l |j                  d|       t        |      D ]  }|j                  |      j                  d	      }| j                  ||	d|||	fz         |j                  |d	f|       |j                  |      j                  d	      }| j                  ||d|||fz          |j                  d      j                  d      }| j                  ||	d|fz         |j                  d	      j                  d      }| j                  ||
d|fz         |j                  d      j                  d	      }| j                  ||d|fz         |j                  d      j                  d      }| j                  ||	d|fz         |j                  d      j                  d      }| j                  ||	d|fz         |j                  | d	z         j                  d      }| j                  ||
d|fz         |j                  |       j                  d      }| j                  ||	d|fz         |j                  d      j                  d      }| j                  ||	d|fz         |j                  d      j                  | d	z         }| j                  ||d|fz         |j                  d      j                  |       }| j                  ||	d|fz         |j                  d      j                  | d	z         }| j                  ||d|fz         |j                  d      j                  |       }| j                  ||	d|fz          y )Nr0   r1   r   )r   r   rn   )r   r      rT   r   zUnusable test colors for bpp %ir   z&ar[1][%i] == %i, mapped_bg_color == %iz(ar[1][%i] == %i, mapped_fg_color_y == %ir   r   z$ar[%i][1] = %i, mapped_bg_color = %iz&ar[%i][1] = %i, mapped_fg_color_x = %izbpp = %ir5   )
r:   r;   r   assertNotEqualrC   r<   r   r   r   set_at)r   r   r   rF   bg_color
fg_color_y
fg_color_xr   rG   mapped_bg_colormapped_fg_color_ymapped_fg_color_xrH   ar_yr   rJ   r   s                    r   test_get_pixelz!PixelArrayTypeTest.test_get_pixelj  s   !t 

" ^	HCa-B jj2O "

: 6 "

: 6!1SF:
 !1SF:
 !!1SF:
 GGH""2&B>>!$D1X &&q)  #<#/0 		1a&*-&&q)  %>#012$ IIfh'1X nnQ'33A6  #:ao=VV
 		1a&*-nnQ'33A6  %<#012  ..#//2CS/:3FG..#//2CS"3Z3&5HI..$003CS"3Z3&5HI..$003CS/:3FG..$003CS/:3FG..!a(44Q7CS"3Z3&5HI..!$003CS/:3FG..#//3CS/:3FG..#//Q7CS"3Z3&5HI..#//3CS/:3FG..#//Q7CS"3Z3&5HI..#//3CS/:3FG}^	Hr   c                    dD ]`  }t        j                  dd|      }|j                  d       t        j                  |      }|j	                  d      j                  dd       | j                  |d   d   |j                  d             |j	                  d      j                  dd       | j                  |d   d   |j                  d             |j	                  d      j                  dd       | j                  |d	   d
   |j                  d             |j	                  d      j                  dd       | j                  |d   d   |j                  d             c y )NrT   r   r   r   r   rS   r   r   rn   rn   rn   r   	      rU   )r:   r;   rC   r<   r   __setitem__r   r   r   s       r   test_set_pixelz!PixelArrayTypeTest.test_set_pixel  s)   " 	EC!S1BGGI""2&BNN1))![9RU1Xrzz+'>?NN1))!_=RU1Xrzz/'BCNN2**2?RU2Y

?(CDNN2**2?RU2Y

?(CD	Er   c                 4   dD ]  }t        j                  dd|      }|j                  d       t        j                  |      }t        j                  dd|      }|j                  d       t        j                  |      }|j	                  dd       | j                  |d   d   |j                  d             | j                  |d   d   |j                  d             |j	                  d	d       | j                  |d
   d   |j                  d             | j                  |d	   d   |j                  d             |j	                  dd       | j                  |d   d   |j                  d             | j                  |d   d   |j                  d             |j	                  ddgdz         | j                  |d   d   |j                  d             | j                  |d   d   |j                  d             | j                  t        |j                  dd       |j	                  d|j                  d             | j                  |d   d   |j                  d             | j                  |d   d   |j                  d              y )NrT   r   r   r   r   rS   rS   r4   r   r   r   r5   r   rS   rS   r      rS   rS   rS   rU   )   r   r      r   r   r   r   r   r   r   r   rP   )
r:   r;   rC   r<   r   r   r   r=   r   r   )r   r   rG   rH   rI   rJ   s         r   test_set_columnz"PixelArrayTypeTest.test_set_column  s9   " 0	BC3/BGGI""2&B..C0CHH]###C(C NN1o.RU1Xrzz/'BCRU1Xrzz/'BCNN2}-RU1Xrzz-'@ARVAY

=(ABNN2}-RU1Xrzz-'@ARVAY

=(AB NN1/!34RU1Xrzz/'BCRU1Xrzz/'BC 		" NN1cooa01RU1Xrzz-'@ARU1Xrzz-'@Aa0	Br   c                    dD ]X  }t        j                  dd|      }|j                  d       t        j                  |      }| j	                  t        |dd       d       | j	                  t        |dd d         d       | j	                  |dd d        | j	                  |d	d	 d        | j	                  |d
d
 d        | j	                  t        |dd       d       | j	                  t        |dd d         d       d|dd	 d|d   dd | j	                  |d   d	   |j                  d             | j	                  |d   d   |j                  d             [ y )NrT   r   r   r   r4   rP      r1   r5   r   r   r   r   )r0   r0   r0   r6   )r:   r;   rC   r<   r   r   r   r   s       r   test_get_slicez!PixelArrayTypeTest.test_get_slice  sV   " 	AC!S1BGGI""2&BSAa\1-SAa_b1R!Wd+R!Wd+R!Wd+ SBr^Q/SBr1.3
 &BqG &BqE!AJRU1Xrzz,'?@RU1Xrzz,'?@1	Ar   z0skipping for PyPy (segfaults on mac pypy3 6.0.0)c                    dD ]  }t        j                  dd|      }|j                  d       |j                  dd       t        j                  |      }| j                  d|v        | j                  d|v        | j                  d|v        | j                  d|v        | j                  d|d	   v        | j                  d|d	   v        | j                  d|d	   v        | j                  d|d	   v         y )
NrT   r   r   r   )rU   rU   r   r   rS   rU   )r:   r;   rC   r   r<   r@   r   r   s       r   test_containsz PixelArrayTypeTest.test_contains2  s    " 	0C!S1BGGIIIfo.""2&BOOIO,OOOr12]b01X^, OOIA./OOOr!u45]be34XA./	0r   c                     dD ]\  }t        j                  dd|      }|j                  d       t        j                  |      }| j	                  |j
                  |u        ^ y )NrT   r   r   r   )r:   r;   rC   r<   r@   r$   r   s       r   test_get_surfacez#PixelArrayTypeTest.test_get_surfaceE  sT    " 	.C!S1BGGI""2&BOOBJJ",-		.r   c                     t        ddd      }t        j                  |      }|j                  }| j	                  ||       | j                  |t        j                         | j                  |t                y)z<Ensure the surface attribute can handle subclassed surfaces.)r5   rP   r   r2   N)r   r:   r<   r$   assertIsr   r;   )r   expected_surfacer   r$   s       r   $test_get_surface__subclassed_surfacez7PixelArrayTypeTest.test_get_surface__subclassed_surfaceL  s`    *61b9&&'78
$$g/0gv~~6g7r   c           	         dD ]  }t        j                  dd|      }|j                  d       t        j                  |      }|j	                  d      }||dd | j                  |d   d   |       | j                  |d   d   |       | j                  |d   d   |       | j                  |d   d   |       |j	                  d      }||d	d
 | j                  |d   d   |       | j                  |d   d   |       |j	                  d      }d|d	d  | j                  |d   d   |       | j                  |d
   d   |       |j	                  d      }| j                  t        |j                  t        dd      |gdz         |j	                  d      }|j	                  d      }||g|dd | j                  |d   d   |       | j                  |d   d   |       | j                  |d   d   |       | j                  |d   d   |       | j                  |d   d   |       | j                  |d   d   |       | j                  |d   d   |       | j                  |d   d   |       d|d d  t        j                  dd|      }|j                  d       |j	                  d      }t        j                  |      }|d d  |d d  | j                  |d   d   |       | j                  |d   d   |       t        t        d      s
 G d dt              }t        j                  ddd      }t        j                  |      }t        |j                  d         D 	cg c]
  }	 ||	       }
}	|
D 	cg c]  }	t        j                  |	       }}	|
|d<   |
D 	cg c]  }	t        j                  |	       }}	t!        j"                          | j                  ||        y c c}	w c c}	w c c}	w )NrT   r   r   r   r   r4   r   r   r   r   rP   r   r   r   r   rU   rS   r   r   )rn   r   rS   r5   )rS   r   rS   r   getrefcountc                       e Zd ZdZy).PixelArrayTypeTest.test_set_slice.<locals>.IntUnique int instancesNr)   r*   r+   __doc__r,   r   r   Intr         .r   r   )r5   r4   r2   .)r:   r;   rC   r<   r   r   r=   r   r   slicehasattrsysintr   rB   r   r   r   )r   r   rG   rH   r   val2rI   rJ   r   i
pixel_listrefcnts_beforerefcnts_afters                r   test_set_slicez!PixelArrayTypeTest.test_set_sliceW  s   " F	@C3/BGGI""2&B **_-CBqGRU1Xs+RU1Xs+RU1Xs+RU1Xs+**]+CBr"IRU1Xs+RVAY,**_-C%BrsGRU1Xs+RVAY,
 **[)Cj"..%1+uqyQ **[)C::m,DDkBqGRU1Xs+RU1Xt,RU1Xs+RU1Xt,RU1Xs+RU1Xt,RU1Xs+RU1Xt, BqE..C0CHH]#**]+C##C(CFBqERU1Xs+RU1Xs+ sM*# 
 ^^FAr2&&r*.3BHHQK.@Ac!fA
A>H!I#//!"4!I!I$3=G H!3 H H

  ?MF	@B B!I Hs   "O&7O+O0c           	          dD 
]x  }t        j                  dd|      }|j                  dd       |j                  dd       |j                  dd       |j                  d      }t        j                  |      }| j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   d	   |       | j                  |d   d   |       | j                  |d
   d
   |       | j                  t        |d         d       | j                  t        |d         d       | j                  t        |d         d       | j                  t        |d d d d f         d       | j                  t        |d d f         d       | j                  t        |dd d f         d       | j                  t        |d d df         d       | j                  |d
d
f   d        | j                  |d
d
df   d        | j                  |d
d
ddf   d        | j                  |d
d
dd
f   d        | j                  |d
d
df   d        | j                  |d
d
df   d        | j                  |d
d
ddf   d        | j                  |d
d
ddf   d        | j                  |d
d
dddf   d        | j                  |d
d
ddd
f   d        | j                  |dd
d
f   d        | j                  |dd
d
d
f   d        | j                  |dd
d
df   d        | j                  |dd
d
df   d        | j                  |ddd
d
df   d        | j                  |dd
d
d
df   d        d|d<   d|d<   d|d<   d	|d	<   d
|d
<   d|d<   | j                  |d d ddf   d   d       | j                  |d d ddf   d   d       | j                  |d d ddf   d   d
       | j                  |dd d df   d   d       | j                  |dd d df   d   d       | j                  |dd d df   d   d       |d d dd d df   }| j                  t        |      d	       | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d
       | j                  |d   d   d
       | j                  |d   d   d
       | j                  |d   d   d       | j                  |d   d   d
       | j                  |d   d   d       |d	dd   }| j                  t        |      d	       | j                  |d   d   d	       | j                  |d   d   d	       | j                  |d   d   d	       | j                  |d   d   d	       | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d       |d d d   }| j                  t        |      d       | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d	   d       | j                  |d   d   d       | j                  |d   d   d
       | j                  |d   d   d
       | j                  |d   d	   d
       | j                  |d   d   d
       | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d       d|d d  |d d df   }dgt        |      z  |d d  | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       |ddd d f   }| j                  |j                  d|j                  d   f       |d d ddf   }| j                  |j                  |j                  d   df       t        j                  ddd      }t        j                  |      }| j                  |j                  |j                                t        j                  ddd      }t        j                  |      }| j                  |j                  |j                                |d   }| j                  ||u        t        t        d       s	 G d! d"t              }t        j                  d#dd      }t        j                  |      } |d       |d      }	}t        j                  |      t        j                  |	      }}
|||	f   }t        j                  |      t        j                  |	      }}| j                  ||
       | j                  ||       
{ y )$NrT   r   r   r   rP   r   rZ   )r   r   r   rP   r   ..r6   )r   .rU   ).rP   r4   .r   r   r5   r   r   c   )r   r   r   )r4   r   )r   r   )r   r   r   r5   r2   )r   r   r   c                       e Zd ZdZy).PixelArrayTypeTest.test_subscript.<locals>.Intr   Nr   r,   r   r   r   r	  9  r   r   r   r4   r4   )r:   r;   r   r   r<   r   r   rB   r   r@   r   r   r   r   )r   r   rG   r   rH   rJ   rI   r   r   r   	rx_before	ry_beforeprx_afterry_afters                  r   test_subscriptz!PixelArrayTypeTest.test_subscript  sv
    # a	6C3/BIIfk*IIfk*IIfk***[)C""2&B RXs+RXs+RXs+RU1Xs+RU1Xs+RU1Xs+ SH.2SF_a0SF_a0 SAqD]A.BqrF SAqD]A.SAqD]A.1Q34 R!S\40R!QqS\40R!QqS\401Qq56
 1Qr67 R!As
^T2R!B_d3R!Aqs
^T2R!B!_d3RQqS\40R!QqS\40RQqU
^T2RQqV_d3R!QqU
^T2R!QqV_d3 BqEBqEBqEBqEBqEBqE R!QZ]A.R!QZ]A.R!QZ]A.R3Q3Z]A.R3Q3Z]A.R3Q3Z]A. SqS#A#X,CSXq)SVAY*SVAY*SVAY*SVAY*SVAY*SVAY*SVAY*SVAY*SVAY* QqV*CSXq)SVAY*SVAY*SVAY*SVAY*SVAY*SVAY*SVAY*SVAY*SVAY*SVAY*TrT(CSXq)SVAY*SVAY*SVAY*SVBZ+SVAY*SVAY*SVAY*SVBZ+SWR[!,SWR[!,SWR[!, BqEQT(CTCH_CFSVR(SWb)SWb)SVR(RXr*RXr*RXr*RY+RY+ QqS!V*CSYYBHHQK(89Q!V*CSYY!a(89..B/C##C(CSYY7..B/C##C(CSYY7 S'COOC2I& sM*# 
 ^^FAr2&&r*1vs1v1'*q'93??1;M9	q!tH%(__Q%79K(  95  95Ca	6r   c                 ~   dD ]  }t        j                  dd|      }|j                  d       t        j                  |      }d|d<   | j	                  |d   d       | j	                  |d   d       | j	                  |d	   d       d
|d<   | j	                  |d   |j                  d
             | j	                  |d   |j                  d
             | j	                  |d	   |j                  d
             d|d d df<   | j	                  |d   |j                  d             | j	                  |d   |j                  d             | j	                  |d	   |j                  d             d|d<   | j	                  |d   |j                  d             | j	                  |d   |j                  d             | j	                  |d	   |j                  d             t        t        d      s G d dt              }t        j                  ddd      }t        j                  |      } |d       |d      }}t        j                  |      t        j                  |      }}d|||f<   t        j                  |      t        j                  |      }
}	| j	                  |	|       | j	                  |
|        y )NrT   r   r   r   r   r  rZ   r   r   )r   r   r   ).r   .r   r   c                       e Zd ZdZy)2PixelArrayTypeTest.test_ass_subscript.<locals>.Intr   Nr   r,   r   r   r   r  c  r   r   r   r
  r2   r   )
r:   r;   rC   r<   r   r   r   r   r   r   )r   r   rG   rH   r   r   r   r  r  r  r  s              r   test_ass_subscriptz%PixelArrayTypeTest.test_ass_subscriptG  s[   " '	6C3/BGGO$""2&B %BxLRXq)RXq)RZ+"BtHRXrzz+'>?RXrzz+'>?RZK)@A$Bq#vJRXrzz+'>?RXrzz+'>?RZK)@A!BsGRXrzz+'>?RXrzz+'>?RZK)@A sM*# 
 ^^FAr2&&r*1vs1v1'*q'93??1;M9	1a4%(__Q%79K(  95  95O'	6r   c                 r   dD ]  }t        j                  dd|dz        }t        j                  |      }|dd d d f   }| j                  |j                  |j                  z
  |j
                         |d d dd f   }| j                  |j                  |j                  z
  |j                  d          |d d dd d f   }| j                  |j                  |j                  z
  |j                  d   dz
  |j
                  z         |d d dd d f   }| j                  |j                  |j                  z
  |j                  d   dz
  |j
                  z         |d d d d df   }| j                  |j                  |j                  z
  |j                  d   dz
  |j                  d   z         |d d dd d f   }| j                  |j                  |j                  z
  |j                  d   dz
  |j                  d   z  |j                  d   dz
  |j                  d   z  z          |d d d d df   }| j                  |j                  |j                  z
  |j                  d   dz
  |j                  d   z         |dd d	d f   }| j                  |j                  |j                  z
  |j                  d   dz  |j                  d   d	z  z          |dd dd	d d
f   }| j                  |j                  |j                  z
  |j                  d   dz  |j                  d   d	z  z          |dddd d f   }| j                  |j                  |j                  z
  |j                  d   dz         |d d dddf   }| j                  |j                  |j                  z
  |j                  d   dz          y )Nr   r4   rP   r   )r   r   r   rU   r   r   r   r4   rP   r   r   r5   )r:   r;   r<   r   r   r   stridesrB   )r   r   rG   rH   rJ   rK   s         r   test_pixels_fieldz$PixelArrayTypeTest.test_pixels_fieldq  s    1	CC!G4B""2&BQRU)CS0023E3EEr{{SQU)CS0023E3EErzzRS}UTrT1W+C##b&8&88!qBKK/ TrT1W+C##b&8&88!qBKK/ Q"W+C##b&8&88!qBJJqM1 ddAg,C##b&8&88!qBJJqM1RXXa[1_

ST4UU Q"W+C##b&8&88!qBJJqM1 QS!#X,C##b&8&88

1!BJJqMA$55 QTT14a4Z.C##b&8&88

1!BJJqMA$55 QqVQY-C##b&8&88"**Q-!:K Q!BY-C##b&8&88"**Q-!:K_1	r   c                    t        j                  ddd      }t        j                  ddd      }dD ]E  }t        j                  dd|      }|j                  |j	                  |            }|j                  |j	                  |            }|j                  |       |j                  |d       t        j                  |      }|d d dd d df   j                         }|j                         }	| j                  |	j                  d	       | j                  |	j                  d
       dD ]#  }
| j                  |j                  |
      |       % dD ]#  }
| j                  |j                  |
      |       % H d}t        t        |            }t        |d d d         }d}t        j                  ||fdd      }t        j                  |      }|d d dd d f   }|j                         }|j!                         \  }}| j                  ||       | j                  ||       d}t        t        |            }t        |d d d         }d}t        j                  ||fdd      }t        j                  |      }|d d d d df   }|j                         }|j!                         \  }}| j                  ||       | j                  ||       y )NrS   rn   d   r   rT   r   )r4   r5   r   r   r4   r5   r0   ))r   r4   )r   rP   )r   r4   r
  )rP   r4   rP   rP   )r   r   )r   rU   )r   rU   )r4   rU   )rP   rU   rP   r   )r  r   r  )r4   r5   )r   r   )r4   r   r   rP   r2   )r:   rD   r;   	unmap_rgbr   rC   r<   r   get_rectr   r    r&   r   listr   r   r   )r   r   fg_colorr   rG   bg_color_adjfg_color_adjrH   newsfrectr  r   lstw_slicer   rJ   rI   w2h2h_slices                       r   test_make_surfacez$PixelArrayTypeTest.test_make_surface  s   <<S#.<<S!," 	@C!S1B<<

8(<=L<<

8(<=LGGL!GGL-0""2&BssCaCxL--/E>>#DTZZ+T[["- @   a,?@ F @  a,?@5	@< 58nc#A#h-^^QFAr*r"1aj BW%Q 58nc#A#h-^^QFAr*r"CaCj BQW%r   c                    d}d}d}t        |||      }t        j                  |      }|j                         }| j	                  ||       | j                  |t        j                         | j                  |t                | j                  |j                         |       | j                  |j                         |       | j                  |j                         |       y)z3Ensure make_surface can handle subclassed surfaces.rO   r   r2   N)r   r:   r<   r   assertIsNotr   r;   assertNotIsInstancer   r   	get_flagsget_bitsize)r   expected_sizeexpected_flagsexpected_depthoriginal_surfacer   r$   s          r   %test_make_surface__subclassed_surfacez8PixelArrayTypeTest.test_make_surface__subclassed_surface  s    *>>
 &&'78
))+"23gv~~6  /:))+];**,n=,,.?r   c                     dD ]i  }t        j                  dd|      }t        j                  |      }d}|D ]"  }| j                  t	        |      d       |dz  }$ | j                  |d       k y )NrT   )r5   r0   r   r0   r   r5   )r:   r;   r<   r   r   )r   r   rG   rH   
iterationscols         r   	test_iterzPixelArrayTypeTest.test_iter  sv    " 	,CC0B""2&BJ    S2.a
  Z+	,r   c                 H   dD ]  }t        j                  dd|      }|j                  d       |j                  d      }|j                  d      }t        j                  |      }|d d d   j                  dd       | j                  |d   d   |       | j                  |d   d   |       | j                  |d   d   |       | j                  |d   d	   |       | j                  |d
   d   |       | j                  |d   d   |       |d d d   j                  ddd       | j                  |d   d   |       | j                  |d   d   |       | j                  |d   d	   |       | j                  |d
   d   |       | j                  |d   d   |        y )NrT   rz   r   r   r   r4   r   rP   r6   rU   r   )r0   r1   2   weights)r:   r;   rC   r   r<   replacer   )r   r   rG   rvalovalrH   s         r   test_replacezPixelArrayTypeTest.test_replace  s   " 	-C!S1BGGK ::k*D::k*D""2&BssGOOK5RU1Xt,RU1Xt,RU1Xt,RU1Xt,RU1Xt,RU1Xt,ssGOOKlOKRU1Xt,RU1Xt,RU1Xt,RU1Xt,RU1Xt,'	-r   c                    dD ]  }t        j                  dd|      }|j                  d       |j                  dd       |j                  d      }|j                  d      }t        j                  |      }|j                  d      }| j                  |d   d   |       | j                  |d	   d   |       | j                  |d
   d   |       | j                  |d   d   |       | j                  |d   d   |       | j                  |d   d   |       |j                  dd      }| j                  |d   d   |       | j                  |d	   d   |       | j                  |d
   d   |       | j                  |d   d   |       | j                  |d   d   |       | j                  |d   d   |        y )NrT   rz   r   r   r   )r4   r4   r6   r6   r   r   r   r4   rP   r6   rU   r   )r0   r\   r;  r<  )r:   r;   rC   r   r<   extractr   )r   r   rG   r3   rw   rH   newars          r   test_extractzPixelArrayTypeTest.test_extract  s   " 	1C!S1BGGK GGK.JJ/EJJy)E""2&BJJ{+EU1Xa[%0U1Xa[%0U1Xa[%0U1Xa[%0U1Xa[%0U1Xa[%0JJ{MJBEU1Xa[%0U1Xa[%0U1Xa[%0U1Xa[%0U1Xa[%0U1Xa[%01	1r   c                    d}d}t        j                  ||fdd      }t        j                  |      }||f}d|f}d}| j                  |||||       t	        d d d      }t	        d d d      }	| j                  ||||	f||      \  }}}}| j                  |||||       t	        dd d      }t	        dd d      }	| j                  ||||	f||      \  }}}}| j                  |||||       y )	NP      r   r2   r   r4   rP   r5   )r:   r;   r<   _test_assignmentr   _array_slice)
r   r   r   rG   rH   rF   r  offsetxsliceyslices
             r   test_2dslice_assignmentz*PixelArrayTypeTest.test_2dslice_assignment3  s   ^^QFAr*r"1va&b"dGV<tT1%tT1%$($5$5vv&%
!D'6 	b"dGV<q$"q$"$($5$5vv&%
!D'6 	b"dGV<r   c                 j   | j                  |j                  |       |\  }}|\  }}	|j                         \  }
}t        j                  d      }t        j                  ddd      }|j                  |      }|j                  |       dd|dz
  f|dz
  dfd|dz
  f|dz
  df|dz
  |dz
  ffD ]  \  }}|||z  z   ||	z  z   }||
z  }|||
z  z
  }||f}|j                  |      }| j                  ||d||||||fz         ||||f<   |j                  |      }| j                  ||d||||||fz          y )	Nrw   r      rZ   r   rP   r   z6at pixarr posn (%i, %i) (surf posn (%i, %i)): %s != %s)r   rB   r   r:   rD   r   rC   r   )r   rG   rH   ar_size
ar_strides	ar_offsetar_war_h
ar_xstride
ar_ystridesf_wsf_hrw   colorpxcolorar_xr   	sf_offsetsf_ysf_xsf_posnsf_pixs                         r   rI  z#PixelArrayTypeTest._test_assignmentI  s   7+
d!+
J[[]
dW%Q2&**U#
qMAXqMqMAXqMAXtax 
 	JD$ "D:$55z8III$Dtd{*DTlGYYw'F"D$feDE %BtTzNYYw'F"D$feDE+	r   c                     ||   }|\  }}|\  }}	|j                  |      \  }
}}|j                  |	      \  }}}||
z
  |z   dz
  |z  }||z
  |z   dz
  |z  }	|\  }}||
|z  ||z  z   z  }||z  }||z  }|||	f||f|fS r   )indices)r   rH   rF   slicesr  rK  rL  rM  r   r   xstartxstopxstepystartystopystepxstrideystrides                     r   rJ  zPixelArrayTypeTest._array_slicen  s    Z1%~~a0u%~~a0uV^e#a'E1V^e#a'E1"&7"Vg%55555Aq6GW-v55r   c                 l   dD ]M  }t        j                  dd|dz        }t        j                  |      }| j                  |j                  |       O dD ]\  }|\  }}t        j                  |dd      }|j                         }|j                         }t        j                  |      }| j                  |j                  d       | j                  |j                  |       | j                  |j                  ||f       |d d dd d f   }t        dg|z  d d d         }	| j                  |j                  d       | j                  |j                  |	|f       | j                  |j                  d|z  |f       |d d d d df   }t        dg|z  d d d         }
| j                  |j                  d       | j                  |j                  ||
f       | j                  |j                  |d|z  f       |d   }| j                  |j                  d       | j                  |j                  |f       | j                  |j                  |f       |d d df   }| j                  |j                  d       | j                  |j                  |f       | j                  |j                  |f       _ y )	Nr  r
  r   rU   ))r   rV   )r5   r7   r2   r4   r   )r:   r;   r<   r   r   get_bytesize	get_pitchndimrB   r  r   )r   r   rG   rH   rB   r   r   pitchrJ   r(  r)  s              r   test_array_propertiesz(PixelArrayTypeTest.test_array_properties|  sX    	/C373B""2&BR[[#.	/
 ( 	2EDAqq"-B//#CLLNE""2&BRWWa(RXXu-RZZ#u6SqS!V*CqcAgss^$BSXXq)SYYQ0S[[1s7E*:;Q!V*CqcAgss^$BSXXq)SYYB0S[[3E	*:;Q%CSXXq)SYY-S[[5(3QT(CSXXq)SYY-S[[3&15	2r   c           	      `   d}|dz
  }d}|dz
  }dD ]  }t        j                  ||fd|dz        }t        j                  |      }t        ||z        D ]  }||||z  ||z  f<    |d d dd d f   |d d d d f<   t        ||z        D ]"  }| j	                  ||||z  z
  ||z  f   |       $ t        j                  |      }t        ||z        D ]  }||||z  ||z  f<    |d d d d df   |d d d d f<   t        ||z        D ]"  }| j	                  |||z  |||z  z
  f   |       $ t        j                  |      }t        ||z        D ]  }||||z  ||z  f<    |d d dd d df   |d d d d f<   t        ||z        D ]%  }| j	                  ||||z  z
  |||z  z
  f   |       '  y )Nr0   r   r1   r  r   rU   r   r:   r;   r<   r   r   )	r   r   max_xr   max_yr   rG   rH   r   s	            r   test_self_assignz#PixelArrayTypeTest.test_self_assign  s   AA 	GCA373B""2&B1q5\ &$%1q5!q&=!&$B$'{Bq!tH1q5\ ?  EAEM16$9!:A>?""2&B1q5\ &$%1q5!q&=!&!TrT'{Bq!tH1q5\ ?  AE516>$9!:A>?""2&B1q5\ &$%1q5!q&=!&$B$"*~Bq!tH1q5\ G  EAEM516>$A!BAFG%	Gr   c                    t        j                  ddd      }t        j                  |      }t        d d d      }|j	                  |d       | j                  |d   |j                  d             |j	                  |t        j                  ddd	             | j                  |d   |j                  d
             | j                  t        |j                  |d       | j                  t        |j                  ||fd       | j                  t        |j                  |g d       | j                  t        |j                  ||fg d       t        j                  ddd      }t        j                  |      }d|d d  | j                  |d   |j                  d             g d|d d  | j                  |d   d       | j                  |d   d       | j                  |d   d       y )N)r5   r5   r   r2   r   )r   r4   rP   rZ   r0   r   rP  )r0   r   rP  )r   r4   rP   r   r5   r  )r1      (   r1   r  ry  )r4   r   rz  )
r:   r;   r<   r   r   r   r   rD   r=   r   )r   rG   rH   indexs       r   test_color_valuez#PixelArrayTypeTest.test_color_value  s   
 ^^FAr*r"dD!$
ui(D2::i#89
ufll2r267D2::l#;<*bnne_M*bnnuenoV*bnneYG*bnnueniP^^FAr*r"1D2::l#;<1D2&D2&D2&r   c                 f   t        j                  ddd      }t        j                  |      }|j                  \  }}|j                  \  }}t        ||z        D ]  }||z  }||z  }	||||	f<    |j                         }
| j                  |
j                  ||f       | j                  |
j                  ||f       t        ||z        D ](  }||z  }||z  }	| j                  |
|	|f   |||	f          * |d   }|j                         }| j                  |j                  d|f       t        |      D ]  }	| j                  ||	   |d|	f           |d d df   }|j                         }| j                  |j                  d|f       t        d      D ]  }| j                  ||   |d|f           y )Nr  r   r2   r   r4   )r:   r;   r<   rB   r  r   r   r   )r   rG   rH   r   r   dxdyr   r   r   ar_tar1Dar2Ds                r   test_transposez!PixelArrayTypeTest.test_transpose  s    ^^FAr*r"xx1Bq1u 	AAAQABq!tH	 ||~aV,Bx0q1u 	3AAAQAT!Q$ZAqD2	3 !u~~aV,q 	2AT!Wd1a4j1	2!Q$x~~aV,q 	2AT!Wd1a4j1	2r   c                    d}t        j                  ||fdd      }t        j                  |      }t        j                  |dfdd      }t        j                  |      }t        |      D ]  }|dz   dz  ||df<    ||d<   t        |      D ].  }t        |      D ]  }| j	                  |||f   ||df            0 d|d<   t        j                  d|fdd      }	t        j                  |	      }
t        |      D ]  }|dz   dz  |
d|f<    |
|d<   t        |      D ].  }t        |      D ]  }| j	                  |||f   |
d|f            0 d|d<   t        j                  ddd      }t        j                  |      }d|d	<   ||d<   t        |      D ])  }t        |      D ]  }| j	                  |||f   d        + y )
Nr5   r   r2   r   r0   .r   *   rZ   rt  )r   r   rG   rH   r_  r\  r   r   r   r^  r   sf_1pxar_1pxs                r   !test_length_1_dimension_broadcastz4PixelArrayTypeTest.test_length_1_dimension_broadcast  s   ^^QFAr*r"~~q!fa,  &q 	&Aa%2DAJ	&3q 	7A1X 7  AqD41:67	7 3~~q!fa,  &q 	&Aa%2DAJ	&3q 	7A1X 7  AqD41:67	7 32.""6*t3q 	/A1X /  AqD2./	/r   c           	         t        j                  ddd      }t        j                  |      }| j                  t        |j
                  t        |d d ddf          | j                  t        |j
                  t        |ddd d f          y )N)r   r   r   r2   r4   )r:   r;   r<   r=   r   r   Ellipsis)r   rG   rH   s      r   test_assign_size_mismatchz,PixelArrayTypeTest.test_assign_size_mismatch  sl    ^^GQ+r"*bnnh1ac6
K*bnnh1Q36
Kr   c                    t        j                  dt         j                  d      }t        j                  |      }d|d<   |j	                  d      }| j                  t        |      t        |      j                  dz          y )N)rP   r   rV   r  .rZ   z([
  [42, 42, 42]]
))	r:   r;   SRCALPHAr<   get_at_mappedr   reprtyper)   )r   rG   rH   pixels       r   	test_reprzPixelArrayTypeTest.test_repr  sg     ^^FFOOR8r"3  (b48#4#47O#OPr   N)+r)   r*   r+   rM   rk   ru   rx   r~   r   r   r   r   r   r   unittestskipIfIS_PYPYr   r   r   r   r   r   r   r  r  r  r  r+  r5  r9  rA  rE  rN  rI  rJ  rr  rw  r|  r  r  r  r  r,   r   r   r.   r.   2   s   4>)&V1&f1&f-7^	/2"%2=6& X__W12eH 3eHNE$1BfA6 X__WPQ0 R0$.	8G@Re6N(6T2j9&v@&,-01:=,#J6!2FG6'22:/BLQr   r.   c                       e Zd Z ej                  ed      d        Z ej                  ed      d        Z ej                  ed      d        Z ej                  ed      d        Z	d Z
y)PixelArrayArrayInterfaceTestzskipping for PyPy (why?)c                 z   t        j                  ddd      }t        j                  |      }t        j                  |      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  |j                         y )Nr
  r   r2   r4   u)r:   r;   r<   r   ArrayInterfacer   twotypekindnddatar   )r   rG   rH   ais       r   
test_basicz'PixelArrayArrayInterfaceTest.test_basic#  s     ^^FAr*r"$$R(#c*"""4"45r   c                 2   ddgddgfD ]|  }|\  }}t        j                  |dd      }t        j                  |      }t        j                  |      }t        |j                        D cg c]  }|j                  |    }}| j                  ||       |d d dd d f   }	t        j                  |	      }
t        dg|z  d d d         }t        |
j                        D cg c]  }|
j                  |    }}| j                  |||g       |d d d d df   }	t        j                  |	      }
t        dg|z  d d d         }t        |
j                        D cg c]  }|
j                  |    }}| j                  |||g        y c c}w c c}w c c}w )Nr   rV   r5   r7   r   r2   r4   )
r:   r;   r<   r   r  r   r  rB   r   r   )r   rB   r   r   rG   rH   r  r   ai_shaperJ   ai2r(  r)  s                r   
test_shapez'PixelArrayArrayInterfaceTest.test_shape/  s{   "g2w' 	0EDAqq"-B""2&B((,B-2255\::H:Xu-SqS!V*C))#.CqcAgss^$B.3CFFm<		!<H<XAw/Q!V*C))#.CqcAgss^$B.3CFFm<		!<H<X2w/!	0
 ;
 =
 =s   *F
!FFc                     t        dd      D ]d  }d|z  }t        j                  dd|      }t        j                  |      }t	        j
                  |      }| j                  |j                  |       f y )Nr   r5   rU   r
  r   )r   r:   r;   r<   r   r  r   r   )r   bytes_per_pixelbits_per_pixelrG   rH   r  s         r   test_itemsizez*PixelArrayArrayInterfaceTest.test_itemsizeC  sg    $Q{ 	;O0N>:B""2&B((,BR[[/:	;r   c                    t         }|j                  |j                  z  |j                  z  }t	        j
                  ddd      }t	        j                  |      }|j                  |      }| j                  |j                  ||j                  z         |d d dd d f   }|j                  |      }| j                  |j                  |       t	        j
                  ddd      }t	        j                  |      }|j                  |      }| j                  |j                  ||j                  z         t	        j
                  ddd      }t	        j                  |      }|j                  |      }| j                  |j                  |       y )Nr0   r4   r   r2   r4   )rU   r4   rW   )r   r4   )r   PAI_NOTSWAPPEDPAI_WRITEABLEPAI_ALIGNEDr:   r;   r<   r  r   flagsPAI_FORTRAN)r   aimcommon_flagsr|   rH   r  rJ   s          r   
test_flagsz'PixelArrayArrayInterfaceTest.test_flagsL  s?   ))C,=,==ONN7Ar*q!#<#//#AB1aj$<0NN61b)q!#<#//#ABNN61b)q!#<0r   c                 P   g d}t        t        j                  |d      }d}t        j                  ||fdd      }|j                  d      }t        j                  |      }|d d D ]  }||z  }|j                  d       ||||z   d d f   }||d   d<   ||d   d	<   ||d   d
<   |j                         }t        j                  j                  |      }	| j                  |	|        t        t        j                  |d      }d}t        j                  ||fdd      }|j                  d      }t        j                  |      }|d d D ]  }||z  }|j                  d       |d d |||z   f   }||d   d<   ||d   d	<   ||d   d
<   |j                         }t        j                  j                  |      }	| j                  |	|        d}d}t        j                  ||fdd      }|j                  d      }t        j                  |      }t        |      t        |      ft        d|d      t        |      ft        d|d      t        |      ft        |      t        d|d      ft        |      t        d|d      ft        d|d      t        d|d      ft        d|d      t        d|d      ffD ]q  }
|j                  d       ||
   }||d   d<   ||d   d	<   ||d   d
<   |j                         }t        j                  j                  |      }	| j                  |	|       s y )N)r   rP   r   r   r7   r   rU   )r   r   rn   r   r   r   r   r1   r0   r4   rP   )r   operatormulr:   r;   r   r<   rC   r   	pixelcopyr   r   )r   factorsr   r   rG   rZ  rH   frI   sf3rd  rJ   s               r   test_slicingz)PixelArrayArrayInterfaceTest.test_slicingc  s&    8<<!,^^QFAq)

<(r"" 		1AQAGGIAAIqL!BBqE!HBrF2JBqE"I//#C""//3C&&sC0		1 8<<!,^^QFAq)

<(r"" 		1AQAGGIAq1q5yL!BBqE!HBrF2JBqE"I//#C""//3C&&sC0		1 ^^QFAq)

<(r"1XuQx 1a^U1X&1a^U1X&1XuQ1~&1XuQ1~&1a^U1a^,1a^U1a^,
 	1F GGIV*CCF1ICGBKCF2J""$C""//4C&&sC0!	1r   N)r)   r*   r+   r  r  r  r  r  r  r  r  r,   r   r   r  r  !  s    X__W89	6 :	6 X__W890 :0& X__W89; :; X__W891 :1,=1r   r  znewbuf not implementedc                   J    e Zd Zej                  rddlmZ dddddZd Zd	 Z	y
)PixelArrayNewBufferTestr   )buftoolsBz=H3xz=IrT   c                    | j                   }|j                  }dD ]  }t        j                  dd|      }t        j                  |      }| j
                  |   }|j                  }|j                  }|\  }	}
|j                  }|	|
z  |z  } |||j                        }| j                  |j                  |       | j                  |j                  |       | j                  |j                  d       | j                  |j                  |       | j                  |j                  |       | j!                  |j"                         | j                  |j                  |       | j                  |j                  |       | j                  |j$                  d u        | j                  |j&                  |j(                          t        j                  ddd      }t        j                  |      }| j
                  |j+                            }|j                  }|j                  }|\  }	}
|j                  }|	|
z  |z  } |||j,                        }| j                  |j                  |       | j                  |j                  |       | j                  |j                  d       | j                  |j                  |       | j                  |j                  d u        | j!                  |j"                         | j                  |j                  d u        | j                  |j                  d u        | j                  |j$                  d u        | j                  |j&                  |j(                          |||j.                        }| j                  |j                  d       | j                  |j                  |        |||j0                        }| j                  |j                  d       | j                  |j                  d u         |||j2                        }| j                  |j                  d       | j                  |j                  d u        | j                  |j                  |       | j                  |j                  |        |||j4                        }| j                  |j                  d       | j                  |j                  d u        | j                  |j                  |       | j                  |j                  |       | j7                  t8        |||j:                         | j7                  t8        |||j<                         |d d d d df   }| j
                  |j+                            }|j                  }|j                  }|\  }	}
|j                  }|	|
z  |z  } |||j>                        }| j                  |j                  |       | j                  |j                  d       | j                  |j                  |       | j                  |j                  d u        | j!                  |j"                         | j                  |j                  |       | j                  |j                  |       | j                  |j&                  |j(                         | j7                  t8        |||j,                         | j7                  t8        |||j<                         | j7                  t8        |||j:                         | j7                  t8        |||j2                         | j7                  t8        |||j4                         |d d dd d f   }| j
                  |j+                            }|j                  }|j                  }|\  }	}
|j                  }|	|
z  |z  } |||j>                        }| j                  |j                  |       | j                  |j                  d       | j                  |j                  |       | j                  |j                  d u        | j!                  |j"                         | j                  |j                  |       | j                  |j                  |       | j                  |j&                  |j(                         | j7                  t8        |||j,                         | j7                  t8        |||j<                         | j7                  t8        |||j:                         | j7                  t8        |||j2                         | j7                  t8        |||j4                         |jA                  d      }t        j                  |      }| j
                  |j+                            }|j                  }|j                  }|\  }	}
|j                  }|	|
z  |z  } |||jB                        }| j                  |j                  |       | j                  |j                  |       | j                  |j                  d       | j                  |j                  |       | j                  |j                  d u        | j!                  |j"                         | j                  |j                  |       | j                  |j                  |       | j                  |j$                  d u        | j                  |j&                  |j(                         | j7                  t8        |||j,                         | j7                  t8        |||j.                         | j7                  t8        |||j0                         | j7                  t8        |||j<                         | j7                  t8        |||j:                         | j7                  t8        |||j2                         | j7                  t8        |||j4                         y )NrT   r  r   r4   )rU   rV   r2   )r4   rP   r5   r   )"r  Importerr:   r;   r<   bitsize_to_formatr   rB   r  
PyBUF_FULLr@   objr   r   rp  formatr   readonly
suboffsetsbufr   r0  PyBUF_SIMPLEPyBUF_FORMATPyBUF_WRITABLEPyBUF_F_CONTIGUOUSPyBUF_ANY_CONTIGUOUSr=   BufferErrorPyBUF_C_CONTIGUOUSPyBUF_NDPyBUF_STRIDED
subsurfacePyBUF_STRIDES)r   r  r  bit_sizer|   rH   r  r   rB   r   r   r  lengthimp	ar_slicedr   s                   r   test_newbuf_2Dz&PixelArrayNewBufferTest.test_newbuf_2D  sQ	   ==$$' 	9Hw84A""1%B++H5F{{HHHEDAqjjGUX%F2x223COOCGGR(SWWf-SXXq)S\\84SZZ0S\\*SYY.S[['2OOCNNd23SWWa&7&78'	9* NN7Ar*q!''8;;1**Q!r8001$&)1%x0

d*+&		T)*t+,$./!"3"34r80011%V,r82231%

d*+r86671%

d*+E*g.r88891%

d*+E*g.+xX5P5PQ+xX5F5FGq#A#vJ	''8%%1##Q!y("8"89&)1%x0

d*+&E*g.!"3"34+xH<Q<QR+xH<M<MN+xH<W<WX+xH<W<WX9h.K.K	
 ssAvJ	''8%%1##Q!y("8"89&)1%x0

d*+&E*g.!"3"34+xH<Q<QR+xH<M<MN+xH<W<WX+xH<W<WX9h.K.K	
 \\,'r"''8;;1**Q!r8112$&)1%x0

d*+&E*g.$./""4"45+xX5J5JK+xX5J5JK+xX5L5LM+xX5F5FG+xX5P5PQ+xX5P5PQ+xX5R5RSr   c                 R   | j                   }|j                  }t        j                  ddd      }t        j                  |      }d}||   }| j
                  |j                            }|j                  }|j                  }	|	d   }
|j                  }|
|z  }|j                  ||z  z   } |||j                        }| j                  |j                  |       | j                  |j                  |       | j                  |j                   d       | j                  |j                  |       | j                  |j"                  d u        | j%                  |j&                         | j                  |j                  |	       | j                  |j                  |       | j                  |j(                  d u        | j                  |j*                  |        |||j,                        }| j                  |j                   d       | j                  |j"                  |       | j/                  t0        |||j2                         | j/                  t0        |||j4                         | j/                  t0        |||j6                         | j/                  t0        |||j8                         | j/                  t0        |||j:                         | j/                  t0        |||j<                         | j/                  t0        |||j>                         d}|d d |f   }|j                  }	|	d   }|j                  }||z  }|j                  ||jA                         z  z   } |||j,                        }| j                  |j                  |       | j                  |j                   d       | j                  |j                  |       | j                  |j"                  |       | j%                  |j&                         | j                  |j                  |	       | j                  |j                  |       | j                  |j*                  |       | j                  |j(                  d u         |||j2                        }| j                  |j                  |       | j                  |j                   d       | j                  |j                  |       | j                  |j"                  d u        | j%                  |j&                         | j                  |j                  d u        | j                  |j                  d u         |||j8                        }| j                  |j                  |       | j                  |j                   d       | j                  |j                  |       | j                  |j"                  d u        | j%                  |j&                         | j                  |j                  |	       | j                  |j                  d u         |||j:                        }| j                  |j                   d        |||j<                        }| j                  |j                   d        |||j>                        }| j                  |j                   d       y )N)r4   rV   r   r2   r   r0   )!r  r  r:   r;   r<   r  r0  r   rB   r  r   r  r@   r  r   r   rp  r  r   r  r  r  r  r=   r  r  r  r  r  r  r  r  ro  )r   r  r  r|   ar_2Dr   rH   r  r   rB   r   r  r  r  r  r   r   s                    r   test_newbuf_1Dz&PixelArrayNewBufferTest.test_newbuf_1D5  s*   ==$$NN7Ar*!!!$1X''8;;!H**X!h,.r8112$&)1%x0

d*+&E*g.$./#&r8../1%V,+xX5J5JK+xX5J5JK+xX5L5LM+xX5F5FG+xX5P5PQ+xX5P5PQ+xX5R5RS1a4[!H**X!akkm"33r8../&)1%x0V,&E*g.#&$./r8001&)1%x0

d*+&		T)*t+,r8,,-&)1%x0

d*+&E*t+,r86671%r86671%r88891%r   N)
r)   r*   r+   r:   HAVE_NEWBUFpygame.tests.test_utilsr  r  r  r  r,   r   r   r  r    s-     4Tt>HTTJ&r   r  __main__)r   r  platformr   r  r   	functoolsr   r  r   r   	NameErrorr:   python_implementationr  r   r  TestCaser.   r  r  r  r)   mainr,   r   r   <module>r     s=   	   
    3	0  2H224
4 8 ./kQ**I kQ 0kQ\' ./~18#4#4i ~1 0~1B V''')AB./Z&h// Z& 0 CZ&z zHMMO k3  		s   D DD