
    &hC@                         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\R                  5      r " S S\R                  5      r\S:X  a  \R                  " 5         gg! \	 a	    S SKJr   NQf = f)	    N)BufferProxy)BufferErrorc                      \ rS rSrSSSS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\R&                  " \R*                  (       + S5      S 5       r \R.                  R0                    S rS rSrg! \ a     Nf = f)BufferProxyTest   )         |u1)r   T)r	         shapetypestrdatastridesc                 X    U R                  [        R                  R                  S5        g )Nzpygame.bufferproxy)assertEqualpygamebufferproxy__name__selfs    U/var/www/auris/envauris/lib/python3.13/site-packages/pygame/tests/bufferproxy_test.pytest_module_name BufferProxyTest.test_module_name   s    ++446JK    c                 D    U R                  [        R                  S5        g )Nr   )r   r   r   r   s    r   test_class_nameBufferProxyTest.test_class_name   s    --}=r   c                 ~   U R                   n[        U5      n[        R                  " U5      nU R	                  [        U5      S5        U R	                  US   S5        U R	                  US   US   5        U R	                  US   US   5        U R	                  US   US   5        U R	                  US   US   5        g Nr   versionr
   r   r   r   r   )view_keywordsr   r   get_array_interfacer   lenr   kwdsvds       r   test___array_struct___property.BufferProxyTest.test___array_struct___property   s    !!&&q)Q#9q)7T']39tI76DL19tI7r   c                 j   U R                   n[        U5      nUR                  nU R                  [	        U5      S5        U R                  US   S5        U R                  US   US   5        U R                  US   US   5        U R                  US   US   5        U R                  US   US   5        g r"   )r$   r   __array_interface__r   r&   r'   s       r   !test___array_interface___property1BufferProxyTest.test___array_interface___property*   s    !!!!Q#9q)7T']39tI76DL19tI7r   c                     [        U R                  5      n/ nX!S'   [        U5      nU R                  UR                  U5        g )Nparent)dictr$   r   assertIsr2   )r   r(   pr)   s       r   test_parent_property$BufferProxyTest.test_parent_property5   s:    D&&'Xahh"r   c                   ^^^^	 UU4S jn " S S[         5      mU4S jn[        U R                  5      n/ mTUS'   / mXS'   [        U5      m	U R	                  [        T5      S5        T	R                  nU R	                  [        T5      S5        U R                  TS   5        T	R                  nU R	                  [        T5      S5        S =nm	[        R                  " 5         U R	                  [        T5      S5        / mXS'   [        U5      m	U R	                  [        T5      S5        T	R                  nU R	                  [        T5      S5        U R                  TS   5        T	R                  nU R	                  [        T5      S5        S =nm	[        R                  " 5         U R	                  [        T5      S5        X#S'   [        U5      m	U R                  TU	4S	 j5        g )
Nc                 ,   > TR                  U TL 5        g Nappendr2   r5   successs    r   callback-BufferProxyTest.test_before.<locals>.callback>       NN6Q;'r   c                       \ rS rSrSrg)0BufferProxyTest.test_before.<locals>.MyExceptionA    Nr   
__module____qualname____firstlineno____static_attributes__rE   r   r   MyExceptionrC   A       r   rK   c                    > T" S5      e)NzJust a test.rE   )r2   rK   s    r   raise_exception4BufferProxyTest.test_before.<locals>.raise_exceptionD   s    n--r   r2   beforer   r   c                     > T R                   $ r:   )__array_struct__)r)   s   r   <lambda>-BufferProxyTest.test_before.<locals>.<lambda>j   s    q/A/Ar   )	Exceptionr3   r$   r   r   r&   r.   
assertTruegccollectrR   assertRaises)
r   r?   rN   r(   r*   crK   r5   r>   r)   s
         @@@@r   test_beforeBufferProxyTest.test_before=   s   	(	) 		. D&&'X !XWq)!!Wq)
#!!Wq)A


Wq) !XWq)Wq)
#Wq)A


Wq) )X+'ABr   c                 R  ^^ UU4S jn[        U R                  5      n/ mTUS'   / mXS'   [        U5      nU R                  [	        T5      S5        UR
                  nU R                  [	        T5      S5        UR
                  nU R                  [	        T5      S5        S =pC[        R                  " 5         U R                  [	        T5      S5        U R                  TS   5        / mXS'   [        U5      nU R                  [	        T5      S5        UR                  nU R                  [	        T5      S5        UR                  nU R                  [	        T5      S5        S =pS[        R                  " 5         U R                  [	        T5      S5        U R                  TS   5        g )Nc                 ,   > TR                  U TL 5        g r:   r;   r=   s    r   r?   ,BufferProxyTest.test_after.<locals>.callbackm   rA   r   r2   afterr   r   )
r3   r$   r   r   r&   r.   rW   rX   rV   rR   )r   r?   r(   r)   r*   rZ   r5   r>   s         @@r   
test_afterBufferProxyTest.test_afterl   sd   	( D&&'X  WWq)!!Wq)!!Wq)


Wq)
#  WWq)Wq)Wq)


Wq)
#r   c                     [        U R                  5      nU R                  [        [        US5        SUl        U R                  UR
                  S5        U?U R                  [        [        US5        g )N	undefined   )r   r$   rY   AttributeErrorgetattrrd   r   )r   r)   s     r   test_attributeBufferProxyTest.test_attribute   sZ    **+.'1kBb)K.'1kBr   c                     [        U R                  5      n[        R                  " U5      nU R	                  U" 5       U5        S n[
        R                  " 5         U R                  U" 5       5        g r:   )r   r$   weakrefrefr4   rW   rX   assertIsNone)r   r)   weak_vs      r   test_weakrefBufferProxyTest.test_weakref   sM    **+Qfh"


&(#r   c                 $  ^ U4S jnU4S jn " S S5      nU" 5       nU" 5       nU" 5       U" 5       /m[         R                  " U5      n[         R                  " U5      n[         R                  " TS   5      n[         R                  " TS   5      n	[         R                  " U5      n
[         R                  " U5      n[        U R                  5      nXLS'   XS'   X,S	'   [	        U5      nX]l        [         R                  " U5      nS
=n=n=n=p[        R                  " 5         U R                  U" 5       S
L5        U R                  U" 5       S
L5        U R                  U
" 5       S
L5        U R                  U" 5       S
L5        S
n[        S5       Vs/ s H  n[        R                  " 5       PM       nU R                  U" 5       S
L 5        U R                  U" 5       S
L 5        U R                  U" 5       S
L 5        U R                  U
" 5       S
L 5        U R                  U" 5       S
L 5        U R                  U" 5       S
L5        U R                  U	" 5       S
L5        S
m[        R                  " 5         U R                  U" 5       S
L 5        U R                  U	" 5       S
L 5        [        U R                  5      n/ US'   [	        U5      nXl        Sn[        R                  " 5        H
  nUUL d  M
    O   SnU R                  U5        US   R                  U5        S
n[        R                  " 5         [        [        R                  5      nS
n[        R                  " 5         [        [        R                  5      nU R                  UU5        g
s  snf )z8refcount agnostic check that contained objects are freedc                    > TS   $ )Nr   rE   r2   rs    r   before_callback0BufferProxyTest.test_gc.<locals>.before_callback       Q4Kr   c                    > TS   $ )Nr   rE   rs   s    r   after_callback/BufferProxyTest.test_gc.<locals>.after_callback   rw   r   c                       \ rS rSrSrg)$BufferProxyTest.test_gc.<locals>.Obj   rE   NrF   rE   r   r   Objr|      rL   r   r~   r   r   r2   rP   r`   Nr	   TF)rk   rl   r3   r$   r   some_attributerW   rX   rV   rangeget_objectsr<   r&   garbager   )r   ru   ry   r~   r5   aweak_pweak_aweak_r0weak_r1weak_before
weak_afterr(   r)   rn   xtrackedon1n2rt   s                       @r   test_gcBufferProxyTest.test_gc   s   			 	 EEUCENQQ++ad#++ad#kk/2[[0
D&&'X(X&WQ:>>>q>1>


,-,-T12
D01$Qx(x!x(D()D()D()-.
,-	-.	-.


	T)*	T)* D&&'X!AAv " G Xa 


_


_R A 	)s   Nc                     [         R                  R                  n[        [         R                  R                  5      nU R                  X5        g r:   )r   r   _PYGAME_C_APItypebaseassertIsInstance)r   apiapi_types      r   
test_c_apiBufferProxyTest.test_c_api   s5      ..112c,r   c                    [        U R                  5      n[         R                  n[        R                  " S[        U5      5      S   u  p4U R                  X25        U R                  UR                  [        U5      5        g )Nz<([^)]+)\(([^)]+)\)>r   )	r   r$   r   refindallreprr   lengthint)r   r)   cnameonameovalues        r   	test_reprBufferProxyTest.test_repr   s_    **+$$

#:DGDQG&3v;/r   c                     " S S[         5      n[        U R                  5      nSUS'   U" U5      nU R                  UR                  S5        [        U5      nU R                  US S S5        U R                  USS  S5        g )	Nc                       \ rS rSrS rSrg)7BufferProxyTest.test_subclassing.<locals>.MyBufferProxy   c                 6    S[         R                  " U 5       S3$ )N*)r   __repr__r   s    r   r   @BufferProxyTest.test_subclassing.<locals>.MyBufferProxy.__repr__   s    ;//56a88r   rE   N)r   rG   rH   rI   r   rJ   rE   r   r   MyBufferProxyr      s    9r   r   r   r2      z*<z>*)r   r3   r$   r   r2   r   )r   r   r(   r)   rt   s        r   test_subclassing BufferProxyTest.test_subclassing   s|    	9K 	9 D&&'X$1%G2A%23&r   znewbuf not implementedc                 T
   SSK Jn  SSKJn  UR                  nUR
                  nU" SSSS9n[        U5      nU R                  UR                  UR                  5        U R                  UR                  U" UR                  UR                  5      5        UR                  n U R                  US   S	5        U R                  US
   UR                  5        U R                  US   UR                  5        U R                  US   UR                  S45        S nU" SS5      n[        U5      nU R                  UR                  UR                  5        U R                  UR                  U" UR                  UR                  5      5        UR                  n [        R                   " 5       [        R"                  :H  nU(       a  SOS SUR$                   3n	U R                  US   U	5        U R                  US
   UR                  5        U R                  US   UR                  5        U R                  US   UR                  S45        S nU" SS5      n[        U5      nU" XbR&                  5      n
U R)                  U
R*                  UL 5        U R                  U
R                  UR                  5        U R                  U
R,                  UR,                  5        U R                  U
R.                  UR.                  5        U R                  U
R0                  UR0                  5        U R                  U
R$                  UR$                  5        U R                  U
R                  UR                  5        U R                  U
R                  UR                  5        U R                  U
R                  UR                  5        U R)                  U
R2                  S L 5        S	SSSS.n[        U5      nU" XbR4                  5      n
U R)                  U
R*                  UL 5        U R                  U
R                  S5        U R                  U
R                  S5        U R                  U
R.                  S 5        U R                  U
R$                  S5        U R                  U
R,                  S5        U R)                  U
R0                  5        U R)                  U
R                  S L 5        U R)                  U
R                  S L 5        U R)                  U
R2                  S L 5        g ! S nf = f! S nf = f)Nr   )	string_at)buftools)
   BT)readonlyr   r   r   r   r   )r
   z=h<>iF)r   r   z=ir   )	   T)r   r   r   r   r   r   r   )ctypesr   pygame.tests.test_utilsr   ExporterImporterr   r   r   r&   rawbufr.   r   r   r   get_sdl_byteorder
LIL_ENDIANitemsizePyBUF_RECORDSrV   objndimformatr   
suboffsetsPyBUF_SIMPLE)r   r   r   r   r   expbr*   
lil_endianfimps              r   NEWBUF_test_newbuf"BufferProxyTest.NEWBUF_test_newbuf  s   $4$$$$ucD1377+	#''377 ;<!!	Qy\51QwZ3Qy\3;;7QvY$8AtT"377+	#''377 ;<!!	113v7H7HHJ$3#.a~>AQy\1-QwZ3Qy\3;;7QvY%(89Aw%q0011%#''*388,SZZ0s||4s||4#''*CII.ckk2$./ 	
 Nq//01%!$"%T*q)1%%		T)*t+,$./_ A As   "A4T B4T# T #T'c                 $    U R                  5         g r:   )OLDBUF_test_oldbuf_argr   s    r   test_oldbuf_argBufferProxyTest.test_oldbuf_argL  s    '')r   c                    SSK JnJnJn  Sn[        R
                  " U5      n[        R                  " U5      nS n[        [        U5      4SUS4SS.5      nU" US5      u  pU R                  U
S5        U R                  U	S5        U" US5      u  pU R                  U
S5        U R                  U	S5        U" U5      u  pU R                  US	5        U R                  U[        U5      5        U" US5      u  pU R                  X5        U R                  U	[        U5      5        U" US5      u  pU R                  X5        U R                  U	[        U5      5        [        [        U5      4SUS
4SS.5      nU" U5      u  pU R                  US	5        U R                  U[        U5      5        U" US5      u  pU R                  X5        U R                  U	[        U5      5        U R                  [        X8S5        [        [        U5      4SUS
4SUS.5      nU" U5      u  pU R                  US5        U R                  US5        [        SSUS
4SS.5      nU" U5      u  pU R                  US5        U R                  US5        [        SS5       H6  nU" X5      u  pU R                  XUS-  -   5        U R                  U	S5        M8     g )Nr   )get_segcountget_read_bufferget_write_buffer0                           c                     [        S5      e)NzAn exception)
ValueError)r   s    r   rN   ?BufferProxyTest.OLDBUF_test_oldbuf_arg.<locals>.raise_exceptionV  s    ^,,r   r   Fr   r   r   T)r   r   r   r   rP   r
   r	   |u4re   r	   re   0   r	   )pygame.bufferproxyr   r   r   r   create_string_buffer	addressofr   r&   r   rY   r   r   )r   r   r   r   contentmemorymemaddrrN   bfseglensegaddrsegcountbuflenr   s                 r   r   &BufferProxyTest.OLDBUF_test_oldbuf_argO  s   VV*,,W5""6*	- g,  %(	
 *"a0!$#*2q1!$#'+1%W.)"a0*W.*2q1*W.g,  $	
 (+1%W.)"a0*W.*&6A>g,  $)
 (+1%#  $"	
 (+5)+q!A-b4OFWAo6VQ' r   rE   N)r   rG   rH   rI   r$   r   r   r+   r/   r6   r[   ra   rh   ro   r   r   r   r   unittestskipIfr   HAVE_NEWBUFr   r   r   r   rf   r   rJ   rE   r   r   r   r      s    	ML>	8	8#-C^"$HC	$C!J-0' __+++-EFA0 GA0F*''
	*M(  s   A= =BBr   c                   v    \ rS rSrSr\R                  " \5      r\R                  " \5      S4r	S r
S rS rSrg)	BufferProxyLegacyTesti  r   Tc                    [        SSU R                  SS.5      nU R                  UR                  [	        U R
                  5      5        [        SSU R                  SS.5      nU R                  UR                  S5        g )Nr   r   r   r   )r
   r
   $   )r   r   r   r   r&   r   r   r   s     r   test_length!BufferProxyLegacyTest.test_length  sm     		gV
 	C$56		gV
 	I.r   c                    [        [        U R                  5      4SU R                  S.5      nU R	                  UR
                  U R                  5        [        SSU R                  SS.5      nU R	                  UR
                  U R                  5        [        SSU R                  SS.5      nU R                  [        [        US5        g )	Nr   )r   r   r   r   r   )r	   re   r   )   r	   r   )	r   r&   r   r   r   r   rY   r   rg   r   s     r   test_rawBufferProxyLegacyTest.test_raw  s    
 4<<(*udiiP
 	.		gV
 	.		gV
 	*gr59r   c           	      $   SSK JnJnJnJnJn  SnUS-  nU" [        SSU" U5      -  S-   S5      6 nU" X" U5      5      n	U" 5       n
[        SU" U
5      4U" U
5      S4S	.5      n U R                  UR                  Xb" U5      -  5        UR                  U	5        U R                  UR                  U	5        U" U
SU" U
5      5        UR                  U	S S S
5        UR                  nU R                  US S
 US
-  5        U R                  US
S U	S S 5        U R                  USS  Xb" U5      S-
  -  5        UR                  U	S S UR                  S-
  5        UR                  nU R                  USS  U	S S 5        U R                  [        UR                  U	S5        U R                  [        UR                  U	S S S5        U R                  [        UR                  U	S S UR                  5        U R                  [        UR                  S5        [        SU" U
5      4U" U
5      S4S	.5      nU R                  [        R                   UR                  S5        S n["        R$                  " 5         g ! S n["        R$                  " 5         f = f)Nr   )c_bytesizeofr   r   memset    r   r   r
   r   F)r   r   r   r   r   re   Ts   123)r   r   r   r   r   r   r   r   r   r   writer   rY   
IndexError	TypeErrorr   r   rW   rX   )r   r   r   r   r   r   nullbyteBufdata_bufr   r   bpr   s                r   
test_write BufferProxyLegacyTest.test_write  sR    	HGrkaVC[1!4a896(#34e3QV@WX
	RVVXs%;<HHTNRVVT*36#;'HHT"1Xq!&&CS!Whl3S1XtBQx0SWh&+/&BCHHT"1Xryy1}-&&CSXtBQx0j"((D!<j"((D!HbAj"((D!HbiiHi26$$Sk^&s^T2B f00"((FC BJJL BJJLs   &G8I6 6JrE   N)r   rG   rH   rI   r   r   r   bufferr   r   r   r   r  rJ   rE   r   r   r   r     s;    &G((1FV$d+D/:$1r   r   __main__)r   rk   rW   r   r   r   r   r   r   	NameErrorTestCaser   r   r   mainrE   r   r   <module>r     sy    	  	    *#
K(h'' K(\UH-- Up zMMO U  #"#s   A% %A43A4