o
    HXh                     @   sl   	 d dl Z d dlmZ d dlZd dlZd dlmZ G dd deZG dd dej	Z
edkr4e  dS dS )	    N)PickleBuffer)import_helperc                   @   s   e Zd ZdS )BN)__name__
__module____qualname__ r   r   @/opt/python-3.10.19/usr/lib/python3.10/test/test_picklebuffer.pyr      s    r   c                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )PickleBufferTestc              	   C   s   t |o}t |R}| |j|j | |j|j | |j|j | |j|j | |j|j | |j|j | |j|j | |j	|j	 | |
 |
  W d    n1 s^w   Y  W d    d S W d    d S 1 svw   Y  d S N)
memoryviewassertEqualnbytesreadonlyitemsizeshapestridesc_contiguousf_contiguousformattobytes)selfpbequivmZexpectedr   r   r	   check_memoryview   s   

"z!PickleBufferTest.check_memoryviewc                 C   s   |  t t  W d    n1 sw   Y  |  t td W d    n1 s,w   Y  td}|  |  t t| W d    d S 1 sNw   Y  d S )NZfoo   foo)assertRaises	TypeErrorr   r   release
ValueError)r   r   r   r   r	   test_constructor_failure!   s   

"z)PickleBufferTest.test_constructor_failurec                 C   s   t d}| dt| t|}| |j W d    n1 s!w   Y  t td}| dt| t|}| |j d|d< W d    n1 sMw   Y  | dt| d S )Nr   0   r   s   0oo)r   r   bytesr   
assertTruer   	bytearrayassertFalse)r   r   r   r   r   r	   test_basics,   s   


zPickleBufferTest.test_basicsc                 C   s`   t d}|  | t}t| W d    n1 sw   Y  | dt|j |  d S )Nr   z3operation forbidden on released PickleBuffer object)r   r   r   r    r   ZassertInstr	exceptionr   r   Zraisesr   r   r	   test_release9   s   
zPickleBufferTest.test_releasec                 C   s<   t d}t|}||_t|}~~t  | |  d S Nr   )r   r   cycleweakrefrefgcZcollectZassertIsNone)r   br   Zwpbr   r   r	   
test_cycleC   s   
zPickleBufferTest.test_cyclec                 C   s   t dj}|ttdddd}| |j | |j t	|}| 
|| |d d d }| |j | |j t	|}| 
|| |ttddddd	}| |j | |j t	|}| 
|| d S )
N_testbuffer         <ir   r      )r7   r6   )r6   r4   r   r   r   )r   import_modulendarraylistranger$   r   r&   r   r   r   )r   r=   arrr   r   r   r	   test_ndarray_2dL   s    z PickleBufferTest.test_ndarray_2dc                 C   sN   t |}| }| |t | || W d    d S 1 s w   Y  d S r   )r   rawZassertIsInstancer   r   )r   objr   r   r   r   r   r	   	check_rawc   s
   
"zPickleBufferTest.check_rawc              	   C   sN   dt dfD ]}| j|d | || W d    n1 sw   Y  qd S )Nr   )rC   )r%   ZsubTestrD   )r   rC   r   r   r	   test_rawi   s   zPickleBufferTest.test_rawc                 C   s   t dj}|ttdddd}d}| || |ttdddd}d	}| || |ttddd
dd}d	}| || |dddd}d}| || d S )Nr3   r7   )r7   z<hr9   s          )r:   r7   s          )r:   r6   r;   i  r   r8   s     )r   r<   r=   r>   r?   rD   )r   r=   r@   r   r   r   r	   test_raw_ndarrayn   s   z!PickleBufferTest.test_raw_ndarrayc                 C   sB   t |}| td |  W d    d S 1 sw   Y  d S )Nznon-contiguous)r   ZassertRaisesRegexBufferErrorrB   )r   rC   r   r   r   r	   check_raw_non_contiguous   s   
"z)PickleBufferTest.check_raw_non_contiguousc                 C   sd   t dj}|ttddddd d d }| | |ttddddd d d }| | d S )	Nr3   rF   )rF   r8   r9   r:   r4   r5   )r   r<   r=   r>   r?   rI   )r   r=   r@   r   r   r	   test_raw_non_contiguous   s
    
 z(PickleBufferTest.test_raw_non_contiguousc                 C   sH   t d}|  | t}|  W d    d S 1 sw   Y  d S r,   )r   r   r   r    rB   r*   r   r   r	   test_raw_released   s
   
"z"PickleBufferTest.test_raw_releasedN)r   r   r   r   r!   r'   r+   r2   rA   rD   rE   rG   rI   rJ   rK   r   r   r   r	   r
      s    
		r
   __main__)r0   pickler   r.   ZunittestZtest.supportr   r#   r   ZTestCaser
   r   mainr   r   r   r	   <module>   s     