
    &h                     8   S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJ	r	   S SKJ
r
  S SKrS\R                  " 5       :H  r " S S5      r\R                   " \S5       " S	 S
\R"                  \5      5       r\R                   " \S5       " S S\R"                  \5      5       r\R                   " \R(                  (       + S5      \R                   " \S5       " S S\R"                  \5      5       5       r\S:X  a  \R.                  " 5         gg! \ a     Nf = f)    N)reduce)SurfaceSubclass)arrinterPyPyc                   (    \ rS rSrSS jrSS jrSrg)	TestMixin   Nc                 X   UR                  5       u  pEU R                  XE4UR                  5       U5        Uc  SOU S3nUSU SU S3-  n[        U5       HQ  n[        U5       H?  nU R                  UR	                  Xg45      UR	                  Xg45      U SU SU S35        MA     MS     g)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           T/var/www/auris/envauris/lib/python3.13/site-packages/pygame/tests/pixelarray_test.pyassert_surfaces_equalTestMixin.assert_surfaces_equal   s    {{}qfbkkmS9KbuBZ2aS""qA1X  IIqf%IIqf%e=2aS2      c                    ^ UR                  5       u  mnUR                  5         U4S j[        U5       5        H$  nU R                  UR	                  U5      X#5        M&     UR                  5         g)z5Checks if the surface is filled with the given color.c              3   P   >#    U  H  n[        T5        H  o"U4v   M
     M     g 7fN)r   ).0r   r   widths      r   	<genexpr>2TestMixin.assert_surface_filled.<locals>.<genexpr>-   s     HMq5<aF<FMs   #&N)r   lockr   r   r   unlock)r   surfaceexpected_colorr   heightposr"   s         @r   assert_surface_filledTestMixin.assert_surface_filled(   sU    ((*vHE&MHCW^^C0.F Ir    r    )__name__
__module____qualname____firstlineno__r   r+   __static_attributes__r-   r   r   r   r      s    "r   r   zpypy having issuesc                   J   \ 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\R                   " \S5      S 5       rS rS rS r\R                   " \S5      S 5       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*)+PixelArrayTypeTest2   c                    SnSnX4n[         R                  " USS5      n[         R                  " U5      n[         R                  " USS5      nU R                  [        UR
                  U5        [         R                  " U5      nUR                  U5      nU R                  [        U[         R                  5      5        U R                  UR                  U5        UR                  [         R                  " S5      5        U R                  XhR                  5        A[         R                  " SSSS	5      n	UR                  [         R                  " S
5      U	5        UR                  [         R                  " S5      5        UR                  [         R                  " S
5      U	5        UR                  U5      nUR                  [         R                  " S5      U	5        U R                  XHR                  5        g )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_comparePixelArrayTypeTest.test_compare4   s`    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)""2{{3r   c                    Sn[         R                  " S5      nSnS GH7  n[         R                  " XS9nUR                  U5        UR	                  5       nUR                  U5        UR                  S5      n[         R                  " U5      n[         R                  " UR	                  5       5      n	S Hl  n
UR                  XS9nU R                  UR                  UXJ45        U R                  UR                  XtU
45        U R                  U	R                  XtU
45        Mn     UR                  5         U	R                  5         WR                  5         GM:     g	)
z;Ensures compare works correctly with same colored surfaces.   r<   r:      rZ   rZ               r9   depthr   r   )        g{Gz?皙?      ?distanceNrA   rK   rB   rJ   copyr   rC   rF   r   r'   r+   close)r   rM   pixelarray_result_colorsurface_colorra   expected_pixelarray_surfacesurf_aexpected_surface_colorpixelarray_apixelarray_brg   pixelarray_results               r   )test_compare__same_colors_within_distance<PixelArrayTypeTest.test_compare__same_colors_within_distanceS   sD   "(,,w"7,$E*0..*K'',,-DE 1557FKK& &,]]6%:"!,,V4L!,,V[[];L1$0$8$8  %9 %! **%--/%
 ** ((*@(BS ** ((*@(BS 2&   ##%G %r   c                     Sn[         R                  " S5      nSnSnS GH[  n[         R                  " XS9nUR                  U5        UR	                  5       nUR                  U5        UR                  S5      n[         R                  " U5      n	UR	                  5       n
U
R                  U5        U
R                  S5      n[         R                  " U
5      nS Hl  nU	R                  XS	9nU R                  UR                  UX]45        U R                  U	R                  XU45        U R                  UR                  XU45        Mn     U	R                  5         UR                  5         WR                  5         GM^     g
)zwEnsures compare works correctly with different colored surfaces
and the color difference is within the given distance.
rW   r:   rY      rZ   rZ   r[   r\   r`   rb   )g?g333333?g      ?re   rf   Nrh   r   rM   rk   surface_a_colorsurface_b_colorra   rm   rn   expected_surface_a_colorrp   surf_bexpected_surface_b_colorrq   rg   rr   s                  r   .test_compare__different_colors_within_distanceAPixelArrayTypeTest.test_compare__different_colors_within_distance~   sp    "(,,w"7..$E*0..*K'',,-DE 1557FKK( (.}}V'<$!,,V4L0557FKK( (.}}V'<$!,,V4L0$0$8$8  %9 %! **%--/%
 ** ((*BHDU ** ((*BHDU 1&   ##%Q %r   c                     Sn[         R                  " S5      nSnSnS GH[  n[         R                  " XS9nUR                  U5        UR	                  5       nUR                  U5        UR                  S5      n[         R                  " U5      n	UR	                  5       n
U
R                  U5        U
R                  S5      n[         R                  " U
5      nS Hl  nU	R                  XS	9nU R                  UR                  UX]45        U R                  U	R                  XU45        U R                  UR                  XU45        Mn     U	R                  5         UR                  5         WR                  5         GM^     g
)z{Ensures compare works correctly with different colored surfaces
and the color difference is not within the given distance.
rW   blackrY   rv   r\   r`   rb   )rc   gh㈵>g-C6?gMbP?rf   Nrh   rx   s                  r   2test_compare__different_colors_not_within_distanceEPixelArrayTypeTest.test_compare__different_colors_not_within_distance   sp    "(,,w"7..$E*0..*K'',,-DE 1557FKK( (.}}V'<$!,,V4L0557FKK( (.}}V'<$!,,V4L9$0$8$8  %9 %! **%--/%
 ** ((*BHDU ** ((*BHDU :&   ##%Q %r   c                 ~    [         R                  " S5      n[         R                  " U5      nUR                  5         Ag)z"does not crash when it is deleted.r7   r7   N)rA   rB   rC   rj   r   sas      r   
test_closePixelArrayTypeTest.test_close   s,    NN8$a 		r   c                 >  ^
 [         R                  " S5      n[         R                  " U5      m
T
R                  5         U
4S jnU R	                  [
        U5        U
4S jnU R	                  [
        U5        U
4S jnU R	                  [
        U5        U
4S jnU R	                  [
        U5        U
4S jnU R	                  [
        U5        U
4S jnU R	                  [
        U5        U
4S jnU R	                  [
        U5        U
4S	 jn	U R	                  [
        U	5        g
)z3when you try to do an operation after it is closed.r   c                     > T S S    g r    r-   r   s   r   access_after:PixelArrayTypeTest.test_close_raises.<locals>.access_after   s
    aDr   c                     > ST S S & g N   r-   r   s   r   assign_all_after>PixelArrayTypeTest.test_close_raises.<locals>.assign_all_after   s    AaDr   c                  &   > T R                  5         g r    )make_surfacer   s   r   make_surface_after@PixelArrayTypeTest.test_close_raises.<locals>.make_surface_after   s    NNr   c                     > T H  n M     g r    r-   )r   r   s    r   
iter_after8PixelArrayTypeTest.test_close_raises.<locals>.iter_after   s     r   c                  &   > T R                  5         g r    )rj   r   s   r   close_after9PixelArrayTypeTest.test_close_raises.<locals>.close_after  s    GGIr   c                     > T R                     g r    )r'   r   s   r   surface_after;PixelArrayTypeTest.test_close_raises.<locals>.surface_after  s
    IIr   c                     > T R                     g r    )itemsizer   s   r   itemsize_after<PixelArrayTypeTest.test_close_raises.<locals>.itemsize_after  s
    JJr   c                  &   > T R                  5         g r    )	transposer   s   r   transpose_after=PixelArrayTypeTest.test_close_raises.<locals>.transpose_after  s    KKMr   N)rA   rB   rC   rj   rD   
ValueError)r   r   r   r   r   r   r   r   r   r   r   s             @r   test_close_raises$PixelArrayTypeTest.test_close_raises   s    NN8$a 			 	*l3	 	*&67	 	*&89	 	*j1	 	*k2	 	*m4	 	*n5	 	*o6r   c                 ,   [         R                  " S5      n[         R                  " U5       nUSS   SSS5        [         R                  " U5       n[         R                  " S5      USS& SSS5        g! , (       d  f       NG= f! , (       d  f       g= f)zcloses properly.r   Ndeepskyblue)rA   rB   rC   rK   r   s      r   test_context_manager'PixelArrayTypeTest.test_context_manager  sj    NN8$q!QaD "
 q!Q<<.AaD "! "!
 "!s   A4B4
B
Bc                    S H  n[         R                  " SSU5      nUR                  S5        [         R                  " U5      nU R	                  UR
                  UR
                  5        UR                  5       (       a  U R                  UR                  5       5        U R	                  [        U5      S5        AUR                  5       (       d  M  U R                  UR                  5       5        M     g )Nr\   r7   r8   r   r   r   r   r7   )rA   rB   rJ   rC   r   _pixels_addressmustlockrG   
get_lockedlenassertFalser   bpprN   rO   s       r   test_pixel_array#PixelArrayTypeTest.test_pixel_array%  s    "C!S1BGGI""2&BR//1C1CD{{}}0SWb){{}}  1 #r   c                    [         R                  " SSS5      n[         R                  " U5      nU R                  [        [
        US5        SUl        U R                  UR                  S5        [        R                  " U5      nU R                  U" 5       UL 5        A[        R                  " 5         U R                  U" 5       S L 5         " S S[         R                  5      nU" U5      nU R                  [        U5      S5        [        R                  " U5      nU R                  U" 5       UL 5        A[        R                  " 5         U R                  U" 5       S L 5        g )	Nr;   rX   r   r9   	nonnativevaluec                       \ rS rSrS rSrg)+PixelArrayTypeTest.test_as_class.<locals>.CiC  c                      SU R                   -  $ )Nzstring (%i, %i))rI   )r   s    r   __str__3PixelArrayTypeTest.test_as_class.<locals>.C.__str__D  s    (4::55r   r-   N)r.   r/   r0   r1   r   r2   r-   r   r   Cr   C  s    6r   r   zstring (2, 3))rA   rB   rC   rD   AttributeErrorgetattrr   r   weakrefrefrG   gccollectstr)r   rN   rO   rS   r   s        r   test_as_class 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                     [        SSS5      n[        R                  " U5      nU R                  U[        R                  5        g)z>Ensure the PixelArray constructor accepts subclassed surfaces.rW   r   r9   N)r   rA   rC   assertIsInstance)r   r'   
pixelarrays      r   #test_pixelarray__subclassed_surface6PixelArrayTypeTest.test_pixelarray__subclassed_surfaceO  s6    !&!R0&&w/
j&*;*;<r   c                    S GHr  n[         R                  " SSU5      nUR                  S5        UR                  S5      n[         R                  " U5      nUR                  S5      nU R                  [        U5      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        UR                  S5      nU R                  [        U5      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Mu     g )	Nr\   r=   r]   r   r   r   r[   r   r]   r;   )rA   rB   rJ   map_rgbrC   __getitem__r   r   )r   r   rN   valrO   rQ   s         r   test_get_column"PixelArrayTypeTest.test_get_columnW  s"   "C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! #r   zpypy malloc abortc           
      2	   SnSnX4nSnSnSnS GH  n[         R                  " USU5      nUR                  U5      n	UR                  U5      n
UR                  U5      nU R                  U
U	SU4-  5        U R                  UU	SU4-  5        U R                  U
USU4-  5        UR	                  U5        [         R
                  " U5      nUR                  S	5      n[        U5       Hi  nUR                  U5      nU R                  UU	S
XU	4-  5        UR                  S	U4U5        UR                  U5      nU R                  UU
SXU
4-  5        Mk     UR                  SU5        [        U5       H  nUR                  U5      R                  S	5      nU R                  UU	SUX4-  5        UR                  US	4U5        UR                  U5      R                  S	5      nU R                  UUSUX4-  5        M     UR                  S5      R                  S5      nU R                  XSU4-  5        UR                  S	5      R                  S5      nU R                  XSU4-  5        UR                  S5      R                  S	5      nU R                  XSU4-  5        UR                  S5      R                  S5      nU R                  XSU4-  5        UR                  S5      R                  S5      nU R                  XSU4-  5        UR                  U* S	-   5      R                  S5      nU R                  XSU4-  5        UR                  U* 5      R                  S5      nU R                  XSU4-  5        UR                  S5      R                  S5      nU R                  XSU4-  5        UR                  S5      R                  U* S	-   5      nU R                  XSU4-  5        UR                  S5      R                  U* 5      nU R                  XSU4-  5        UR                  S5      R                  U* S	-   5      nU R                  XSU4-  5        UR                  S5      R                  U* 5      nU R                  XSU4-  5        GM     g )Nr7   r8   r   )r   r   rw   )r   r      r\   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 = %ir<   )
rA   rB   r   assertNotEqualrJ   rC   r   r   r   set_at)r   r   r   rM   bg_color
fg_color_y
fg_color_xr   rN   mapped_bg_colormapped_fg_color_ymapped_fg_color_xrO   ar_yr   rQ   r   s                    r   test_get_pixel!PixelArrayTypeTest.test_get_pixelj  s   t 

"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=VV
 		1a&*-nnQ'33A6  %<#12   ..#//2CS:3FG..#//2CSZ3&5HI..$003CSZ3&5HI..$003CS:3FG..$003CS:3FG..!a(44Q7CSZ3&5HI..!$003CS:3FG..#//3CS:3FG..#//Q7CSZ3&5HI..#//3CS:3FG..#//Q7CSZ3&5HI..#//3CS:3FG} #r   c                    S GHc  n[         R                  " SSU5      nUR                  S5        [         R                  " U5      nUR	                  S5      R                  SS5        U R                  US   S   UR                  S5      5        UR	                  S5      R                  SS5        U R                  US   S   UR                  S5      5        UR	                  S5      R                  SS5        U R                  US	   S
   UR                  S5      5        UR	                  S5      R                  SS5        U R                  US   S   UR                  S5      5        GMf     g )Nr\   r   r   r   r   r[   r   r   rw   rw   rw   r   	      r]   )rA   rB   rJ   rC   r   __setitem__r   r   r   s       r   test_set_pixel!PixelArrayTypeTest.test_set_pixel  s"   "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 #r   c                 @   S GH  n[         R                  " SSU5      nUR                  S5        [         R                  " U5      n[         R                  " SSU5      nUR                  S5        [         R                  " U5      nUR	                  SS5        U R                  US   S   UR                  S5      5        U R                  US   S   UR                  S5      5        UR	                  S	S5        U R                  US
   S   UR                  S5      5        U R                  US	   S   UR                  S5      5        UR	                  SS5        U R                  US   S   UR                  S5      5        U R                  US   S   UR                  S5      5        UR	                  SS/S-  5        U R                  US   S   UR                  S5      5        U R                  US   S   UR                  S5      5        U R                  [        UR                  SS5        UR	                  SUR                  S5      5        U R                  US   S   UR                  S5      5        U R                  US   S   UR                  S5      5        GM     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   r   r   r   r   rX   )
rA   rB   rJ   rC   r   r   r   rD   r   r   )r   r   rN   rO   rP   rQ   s         r   test_set_column"PixelArrayTypeTest.test_set_column  s2   "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 #r   c                    S GH[  n[         R                  " SSU5      nUR                  S5        [         R                  " U5      nU R	                  [        USS 5      S5        U R	                  [        USS S   5      S5        U R	                  USS S 5        U R	                  US	S	 S 5        U R	                  US
S
 S 5        U R	                  [        USS 5      S5        U R	                  [        USS S   5      S5        SUSS	& SUS   SS& U R	                  US   S	   UR                  S5      5        U R	                  US   S   UR                  S5      5        GM^     g )Nr\   r   r   r   r;   rX      r8   r<   r   r   r   r   )r7   r7   r7   r=   )rA   rB   rJ   rC   r   r   r   r   s       r   test_get_slice!PixelArrayTypeTest.test_get_slice  sO   "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 #r   z0skipping for PyPy (segfaults on mac pypy3 6.0.0)c                    S GH  n[         R                  " SSU5      nUR                  S5        UR                  SS5        [         R                  " U5      nU R                  SU;   5        U R                  SU;   5        U R                  SU;   5        U R                  SU;   5        U R                  SUS	   ;   5        U R                  SUS	   ;   5        U R                  SUS	   ;   5        U R                  SUS	   ;   5        GM     g )
Nr\   r   r   r   )r]   r]   r   r   r[   r]   )rA   rB   rJ   r   rC   rG   r   r   s       r   test_contains PixelArrayTypeTest.test_contains2  s    "C!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./ #r   c                     S H_  n[         R                  " SSU5      nUR                  S5        [         R                  " U5      nU R	                  UR
                  UL 5        Ma     g )Nr\   r   r   r   )rA   rB   rJ   rC   rG   r'   r   s       r   test_get_surface#PixelArrayTypeTest.test_get_surfaceE  sO    "C!S1BGGI""2&BOOBJJ",-	 #r   c                     [        SSS5      n[        R                  " U5      nUR                  nU R	                  X15        U R                  U[        R                  5        U R                  U[         5        g)z<Ensure the surface attribute can handle subclassed surfaces.)r<   rX   r   r9   N)r   rA   rC   r'   assertIsr   rB   )r   expected_surfacer   r'   s       r   $test_get_surface__subclassed_surface7PixelArrayTypeTest.test_get_surface__subclassed_surfaceL  s]    *61b9&&'78
$$g0gv~~6g7r   c           	         S GH  n[         R                  " SSU5      nUR                  S5        [         R                  " U5      nUR	                  S5      nXCSS& U R                  US   S   U5        U R                  US   S   U5        U R                  US   S   U5        U R                  US   S   U5        UR	                  S5      nXCS	S
& U R                  US   S   U5        U R                  US   S   U5        UR	                  S5      nSUS	S & U R                  US   S   U5        U R                  US
   S   U5        UR	                  S5      nU R                  [        UR                  [        SS5      U/S-  5        UR	                  S5      nUR	                  S5      nXE/USS& U R                  US   S   U5        U R                  US   S   U5        U R                  US   S   U5        U R                  US   S   U5        U R                  US   S   U5        U R                  US   S   U5        U R                  US   S   U5        U R                  US   S   U5        SUS S & [         R                  " SSU5      nUR                  S5        UR	                  S5      n[         R                  " U5      nUS S  US S & U R                  US   S   U5        U R                  US   S   U5        [        [        S5      (       d  GM   " S S[        5      n[         R                  " SSS5      n[         R                  " U5      n[        UR                  S   5       V	s/ s H
  o" U	5      PM     n
n	U
 V	s/ s H  n	[        R                  " U	5      PM     nn	XS'   U
 V	s/ s H  n	[        R                  " U	5      PM     nn	[         R"                  " 5         U R                  X5        GM     g s  sn	f s  sn	f s  sn	f )Nr\   r   r   r   r   r;   r   r   r  r   rX   r   r   r   r   r]   r[   r   r   )rw   r   r[   r<   )r[   r   r[   r  getrefcountc                       \ rS rSrSrSrg).PixelArrayTypeTest.test_set_slice.<locals>.Inti  Unique int instancesr-   Nr.   r/   r0   r1   __doc__r2   r-   r   r   Intr        .r   r  )r<   r;   r9   .)rA   rB   rJ   rC   r   r   rD   r   r   slicehasattrsysintr   rI   r  r   r   )r   r   rN   rO   r   val2rP   rQ   r  i
pixel_listrefcnts_beforerefcnts_afters                r   test_set_slice!PixelArrayTypeTest.test_set_sliceW  s   "C3/BGGI""2&B **_-CqGRU1Xs+RU1Xs+RU1Xs+RU1Xs+**]+Cr"IRU1Xs+RVAY,**_-C%BrsGRU1Xs+RVAY,
 **[)Cj"..%1+uqyQ **[)C::m,DkBq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>H!Ij#//!"4j!I$3=G HZ!3Z H

  ?M #B B!I Hs   +O: O?, Pc           	         S G
H  n[         R                  " SSU5      nUR                  SS5        UR                  SS5        UR                  SS5        UR                  S5      n[         R                  " U5      nU R                  US   U5        U R                  US   U5        U R                  US   U5        U R                  US   S	   U5        U R                  US   S   U5        U R                  US
   S
   U5        U R                  [        US   5      S5        U R                  [        US   5      S5        U R                  [        US   5      S5        U R                  [        US S 2S S 24   5      S5        U R                  [        US S 24   5      S5        U R                  [        USS S 24   5      S5        U R                  [        US S 2S4   5      S5        U R                  US
S
24   S 5        U R                  US
S
2S4   S 5        U R                  US
S
2SS24   S 5        U R                  US
S
2SS
24   S 5        U R                  US
S
S24   S 5        U R                  US
S
S24   S 5        U R                  US
S
S2S4   S 5        U R                  US
S
S2S4   S 5        U R                  US
S
S2SS24   S 5        U R                  US
S
S2SS
24   S 5        U R                  USS
S
24   S 5        U R                  USS
2S
S
24   S 5        U R                  USS
S
S24   S 5        U R                  USS
S
S24   S 5        U R                  USS2S
S
S24   S 5        U R                  USS
2S
S
S24   S 5        SUS'   SUS'   SUS'   S	US	'   S
US
'   SUS'   U R                  US S S2S4   S   S5        U R                  US S S2S4   S   S5        U R                  US S S2S4   S   S
5        U R                  USS S S24   S   S5        U R                  USS S S24   S   S5        U R                  USS S S24   S   S5        US S S2S S S24   nU R                  [        U5      S	5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S   S
5        U R                  US   S   S
5        U R                  US   S   S
5        U R                  US   S   S5        U R                  US   S   S
5        U R                  US   S   S5        US	SS2   nU R                  [        U5      S	5        U R                  US   S   S	5        U R                  US   S   S	5        U R                  US   S   S	5        U R                  US   S   S	5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S   S5        US S S2   nU R                  [        U5      S5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S	   S5        U R                  US   S   S5        U R                  US   S   S
5        U R                  US   S   S
5        U R                  US   S	   S
5        U R                  US   S   S
5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S   S5        SUS S & US S 2S4   nS/[        U5      -  US S & U R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  US   S5        USS2S S 24   nU R                  UR                  SUR                  S   45        US S 2SS24   nU R                  UR                  UR                  S   S45        [         R                  " SSS5      n[         R                  " U5      nU R                  UR                  UR                  5       5        [         R                  " SSS5      n[         R                  " U5      nU R                  UR                  UR                  5       5        US   nU R                  XTL 5        [        [        S 5      (       d  G	M   " S! S"[        5      n[         R                  " S#SS5      n[         R                  " U5      nU" S5      U" S5      p[        R                  " U5      [        R                  " U	5      pXHU	4   n[        R                  " U5      [        R                  " U	5      pU R                  X5        U R                  X5        G
M     g )$Nr\   r   r   r   rX   r   rb   )r   r   r   rX   r   ..r=   )r   .r]   ).rX   r;   .r   r   r<   r  r  c   )r   r   r   )r;   r   )r   r   )r   r   r   r<   r9   )r  r   r  c                       \ rS rSrSrSrg).PixelArrayTypeTest.test_subscript.<locals>.Inti9  r  r-   Nr  r-   r   r   r  r,  9  r  r   r  r;   r;   )rA   rB   r   r   rC   r   r   rI   r   rG   r  r  r  r  )r   r   rN   r   rO   rQ   rP   r  r   r   	rx_before	ry_beforeprx_afterry_afters                  r   test_subscript!PixelArrayTypeTest.test_subscript  sd
    #C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OOCI& sM**# 
 ^^FAr2&&r*1vs1v1'*q'93??1;M9!tH%(__Q%79K(  5  5C #r   c                    S GH  n[         R                  " SSU5      nUR                  S5        [         R                  " U5      nSUS'   U R	                  US   S5        U R	                  US   S5        U R	                  US	   S5        S
US'   U R	                  US   UR                  S
5      5        U R	                  US   UR                  S
5      5        U R	                  US	   UR                  S
5      5        SUS S 2S4'   U R	                  US   UR                  S5      5        U R	                  US   UR                  S5      5        U R	                  US	   UR                  S5      5        SUS'   U R	                  US   UR                  S5      5        U R	                  US   UR                  S5      5        U R	                  US	   UR                  S5      5        [        [        S5      (       d  GM   " S S[        5      n[         R                  " SSS5      n[         R                  " U5      nU" S5      U" S5      pe[        R                  " U5      [        R                  " U5      pSX5U4'   [        R                  " U5      [        R                  " U5      pU R	                  X5        U R	                  X5        GM     g )Nr\   r   r   r   r   r(  rb   r   r   )r   r   r   ).r  .r   r  c                       \ rS rSrSrSrg)2PixelArrayTypeTest.test_ass_subscript.<locals>.Intic  r  r-   Nr  r-   r   r   r  r8  c  r  r   r  r-  r9   r   )
rA   rB   rJ   rC   r   r   r  r  r  r  )r   r   rN   rO   r  r   r   r.  r/  r1  r2  s              r   test_ass_subscript%PixelArrayTypeTest.test_ass_subscriptG  sM   "C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a4%(__Q%79K(  5  5O #r   c                 z   S GH  n[         R                  " SSUS-  5      n[         R                  " U5      nUSS 2S S 24   nU R                  UR                  UR                  -
  UR
                  5        US S 2SS 24   nU R                  UR                  UR                  -
  UR                  S   5        US S S2S S 24   nU R                  UR                  UR                  -
  UR                  S   S-
  UR
                  -  5        US S S2S S 24   nU R                  UR                  UR                  -
  UR                  S   S-
  UR
                  -  5        US S 2S S S24   nU R                  UR                  UR                  -
  UR                  S   S-
  UR                  S   -  5        US S S2S S 24   nU R                  UR                  UR                  -
  UR                  S   S-
  UR                  S   -  UR                  S   S-
  UR                  S   -  -   5        US S 2S S S24   nU R                  UR                  UR                  -
  UR                  S   S-
  UR                  S   -  5        USS 2S	S 24   nU R                  UR                  UR                  -
  UR                  S   S-  UR                  S   S	-  -   5        USS S2S	S S
24   nU R                  UR                  UR                  -
  UR                  S   S-  UR                  S   S	-  -   5        USSS2S S 24   nU R                  UR                  UR                  -
  UR                  S   S-  5        US S 2SSS24   nU R                  UR                  UR                  -
  UR                  S   S-  5        GM     g )Nr   r;   rX   r   )r   r  r   r]   r   r   r   r;   rX   r   r   r<   )rA   rB   rC   r   r   r   stridesrI   )r   r   rN   rO   rQ   rR   s         r   test_pixels_field$PixelArrayTypeTest.test_pixels_fieldq  s   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_  r   c                    [         R                  " SSS5      n[         R                  " SSS5      nS GHL  n[         R                  " SSU5      nUR                  UR	                  U5      5      nUR                  UR	                  U5      5      nUR                  U5        UR                  US5        [         R                  " U5      nUS S S2S S S24   R                  5       nUR                  5       n	U R                  U	R                  S	5        U R                  U	R                  S
5        S H$  n
U R                  UR                  U
5      U5        M&     S H$  n
U R                  UR                  U
5      U5        M&     GMO     Sn[        [        U5      5      n[        US S S2   5      nSn[         R                  " X4SS5      n[         R                  " U5      nUS S S2S S 24   nUR                  5       nUR!                  5       u  nnU R                  UU5        U R                  UU5        Sn[        [        U5      5      n[        US S S2   5      nSn[         R                  " X4SS5      n[         R                  " U5      nUS S 2S S S24   nUR                  5       nUR!                  5       u  nnU R                  UU5        U R                  UU5        g )Nr[   rw   d   r   r\   r   )r;   r<   r   r   r;   r<   r7   ))r   r;   )r   rX   )r   r;   r-  )rX   r;   rX   rX   )r   r  )r   r]   )r   r]   )r;   r]   )rX   r]   rX   r  )r'  r   r*  )r;   r<   )r   r  )r;   r  r   rX   r9   )rA   rK   rB   	unmap_rgbr   rJ   rC   r   get_rectr   r"   r)   r   listr   r   r   )r   r   fg_colorr   rN   bg_color_adjfg_color_adjrO   newsfrectr0  r   lstw_slicer   rQ   rP   w2h2h_slices                       r   test_make_surface$PixelArrayTypeTest.test_make_surface  sp   <<S#.<<S!,"C!S1B<<

8(<=L<<

8(<=LGGL!GGL-0""2&BssCaCxL--/E>>#DTZZ+T[["-   a,? F  a,? F5 #< 58nc#A#h-^^QFAr*r"1aj BW%Q 58nc#A#h-^^QFAr*r"CaCj BQW%r   c                    SnSnSn[        XU5      n[        R                  " U5      nUR                  5       nU R	                  Xd5        U R                  U[        R                  5        U R                  U[         5        U R                  UR                  5       U5        U R                  UR                  5       U5        U R                  UR                  5       U5        g)z3Ensure make_surface can handle subclassed surfaces.rW   r   r9   N)r   rA   rC   r   assertIsNotr   rB   assertNotIsInstancer   r   	get_flagsget_bitsize)r   expected_sizeexpected_flagsexpected_depthoriginal_surfacer   r'   s          r   %test_make_surface__subclassed_surface8PixelArrayTypeTest.test_make_surface__subclassed_surface  s    *>
 &&'78
))+3gv~~6  /:))+];**,n=,,.?r   c                     S Hn  n[         R                  " SSU5      n[         R                  " U5      nSnU H#  nU R                  [	        U5      S5        US-  nM%     U R                  US5        Mp     g )Nr\   )r<   r7   r   r7   r   r<   )rA   rB   rC   r   r   )r   r   rN   rO   
iterationscols         r   	test_iterPixelArrayTypeTest.test_iter  sl    "CC0B""2&BJ  S2.a
  Z+ #r   c                 J   S GH  n[         R                  " SSU5      nUR                  S5        UR                  S5      nUR                  S5      n[         R                  " U5      nUS S S2   R                  SS5        U R                  US   S   U5        U R                  US   S   U5        U R                  US   S   U5        U R                  US   S	   U5        U R                  US
   S   U5        U R                  US   S   U5        US S S2   R                  SSSS9  U R                  US   S   U5        U R                  US   S   U5        U R                  US   S	   U5        U R                  US
   S   U5        U R                  US   S   U5        GM     g )Nr\   r   r   r  r   r;   r   rX   r=   r]   r   )r7   r8   r5   weights)rA   rB   rJ   r   rC   replacer   )r   r   rN   rvalovalrO   s         r   test_replace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                    S GH  n[         R                  " SSU5      nUR                  S5        UR                  SS5        UR                  S5      nUR                  S5      n[         R                  " U5      nUR                  S5      nU R                  US   S   U5        U R                  US	   S   U5        U R                  US
   S   U5        U R                  US   S   U5        U R                  US   S   U5        U R                  US   S   U5        UR                  SSS9nU R                  US   S   U5        U R                  US	   S   U5        U R                  US
   S   U5        U R                  US   S   U5        U R                  US   S   U5        U R                  US   S   U5        GM     g )Nr\   r   r   r   r  )r;   r;   r=   r=   r   r   r   r;   rX   r=   r]   r   )r7   rd   r5   rd  )rA   rB   rJ   r   rC   extractr   )r   r   rN   r:   r   rO   newars          r   test_extractPixelArrayTypeTest.test_extract  s   "C!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 #r   c                    SnSn[         R                  " X4SS5      n[         R                  " U5      nX4nSU4nSnU R                  X4XVU5        [	        S S S5      n[	        S S S5      n	U R                  XEX4Xg5      u  pEpgU R                  X4XVU5        [	        SS S5      n[	        SS S5      n	U R                  XEX4Xg5      u  pEpgU R                  X4XVU5        g )	NP      r   r9   r   r;   rX   r<   )rA   rB   rC   _test_assignmentr  _array_slice)
r   r   r   rN   rO   rM   r=  offsetxsliceyslices
             r   test_2dslice_assignment*PixelArrayTypeTest.test_2dslice_assignment3  s    ^^QFAr*r"va&bdV<tT1%tT1%$($5$5v&%
!' 	bdV<q$"q$"$($5$5v&%
!' 	bdV<r   c                 h   U R                  UR                  U5        Uu  pgUu  pUR                  5       u  p[        R                  " S5      n[        R                  " SSS5      nUR                  U5      nUR                  U5        SSUS-
  4US-
  S4SUS-
  4US-
  S4US-
  US-
  44 H  u  nnX_U-  -   UU	-  -   nUU
-  nUUU
-  -
  nUU4nUR                  U5      nU R                  UUSUUUUUU4-  5        XUU4'   UR                  U5      nU R                  UUSUUUUUU4-  5        M     g )	Nr   r      rb   r   rX   r   z6at pixarr posn (%i, %i) (surf posn (%i, %i)): %s != %s)r   rI   r   rA   rK   r   rJ   r   )r   rN   rO   ar_size
ar_strides	ar_offsetar_war_h
ar_xstride
ar_ystridesf_wsf_hr   colorpxcolorar_xr   	sf_offsetsf_ysf_xsf_posnsf_pixs                         r   rs  #PixelArrayTypeTest._test_assignmentI  s{   7+
!+
[[]
W%Q2&**U#
qMAXqMqMAXqMAXtax 
JD$ ":$55z8III$Dtd{*DTlGYYw'F"D$feDE %tTzNYYw'F"D$feDE+
r   c                     X   nUu  pgUu  pUR                  U5      u  pnUR                  U	5      u  pnX-
  U-   S-
  U-  nX-
  U-   S-
  U-  n	Uu  nnXZU-  UU-  -   -  nUU-  nUU-  nXU	4UU4U4$ r   )indices)r   rO   rM   slicesr=  ru  rv  rw  r   r   xstartxstopxstepystartystopystepxstrideystrides                     r   rt  PixelArrayTypeTest._array_slicen  s    Z%~~a0u%~~a0u^e#a'E1^e#a'E1"7"Vg%55555q6GW-v55r   c                 t   S HP  n[         R                  " SSUS-  5      n[         R                  " U5      nU R                  UR                  U5        MR     S GH[  nUu  pV[         R                  " USS5      nUR                  5       nUR                  5       n[         R                  " U5      nU R                  UR                  S5        U R                  UR                  U5        U R                  UR                  X45        US S S2S S 24   n[        S/U-  S S S2   5      n	U R                  UR                  S5        U R                  UR                  X45        U R                  UR                  SU-  U45        US S 2S S S24   n[        S/U-  S S S2   5      n
U R                  UR                  S5        U R                  UR                  XZ45        U R                  UR                  USU-  45        US   nU R                  UR                  S5        U R                  UR                  U45        U R                  UR                  U45        US S 2S4   nU R                  UR                  S5        U R                  UR                  U45        U R                  UR                  U45        GM^     g )	Nr<  r-  r   r]   ))r   r^   )r<   r>   r9   r;   r   )rA   rB   rC   r   r   get_bytesize	get_pitchndimrI   r=  r   )r   r   rN   rO   rI   r   r   pitchrQ   rN  rO  s              r   test_array_properties(PixelArrayTypeTest.test_array_properties|  sF   C373B""2&BR[[#.  
 (EDAq"-B//#CLLNE""2&BRWWa(RXXu-RZZ#6SqS!V*CqcAgss^$BSXXq)SYY0S[[1s7E*:;Q!V*CqcAgss^$BSXXq)SYY0S[[3E	*:;Q%CSXXq)SYY-S[[5(3QT(CSXXq)SYY-S[[3&15 (r   c           	      T   SnUS-
  nSnUS-
  nS GH  n[         R                  " X4SUS-  5      n[         R                  " U5      n[        X-  5       H  nXX-  X-  4'   M     US S S2S S 24   US S 2S S 24'   [        X-  5       H   nU R	                  XrX-  -
  X-  4   U5        M"     [         R                  " U5      n[        X-  5       H  nXX-  X-  4'   M     US S 2S S S24   US S 2S S 24'   [        X-  5       H!  nU R	                  XxU-  XHU-  -
  4   U5        M#     [         R                  " U5      n[        X-  5       H  nXX-  X-  4'   M     US S S2S S S24   US S 2S S 24'   [        X-  5       H#  nU R	                  XrX-  -
  XHU-  -
  4   U5        M%     GM     g )Nr7   r   r8   r<  r   r]   r   rA   rB   rC   r   r   )	r   r   max_xr   max_yr   rN   rO   r   s	            r   test_self_assign#PixelArrayTypeTest.test_self_assign  s   AAC373B""2&B15\$%15!&=! "$B$'{Bq!tH15\  AEM16$9!:A> """2&B15\$%15!&=! "!TrT'{Bq!tH15\  E56>$9!:A> """2&B15\$%15!&=! "$B$"*~Bq!tH15\  AEM56>$A!BAF "%  r   c                    [         R                  " SSS5      n[         R                  " U5      n[        S S S5      nUR	                  US5        U R                  US   UR                  S5      5        UR	                  U[         R                  " SSS	5      5        U R                  US   UR                  S
5      5        U R                  [        UR                  US5        U R                  [        UR                  X34S5        U R                  [        UR                  U/ SQ5        U R                  [        UR                  X34/ SQ5        [         R                  " SSS5      n[         R                  " U5      nSUS S & U R                  US   UR                  S5      5        / SQUS S & U R                  US   S5        U R                  US   S5        U R                  US   S5        g )N)r<   r<   r   r9   r   )r   r;   rX   rb   r7   r   r{  )r7   r   r{  )r   r;   rX   r   r<   rB  )r8      (   r8   r6  r  )r;   r   r  )
rA   rB   rC   r  r   r   r   rK   rD   r   )r   rN   rO   indexs       r   test_color_value#PixelArrayTypeTest.test_color_value  s   
 ^^FAr*r"dD!$
ui(D2::i#89
ufll2r267D2::l#;<*bnne_M*bnnunoV*bnneYG*bnnuniP^^FAr*r"1D2::l#;<1D2&D2&D2&r   c                 Z   [         R                  " SSS5      n[         R                  " U5      nUR                  u  p4UR                  u  pV[        X4-  5       H  nXs-  nXs-  n	XrX4'   M     UR                  5       n
U R                  U
R                  XC45        U R                  U
R                  Xe45        [        X4-  5       H%  nXs-  nXs-  n	U R                  XU4   X(U	4   5        M'     US   nUR                  5       nU R                  UR                  SU45        [        U5       H  n	U R                  X   USU	4   5        M     US S 2S4   nUR                  5       nU R                  UR                  SU45        [        S5       H  nU R                  X   USU4   5        M     g )NrC  r   r9   r   r;   )rA   rB   rC   rI   r=  r   r   r   )r   rN   rO   r   r   dxdyr   r   r   ar_tar1Dar2Ds                r   test_transpose!PixelArrayTypeTest.test_transpose  s    ^^FAr*r"xxquAAAqtH  ||~aV,x0quAAATQ$ZqD2  !u~~aV,qATWd1a4j1 !Q$x~~aV,qATWd1a4j1 r   c                    Sn[         R                  " X4SS5      n[         R                  " U5      n[         R                  " US4SS5      n[         R                  " U5      n[        U5       H  nUS-   S-  XVS4'   M     XSS'   [        U5       H/  n[        U5       H  nU R	                  X8U4   XXS4   5        M     M1     SUS'   [         R                  " SU4SS5      n	[         R                  " U	5      n
[        U5       H  nUS-   S-  U
SU4'   M     XS'   [        U5       H0  n[        U5       H  nU R	                  X8U4   U
SU4   5        M      M2     SUS'   [         R                  " SSS5      n[         R                  " U5      nSUS	'   XS'   [        U5       H+  n[        U5       H  nU R	                  X8U4   S5        M     M-     g )
Nr<   r   r9   r   r7   .r   *   rb   r  )r   r   rN   rO   r  r  r   r   r   r  r   sf_1pxar_1pxs                r   !test_length_1_dimension_broadcast4PixelArrayTypeTest.test_length_1_dimension_broadcast  s   ^^QFAr*r"~~q!fa,  &qAa%2DAJ 3qA1X  qD41:6   3~~q!fa,  &qAa%2DAJ 3qA1X  qD41:6   32.""6*t3qA1X  qD2.  r   c           	         [         R                  " SSS5      n[         R                  " U5      nU R                  [        UR
                  [        US S 2SS24   5        U R                  [        UR
                  [        USS2S S 24   5        g )N)r  r   r   r9   r;   )rA   rB   rC   rD   r   r   Ellipsis)r   rN   rO   s      r   test_assign_size_mismatch,PixelArrayTypeTest.test_assign_size_mismatch  sl    ^^GQ+r"*bnnh1ac6
K*bnnh1Q36
Kr   c                 
   [         R                  " S[         R                  S5      n[         R                  " U5      nSUS'   UR	                  S5      nU R                  [        U5      [        U5      R                  S-   5        g )N)rX   r   r^   r  .rb   z([
  [42, 42, 42]]
))	rA   rB   SRCALPHArC   get_at_mappedr   reprtyper.   )r   rN   rO   pixels       r   	test_reprPixelArrayTypeTest.test_repr  sg     ^^FFOOR8r"3  (b48#4#47O#OPr   r-   N)-r.   r/   r0   r1   rT   rs   r~   r   r   r   r   r   r   r   r   unittestskipIfIS_PYPYr   r   r   r  r  r
  r  r$  r3  r9  r>  rQ  r\  ra  ri  rn  rx  rs  rt  r  r  r  r  r  r  r  r2   r-   r   r   r4   r4   2   s   4>)&V1&f1&f-7^	/2"%2=6& __W12eH 3eHNE$1BfA6 __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   r4   c                       \ rS rSr\R
                  " \S5      S 5       r\R
                  " \S5      S 5       r\R
                  " \S5      S 5       r	\R
                  " \S5      S 5       r
S rSrg	)
PixelArrayArrayInterfaceTesti!  zskipping for PyPy (why?)c                    [         R                  " SSS5      n[         R                  " U5      n[        R                  " U5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  UR                  5        g )Nr-  r   r9   r;   u)rA   rB   rC   r   ArrayInterfacer   twotypekindnddatar   )r   rN   rO   ais       r   
test_basic'PixelArrayArrayInterfaceTest.test_basic#  s     ^^FAr*r"$$R(#c*"""4"45r   c                 D   SS/SS/4 GH  nUu  p#[         R                  " USS5      n[         R                  " U5      n[        R                  " U5      n[        UR                  5       Vs/ s H  ovR                  U   PM     nnU R                  X5        US S S2S S 24   n	[        R                  " U	5      n
[        S/U-  S S S2   5      n[        U
R                  5       Vs/ s H  ozR                  U   PM     nnU R                  XU/5        US S 2S S S24   n	[        R                  " U	5      n
[        S/U-  S S S2   5      n[        U
R                  5       Vs/ s H  ozR                  U   PM     nnU R                  XU/5        GM     g s  snf s  snf s  snf )Nr   r^   r<   r>   r   r9   r;   )
rA   rB   rC   r   r  r   r  rI   r   r   )r   rI   r   r   rN   rO   r  r   ai_shaperQ   ai2rN  rO  s                r   
test_shape'PixelArrayArrayInterfaceTest.test_shape/  sk   "g2w'EDAq"-B""2&B((,B-2255\:\\H:X-SqS!V*C))#.CqcAgss^$B.3CFFm<m		!mH<XAw/Q!V*C))#.CqcAgss^$B.3CFFm<m		!mH<X2w/! (
 ;
 =
 =s   ,F%F Fc                     [        SS5       Hh  nSU-  n[        R                  " SSU5      n[        R                  " U5      n[        R
                  " U5      nU R                  UR                  U5        Mj     g )Nr   r<   r]   r-  r   )r   rA   rB   rC   r   r  r   r   )r   bytes_per_pixelbits_per_pixelrN   rO   r  s         r   test_itemsize*PixelArrayArrayInterfaceTest.test_itemsizeC  sb    $Q{O0N>:B""2&B((,BR[[/:  +r   c                     [         nUR                  UR                  -  UR                  -  n[        R
                  " SSS5      n[        R                  " U5      nUR                  U5      nU R                  UR                  X!R                  -  5        US S S2S S 24   nUR                  U5      nU R                  UR                  U5        [        R
                  " SSS5      n[        R                  " U5      nUR                  U5      nU R                  UR                  X!R                  -  5        [        R
                  " SSS5      n[        R                  " U5      nUR                  U5      nU R                  UR                  U5        g )Nr7   r;   r   r9   r;   )r]   r;   r_   )r  r;   )r   PAI_NOTSWAPPEDPAI_WRITEABLEPAI_ALIGNEDrA   rB   rC   r  r   flagsPAI_FORTRAN)r   aimcommon_flagsr   rO   r  rQ   s          r   
test_flags'PixelArrayArrayInterfaceTest.test_flagsL  s;   ))C,=,==ONN7Ar*q!#<//#AB1aj$<0NN61b)q!#<//#ABNN61b)q!#<0r   c                 >   / SQn[        [        R                  US5      nSn[        R                  " X#4SS5      nUR                  S5      n[        R                  " U5      nUS S  Hy  nX'-  nUR                  S5        XgXr-   2S S 24   nXVS   S'   XVS   S	'   XVS   S
'   UR                  5       n[        R                  R                  U5      n	U R                  X5        M{     [        [        R                  US5      nSn[        R                  " X#4SS5      nUR                  S5      n[        R                  " U5      nUS S  Hz  nX7-  nUR                  S5        US S 2XwU-   24   nXVS   S'   XVS   S	'   XVS   S
'   UR                  5       n[        R                  R                  U5      n	U R                  X5        M|     SnSn[        R                  " X#4SS5      nUR                  S5      n[        R                  " U5      n[        U5      [        U5      4[        SUS5      [        U5      4[        SUS5      [        U5      4[        U5      [        SUS5      4[        U5      [        SUS5      4[        SUS5      [        SUS5      4[        SUS5      [        SUS5      44 Hm  n
UR                  S5        Xj   nX[S   S'   X[S   S	'   X[S   S
'   UR                  5       n[        R                  R                  U5      n	U R                  X5        Mo     g )N)r  rX   r   r   r>   r   r]   )r   r   rw   r   r   r   r  r8   r7   r;   rX   )r   operatormulrA   rB   r   rC   rJ   r   	pixelcopyr   r  )r   factorsr   r   rN   r  rO   frP   sf3r  rQ   s               r   test_slicing)PixelArrayArrayInterfaceTest.test_slicingc  s    8<<!,^^QFAq)

<(r""AAGGIIqL!BqE!HrF2JqE"I//#C""//3C&&s0  8<<!,^^QFAq)

<(r""AAGGIAqq5yL!BqE!HrF2JqE"I//#C""//3C&&s0  ^^QFAq)

<(r"1XuQx 1a^U1X&1a^U1X&1XuQ1~&1XuQ1~&1a^U1a^,1a^U1a^,
F GGI*CF1IGBKF2J""$C""//4C&&s0!
r   r-   N)r.   r/   r0   r1   r  r  r  r  r  r  r  r  r2   r-   r   r   r  r  !  s    __W89	6 :	6 __W890 :0& __W89; :; __W891 :1,=1r   r  znewbuf not implementedc                   \    \ rS rSr\R
                  (       a  SSKJr  SSSSS.rS	 r	S
 r
Srg)PixelArrayNewBufferTesti  r   )buftoolsBz=H3xz=Ir\   c                    U R                   nUR                  nS GH  n[        R                  " SSU5      n[        R                  " U5      nU R
                  U   nUR                  nUR                  nUu  pUR                  nX-  U-  nU" XQR                  5      nU R                  UR                  U5        U R                  UR                  U5        U R                  UR                  S5        U R                  UR                  U5        U R                  UR                  U5        U R!                  UR"                  5        U R                  UR                  U5        U R                  UR                  U5        U R                  UR$                  S L 5        U R                  UR&                  UR(                  5        GM     [        R                  " SSS5      n[        R                  " U5      nU R
                  UR+                  5          nUR                  nUR                  nUu  pUR                  nX-  U-  nU" XQR,                  5      nU R                  UR                  U5        U R                  UR                  U5        U R                  UR                  S5        U R                  UR                  U5        U R                  UR                  S L 5        U R!                  UR"                  5        U R                  UR                  S L 5        U R                  UR                  S L 5        U R                  UR$                  S L 5        U R                  UR&                  UR(                  5        U" XQR.                  5      nU R                  UR                  S5        U R                  UR                  U5        U" XQR0                  5      nU R                  UR                  S5        U R                  UR                  S L 5        U" XQR2                  5      nU R                  UR                  S5        U R                  UR                  S L 5        U R                  UR                  U5        U R                  UR                  U5        U" XQR4                  5      nU R                  UR                  S5        U R                  UR                  S L 5        U R                  UR                  U5        U R                  UR                  U5        U R7                  [8        X%UR:                  5        U R7                  [8        X%UR<                  5        US S 2S S S24   nU R
                  UR+                  5          nUR                  nUR                  nUu  pUR                  nX-  U-  nU" XR>                  5      nU R                  UR                  U5        U R                  UR                  S5        U R                  UR                  U5        U R                  UR                  S L 5        U R!                  UR"                  5        U R                  UR                  U5        U R                  UR                  U5        U R                  UR&                  UR(                  5        U R7                  [8        X.UR,                  5        U R7                  [8        X.UR<                  5        U R7                  [8        X.UR:                  5        U R7                  [8        X.UR2                  5        U R7                  [8        X.UR4                  5        US S S2S S 24   nU R
                  UR+                  5          nUR                  nUR                  nUu  pUR                  nX-  U-  nU" XR>                  5      nU R                  UR                  U5        U R                  UR                  S5        U R                  UR                  U5        U R                  UR                  S L 5        U R!                  UR"                  5        U R                  UR                  U5        U R                  UR                  U5        U R                  UR&                  UR(                  5        U R7                  [8        X.UR,                  5        U R7                  [8        X.UR<                  5        U R7                  [8        X.UR:                  5        U R7                  [8        X.UR2                  5        U R7                  [8        X.UR4                  5        URA                  S5      n[        R                  " U5      nU R
                  UR+                  5          nUR                  nUR                  nUu  pUR                  nX-  U-  nU" XQRB                  5      nU R                  UR                  U5        U R                  UR                  U5        U R                  UR                  S5        U R                  UR                  U5        U R                  UR                  S L 5        U R!                  UR"                  5        U R                  UR                  U5        U R                  UR                  U5        U R                  UR$                  S L 5        U R                  UR&                  UR(                  5        U R7                  [8        X%UR,                  5        U R7                  [8        X%UR.                  5        U R7                  [8        X%UR0                  5        U R7                  [8        X%UR<                  5        U R7                  [8        X%UR:                  5        U R7                  [8        X%UR2                  5        U R7                  [8        X%UR4                  5        g )Nr\   r  r   r;   )r]   r^   r9   )r;   rX   r<   r  )"r  ImporterrA   rB   rC   bitsize_to_formatr   rI   r=  
PyBUF_FULLrG   objr   r   r  formatr   readonly
suboffsetsbufr   rW  PyBUF_SIMPLEPyBUF_FORMATPyBUF_WRITABLEPyBUF_F_CONTIGUOUSPyBUF_ANY_CONTIGUOUSrD   BufferErrorPyBUF_C_CONTIGUOUSPyBUF_NDPyBUF_STRIDED
subsurfacePyBUF_STRIDES)r   r  r  bit_sizer   rO   r  r   rI   r   r   r=  lengthimp	ar_slicedr   s                   r   test_newbuf_2D&PixelArrayNewBufferTest.test_newbuf_2D  s 	   ==$$'Hw84A""1%B++H5F{{HHHEDAjjGUX%F2223COOCGGR(SWWf-SXXq)S\\84SZZ0S\\*SYY.S[['2OOCNNd23SWWa&7&78' (* NN7Ar*q!''8;;**!r001$&)1%x0

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

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

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

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

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

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

d*+&E*g.$./""4"45+xX5J5JK+xX5J5JK+xX5L5LM+xX5F5FG+xX5P5PQ+xX5P5PQ+xX5R5RSr   c                 0   U R                   nUR                  n[        R                  " SSS5      n[        R                  " U5      nSnXE   nU R
                  UR                  5          nUR                  nUR                  n	U	S   n
UR                  nX-  nUR                  XX-  -   nU" XaR                  5      nU R                  UR                  U5        U R                  UR                  U5        U R                  UR                   S5        U R                  UR                  U5        U R                  UR"                  S L 5        U R%                  UR&                  5        U R                  UR                  U	5        U R                  UR                  U5        U R                  UR(                  S L 5        U R                  UR*                  U5        U" XaR,                  5      nU R                  UR                   S5        U R                  UR"                  U5        U R/                  [0        X&UR2                  5        U R/                  [0        X&UR4                  5        U R/                  [0        X&UR6                  5        U R/                  [0        X&UR8                  5        U R/                  [0        X&UR:                  5        U R/                  [0        X&UR<                  5        U R/                  [0        X&UR>                  5        SnUS S 2U4   nUR                  n	U	S   nUR                  nUU-  nUR                  XRA                  5       -  -   nU" XaR,                  5      nU R                  UR                  U5        U R                  UR                   S5        U R                  UR                  U5        U R                  UR"                  U5        U R%                  UR&                  5        U R                  UR                  U	5        U R                  UR                  U5        U R                  UR*                  U5        U R                  UR(                  S L 5        U" XaR2                  5      nU R                  UR                  U5        U R                  UR                   S5        U R                  UR                  U5        U R                  UR"                  S L 5        U R%                  UR&                  5        U R                  UR                  S L 5        U R                  UR                  S L 5        U" XaR8                  5      nU R                  UR                  U5        U R                  UR                   S5        U R                  UR                  U5        U R                  UR"                  S L 5        U R%                  UR&                  5        U R                  UR                  U	5        U R                  UR                  S L 5        U" XaR:                  5      nU R                  UR                   S5        U" XaR<                  5      nU R                  UR                   S5        U" XaR>                  5      nU R                  UR                   S5        g )N)r;   r^   r   r9   r   r7   )!r  r  rA   rB   rC   r  rW  r   rI   r=  r   r  rG   r  r   r   r  r  r   r  r   r  r  rD   r  r  r  r  r	  r  r  r  r  )r   r  r  r   ar_2Dr   rO   r  r   rI   r   r=  r  r  r  r   r   s                    r   test_newbuf_1D&PixelArrayNewBufferTest.test_newbuf_1D5  s   ==$$NN7Ar*!!!$X''8;;!H**!,.r112$&)1%x0

d*+&E*g.$./#&r../1%V,+xX5J5JK+xX5J5JK+xX5L5LM+xX5F5FG+xX5P5PQ+xX5P5PQ+xX5R5RS1a4[!H**X!kkm"33r../&)1%x0V,&E*g.#&$./r001&)1%x0

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

d*+&E*t+,r6671%r6671%r8891%r   r-   N)r.   r/   r0   r1   rA   HAVE_NEWBUFpygame.tests.test_utilsr  r  r  r  r2   r-   r   r   r  r    s-     4Tt>HTTJ&r   r  __main__)r   r  platformr  r  r   	functoolsr   r  r   r   	NameErrorrA   python_implementationr  r   r  TestCaser4   r  r  r  r.   mainr-   r   r   <module>r      s0   	   
    3	0  H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MMO k3  		s   D DD