a
    ze                     @   sf   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rbe  dS )	    N)PickleBuffer)supportc                   @   s   e Zd ZdS )BN)__name__
__module____qualname__ r   r   ,/usr/lib/python3.9/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 |}t |}| |j|j | |j|j | |j|j | |j|j | |j|j | |j|j | |j|j | |j	|j	 | |
 |
  W d    n1 s0    Y  W d    n1 s0    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&0    Y  |  t td W d    n1 sX0    Y  td}|  |  t t| W d    n1 s0    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 sB0    Y  t td}| dt| t|$}| |j d|d< W d    n1 s0    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 s80    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   sL   t |}| (}| |t | || W d    n1 s>0    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    q1 s>0    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   s@   t |}| td |  W d    n1 s20    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   sF   t d}|  | t}|  W d    n1 s80    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unittesttestr   r#   r   ZTestCaser
   r   mainr   r   r   r	   <module>   s    