
    iC@                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ 	 e  G d dej                        Z G d dej                        Zedk(  r ej                          yy# e	$ r	 d dlmZ Y Ow xY w)	    N)BufferProxy)BufferErrorc                      e Zd ZdddddZd Zd Zd Zd	 Zd
 Zd Z	d Z
d Zd Zd Zd Zd Zd Z ej$                  ej(                   d      d        Z	 ej,                  j.                   d Zd Zy# e$ r Y d Zyw xY w)BufferProxyTest)         |u1)r   T)r         shapetypestrdatastridesc                 X    | j                  t        j                  j                  d       y )Nzpygame.bufferproxy)assertEqualpygamebufferproxy__name__selfs    g/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pygame/tests/bufferproxy_test.pytest_module_namez BufferProxyTest.test_module_name   s    ++446JK    c                 D    | j                  t        j                  d       y )Nr   )r   r   r   r   s    r   test_class_namezBufferProxyTest.test_class_name   s    --}=r   c                 |   | j                   }t        |      }t        j                  |      }| j	                  t        |      d       | j	                  |d   d       | j	                  |d   |d          | j	                  |d   |d          | j	                  |d   |d          | j	                  |d   |d          y Nr   versionr	   r   r   r   r   )view_keywordsr   r   get_array_interfacer   lenr   kwdsvds       r   test___array_struct___propertyz.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   | j                   }t        |      }|j                  }| j                  t	        |      d       | j                  |d   d       | j                  |d   |d          | j                  |d   |d          | j                  |d   |d          | j                  |d   |d          y r   )r!   r   __array_interface__r   r#   r$   s       r   !test___array_interface___propertyz1BufferProxyTest.test___array_interface___property*   s    !!!!Q#9q)7T']39tI76DL19tI7r   c                     t        | j                        }g }||d<   t        |      }| j                  |j                  |       y )Nparent)dictr!   r   assertIsr-   )r   r%   pr&   s       r   test_parent_propertyz$BufferProxyTest.test_parent_property5   s<    D&&'Xahh"r   c                   	 fd} G d dt               fd}t        | j                        }g |d<   g ||d<   t        |      	| j	                  t              d       	j                  }| j	                  t              d       | j                  d          	j                  }| j	                  t              d       d x}	t        j                          | j	                  t              d       g ||d<   t        |      	| j	                  t              d       	j                  }| j	                  t              d       | j                  d          	j                  }| j	                  t              d       d x}	t        j                          | j	                  t              d       ||d<   t        |      	| j                  	fd	       y )
Nc                 ,    j                  | u        y Nappendr-   r0   successs    r   callbackz-BufferProxyTest.test_before.<locals>.callback>       NN6Q;'r   c                       e Zd Zy)0BufferProxyTest.test_before.<locals>.MyExceptionNr   
__module____qualname__ r   r   MyExceptionr<   A       r   rA   c                      d      )NzJust a test.r@   )r-   rA   s    r   raise_exceptionz4BufferProxyTest.test_before.<locals>.raise_exceptionD   s    n--r   r-   beforer   r   c                       j                   S r4   )__array_struct__)r&   s   r   <lambda>z-BufferProxyTest.test_before.<locals>.<lambda>j   s    q/A/A r   )	Exceptionr.   r!   r   r   r#   r*   
assertTruegccollectrG   assertRaises)
r   r9   rD   r%   r'   crA   r0   r8   r&   s
         @@@@r   test_beforez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                 T   fd}t        | j                        }g |d<   g ||d<   t        |      }| j                  t	              d       |j
                  }| j                  t	              d       |j
                  }| j                  t	              d       d x}}t        j                          | j                  t	              d       | j                  d          g ||d<   t        |      }| j                  t	              d       |j                  }| j                  t	              d       |j                  }| j                  t	              d       d x}}t        j                          | j                  t	              d       | j                  d          y )Nc                 ,    j                  | u        y r4   r5   r7   s    r   r9   z,BufferProxyTest.test_after.<locals>.callbackm   r:   r   r-   afterr   r   )
r.   r!   r   r   r#   r*   rK   rL   rJ   rG   )r   r9   r%   r&   r'   rN   r0   r8   s         @@r   
test_afterzBufferProxyTest.test_afterl   sl   	( D&&'X  WWq)!!Wq)!!Wq)A


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


Wq)
#r   c                     t        | j                        }| j                  t        t        |d       d|_        | j                  |j
                  d       |`| j                  t        t        |d       y )N	undefined   )r   r!   rM   AttributeErrorgetattrrU   r   )r   r&   s     r   test_attributezBufferProxyTest.test_attribute   sZ    **+.'1kBb)K.'1kBr   c                     t        | j                        }t        j                  |      }| j	                   |       |       d }t        j                          | j                   |              y r4   )r   r!   weakrefrefr/   rK   rL   assertIsNone)r   r&   weak_vs      r   test_weakrefzBufferProxyTest.test_weakref   sM    **+Qfh"


&(#r   c                    fd}fd} G d d      } |       } |       } |        |       gt        j                  |      }t        j                  |      }t        j                  d         }t        j                  d         }	t        j                  |      }
t        j                  |      }t        | j                        }||d<   ||d<   ||d	<   t	        |      }||_        t        j                  |      }d
x}x}x}x}}t        j                          | j                   |       d
u       | j                   |       d
u       | j                   |
       d
u       | j                   |       d
u       d
}t        d      D cg c]  }t        j                          c} | j                   |       d
u        | j                   |       d
u        | j                   |       d
u        | j                   |
       d
u        | j                   |       d
u        | j                   |       d
u       | j                   |	       d
u       d
t        j                          | j                   |       d
u        | j                   |	       d
u        t        | j                        }g |d<   t	        |      }||_        d}t        j                         D ]  }||u s n d}| j                  |       |d   j                  |       d
}t        j                          t        t        j                        }d
}t        j                          t        t        j                        }| j                  ||       y
c c}w )z8refcount agnostic check that contained objects are freedc                     d   S )Nr   r@   r-   rs    r   before_callbackz0BufferProxyTest.test_gc.<locals>.before_callback       Q4Kr   c                     d   S )Nr   r@   rb   s    r   after_callbackz/BufferProxyTest.test_gc.<locals>.after_callback   re   r   c                       e Zd Zy)$BufferProxyTest.test_gc.<locals>.ObjNr=   r@   r   r   Objri      rB   r   rj   r   r   r-   rE   rR   Nr   TF)r[   r\   r.   r!   r   some_attributerK   rL   rJ   rangeget_objectsr6   r#   garbager   )r   rd   rg   rj   r0   aweak_pweak_aweak_r0weak_r1weak_before
weak_afterr%   r&   r^   xtrackedon1n2rc   s                       @r   test_gcz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(!(D()D()D()-.
,-	-.	-.


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


_


_R A 	)s   M?c                     t         j                  j                  }t        t         j                  j                        }| j                  ||       y r4   )r   r   _PYGAME_C_APItypebaseassertIsInstance)r   apiapi_types      r   
test_c_apizBufferProxyTest.test_c_api   s7      ..112c8,r   c                    t        | j                        }t         j                  }t        j                  dt        |            d   \  }}| j                  ||       | j                  |j                  t        |             y )Nz<([^)]+)\(([^)]+)\)>r   )	r   r!   r   refindallreprr   lengthint)r   r&   cnameonameovalues        r   	test_reprzBufferProxyTest.test_repr   sc    **+$$

#:DGDQGv&3v;/r   c                     G d dt               }t        | j                        }d|d<    ||      }| j                  |j                  d       t        |      }| j                  |d d d       | j                  |dd  d       y )	Nc                       e Zd Zd Zy)7BufferProxyTest.test_subclassing.<locals>.MyBufferProxyc                 4    dt        j                  |        dS )N*)r   __repr__r   s    r   r   z@BufferProxyTest.test_subclassing.<locals>.MyBufferProxy.__repr__   s    ;//56a88r   N)r   r>   r?   r   r@   r   r   MyBufferProxyr      s    9r   r   r   r-      z*<z>*)r   r.   r!   r   r-   r   )r   r   r%   r&   rc   s        r   test_subclassingz BufferProxyTest.test_subclassing   s|    	9K 	9 D&&'X$1%G2A%23&r   znewbuf not implementedc                 R
   ddl m} ddlm} |j                  }|j
                  } |ddd      }t        |      }| j                  |j                  |j                         | j                  |j                   ||j                  |j                               |j                  }	 | j                  |d   d	       | j                  |d
   |j                         | j                  |d   |j                         | j                  |d   |j                  df       d } |dd      }t        |      }| j                  |j                  |j                         | j                  |j                   ||j                  |j                               |j                  }	 t        j                          t        j"                  k(  }|rdnd d|j$                   }	| j                  |d   |	       | j                  |d
   |j                         | j                  |d   |j                         | j                  |d   |j                  df       d } |dd      }t        |      } |||j&                        }
| j)                  |
j*                  |u        | j                  |
j                  |j                         | j                  |
j,                  |j,                         | j                  |
j.                  |j.                         | j                  |
j0                  |j0                         | j                  |
j$                  |j$                         | j                  |
j                  |j                         | j                  |
j                  |j                         | j                  |
j                  |j                         | j)                  |
j2                  d u        d	dddd}t        |      } |||j4                        }
| j)                  |
j*                  |u        | j                  |
j                  d       | j                  |
j                  d       | j                  |
j.                  d        | j                  |
j$                  d       | j                  |
j,                  d       | j)                  |
j0                         | j)                  |
j                  d u        | j)                  |
j                  d u        | j)                  |
j2                  d u        y # d }w xY w# d }w xY w)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_RECORDSrJ   objndimformatr   
suboffsetsPyBUF_SIMPLE)r   r   r   r   r   expbr'   
lil_endianfimps              r   NEWBUF_test_newbufz"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 B.T" T"T&c                 $    | j                          y r4   )OLDBUF_test_oldbuf_argr   s    r   test_oldbuf_argzBufferProxyTest.test_oldbuf_argL  s    '')r   c                    ddl m}m}m} d}t	        j
                  |      }t	        j                  |      }d }t        t        |      fd|dfdd      } ||d      \  }	}
| j                  |
d       | j                  |	d        ||d      \  }	}
| j                  |
d       | j                  |	d        ||      \  }}| j                  |d	       | j                  |t        |              ||d      \  }	}
| j                  |
|       | j                  |	t        |              ||d      \  }	}
| j                  |
|       | j                  |	t        |             t        t        |      fd|d
fdd      } ||      \  }}| j                  |d	       | j                  |t        |              ||d      \  }	}
| j                  |
|       | j                  |	t        |             | j                  t        ||d       t        t        |      fd|d
fd|d      } ||      \  }}| j                  |d       | j                  |d       t        dd|d
fdd      } ||      \  }}| j                  |d       | j                  |d       t        dd      D ]8  } |||      \  }	}
| j                  |
||dz  z          | j                  |	d       : y )Nr   )get_segcountget_read_bufferget_write_buffer0                           c                     t        d      )NzAn exception)
ValueError)rx   s    r   rD   z?BufferProxyTest.OLDBUF_test_oldbuf_arg.<locals>.raise_exceptionV  s    ^,,r   r
   Fr   r   r   T)r   r   r   r   rE   r	   r   |u4rV   r   rV   0   r   )pygame.bufferproxyr   r   r   r   create_string_buffer	addressofr   r#   r   rM   r   rl   )r   r   r   r   contentmemorymemaddrrD   bfseglensegaddrsegcountbuflenr   s                 r   r   z&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.*&6A>g,  $)
 (+&1%#  $"	
 (+&5)+q! 	(A-b!4OFGWgAo6VQ'	(r   N)r   r>   r?   r!   r   r   r(   r+   r1   rO   rS   rY   r_   r{   r   r   r   unittestskipIfr   HAVE_NEWBUFr   r   r   r   rW   r   r@   r   r   r   r      s    	ML>	8	8#-C^"$HC	$C!J-0' X__+++-EFA0 GA0F*''
	*M(  M(s   A5 5B ?B r   c                   n    e Zd ZdZ ej
                  e      Z ej                  e      dfZd Z	d Z
d Zy)BufferProxyLegacyTestr   Tc                    t        dd| j                  dd      }| j                  |j                  t	        | j
                               t        dd| j                  dd      }| j                  |j                  d       y )Nr   r   r   r   )r	   r	   $   )r   r   r   r   r#   r   r   r   s     r   test_lengthz!BufferProxyLegacyTest.test_length  sm     		gV
 	C$56		gV
 	I.r   c                    t        t        | j                        fd| j                  d      }| j	                  |j
                  | j                         t        dd| j                  dd      }| j	                  |j
                  | j                         t        dd| j                  dd      }| j                  t        t        |d       y )	Nr
   )r   r   r   r   r   )r   rV   r   )   r   r   )	r   r#   r   r   r   r   rM   r   rX   r   s     r   test_rawzBufferProxyLegacyTest.test_raw  s    
 4<<(*udiiP
 	.		gV
 	.		gV
 	*gr59r   c           	      &   ddl m}m}m}m}m} d}|dz  } |t        dd ||      z  dz   d       } || ||            }	 |       }
t        d ||
      f ||
      dfd	      }	 | j                  |j                  | ||      z         |j                  |	       | j                  |j                  |	        ||
d ||
             |j                  |	d d d
       |j                  }| j                  |d d
 |d
z         | j                  |d
d |	d d        | j                  |dd  | ||      dz
  z         |j                  |	d d |j                  dz
         |j                  }| j                  |dd  |	d d        | j                  t        |j                  |	d       | j                  t        |j                  |	d d d       | j                  t        |j                  |	d d |j                         | j                  t        |j                  d       t        d ||
      f ||
      dfd	      }| j                  t        j                   |j                  d       d }t#        j$                          y # d }t#        j$                          w xY w)Nr   )c_bytesizeofr   r   memset    r   r   r	   r
   F)r   r   r   r   r   rV   Ts   123)r   r   r   r   r   r   rl   r   r   r   writer   rM   
IndexError	TypeErrorr   r   rK   rL   )r   r   r   r   r   r   nullbyteBufdata_bufr   r   bpr   s                r   
test_writez 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   'G:I8 8JN)r   r>   r?   r   r   r   bufferr   r   r   r   r   r@   r   r   r   r     s?    &G(V((1FFV$d+D/:$1r   r   __main__)r   r[   rK   r   r   r   r   r   r   	NameErrorTestCaser   r   r   mainr@   r   r   <module>r      s{    	  	    *#
K(h'' K(\UH-- Up zHMMO U  #"#s   A$ $A21A2