B
    U[                 @   s  d Z ddlZddlmZ ddlmZmZ ddlmZ	 ddl
mZmZmZ dd Zd	Zd
dddgdfZdd Zdd Zdd Zdd Zdd Ze	ddd Ze	ddd Ze	ddd Ze	dd d! Zd"d# Zd$d% Zd&d' Zed(d)Zd*d+ Zd,d- Z d.d/ Z!dS )0ztest serialization tools    N)
namedtuple)serialize_objectdeserialize_object)
decorators)CannedArrayCannedClassinteractivec             C   s$   t | }t|\}}|g ks t|S )z)roundtrip an object through serialization)r   r   AssertionError)objbufsobj2	remainder r   =lib/python3.7/site-packages/ipykernel/tests/test_serialize.py	roundtrip   s    r   ))d   )i   
   )r            r   )r   Zuint8Zfloat64Zint32)gZfloat32z|S10c             C   s   dd l }|j| |S )Nr   )numpyZrandomZastype)shapedtyper   r   r   r   	new_array   s    r   c              C   s<   x6dt ddddddgdgD ]} t| }| |kstqW d S )	Nhellobr   )ar         hi)s   123r   )dictr   r	   )r
   r   r   r   r   test_roundtrip_simple   s    

r"   c              C   sP   xJt tdddidtdtdddgfgggD ]} t| }| |ks0tq0W d S )Nr   r   s   hello)r   r      s   whoda)r!   ranger   r	   )r
   r   r   r   r   test_roundtrip_nested(   s
     r%   c              C   sb   x\t dddddddggD ]@} t| }t|dks6tt|\}}|g ksNt| |kstqW d S )Ns  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r   s	  hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellos	  hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellor   r   r#   )r!   r   lenr	   r   )r
   r   r   r   r   r   r   test_roundtrip_buffered0   s    r'   c              C   sT   dd } t | }t|}t|dks(tt|\}}|g ks@t| | ksPtd S )Ns   asdfi  r   )
memoryviewr   r&   r	   r   tobytes)r   Zviewr   Zv2r   r   r   r   test_roundtrip_memoryview<   s    r*   r   c              C   s   dd l } ddlm} x~tD ]v}xptD ]h}t||d}t|}dd |D }t|\}}|g ksbt|j	|j	ksrt|j
|j
kst||| q$W qW d S )Nr   )assert_array_equal)r   c             S   s   g | ]}t |qS r   )r(   ).0r   r   r   r   
<listcomp>M   s    ztest_numpy.<locals>.<listcomp>)r   numpy.testing.utilsr+   SHAPESDTYPESr   r   r   r	   r   r   )r   r+   r   r   Ar   Brr   r   r   
test_numpyE   s    

r4   c              C   s   dd l } ddlm} xtD ]~}xxdtfdgdtfddggD ]Z}t||d}t|}t|\}}|g ksjt	|j
|j
kszt	|j|jkst	||| q:W qW d S )	Nr   )r+   f)sz|S10n)r6   z|S1)uZuint32)r   )r   r.   r+   r/   floatintr   r   r   r	   r   r   )r   r+   r   r   r1   r   r2   r3   r   r   r   test_recarrayT   s    

r;   c        
      C   s   dd l } ddlm} xtD ]}xtD ]}t||d}t|dddf}t|d }t	|d t
sdtt|\}}|d }	|g kst|j|	jkst|j|	jkst|||	 q$W qW d S )Nr   )r+   )r   r   r   s   hello)r   r.   r+   r/   r0   r   r   pickleloads
isinstancer   r	   r   r   r   )
r   r+   r   r   r1   r   cannedtupr3   r2   r   r   r   test_numpy_in_seqf   s    

rA   c        
      C   s   dd l } ddlm} xtD ]}xtD ]}t||d}tt|dtdd}t	
|d }t|d tsjtt|\}}|d }	|g kst|j|	jkst|j|	jkst|||	 q$W qW d S )Nr   )r+   )r   r      )r   r   cr   )r   r.   r+   r/   r0   r   r   r!   r$   r<   r=   r>   r   r	   r   r   r   )
r   r+   r   r   r1   r   r?   dr3   r2   r   r   r   test_numpy_in_dictw   s    

rE   c              C   sj   t G dd dt} tt| d}t|d }t|d tsBtt	|\}}|d }|j
| j
ksftd S )Nc               @   s   e Zd ZdZdS )ztest_class.<locals>.Cr   N)__name__
__module____qualname__r   r   r   r   r   C   s   rI   )rI   r   )r   objectr   r!   r<   r=   r>   r   r	   r   r   )rI   r   r?   rD   r3   C2r   r   r   
test_class   s    rL   c              C   sh   t G dd d} tt| d}t|d }t|d ts@tt|\}}|d }|j	| j	ksdtd S )Nc               @   s   e Zd ZdZdS )ztest_class_oldstyle.<locals>.Cr   N)rF   rG   rH   r   r   r   r   r   rI      s   rI   )rI   r   )
r   r   r!   r<   r=   r>   r   r	   r   r   )rI   r   r?   rD   r3   rK   r   r   r   test_class_oldstyle   s    rM   c              C   sd   dd df} t | }t|d }t|ts0tt|\}}|d |d | d | d ks`td S )Nc             S   s   | S )Nr   )xr   r   r   <lambda>   s    ztest_tuple.<locals>.<lambda>r   r   )r   r<   r=   r>   tupler	   r   )r@   r   r?   Zt2r3   r   r   r   
test_tuple   s    rQ   pointzx yc              C   sb   t dd} t| }t|d }t|t s.tt|t \}}|j| jksNt|j	| j	ks^td S )Nr   r   r   )
rR   r   r<   r=   r>   r	   r   globalsrN   y)pr   r?   Zp2r3   r   r   r   test_namedtuple   s    
rV   c              C   sd   dd dg} t | }t|d }t|ts0tt|\}}|d |d | d | d ks`td S )Nc             S   s   | S )Nr   )rN   r   r   r   rO      s    ztest_list.<locals>.<lambda>r   r   )r   r<   r=   r>   listr	   r   )Zlisr   r?   l2r3   r   r   r   	test_list   s    rY   c              C   s   t G dd dt} t G dd d| }tt|d}t|d }t|d tsVtt	|\}}|d }|j
|j
kszt|j|jkstd S )Nc               @   s   e Zd ZdZdS )z!test_class_inheritance.<locals>.Cr   N)rF   rG   rH   r   r   r   r   r   rI      s   rI   c               @   s   e Zd ZdZdS )z!test_class_inheritance.<locals>.Dr   N)rF   rG   rH   r   r   r   r   r   D   s   rZ   )rZ   r   )r   rJ   r   r!   r<   r=   r>   r   r	   r   r   r   )rI   rZ   r   r?   rD   r3   ZD2r   r   r   test_class_inheritance   s    r[   )"__doc__r<   collectionsr   Zipykernel.serializer   r   ZIPython.testingr   ZdecZipykernel.pickleutilr   r   r   r   r/   r0   r   r"   r%   r'   r*   Zskip_withoutr4   r;   rA   rE   rL   rM   rQ   rR   rV   rY   r[   r   r   r   r   <module>   s0   
	
	