a
     RîhÕ  ã                   @   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   ú>/opt/python-3.9.24/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 s¼0    Y  W d   ƒ n1 sÚ0    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 sš0    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 sš0    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    