U
    »mœd¢M  ã                   @   s$  d dl mZ d dlZd dlZd dlmZmZmZm	Z	 d dl
Z
d dlmZ d dlmZ e e e¡d¡Zdd„ Zd	d
„ Zdd„ Ze e¡ZG dd„ dƒZG dd„ dƒZG dd„ deƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZ dd „ Z!d!d"„ Z"d#d$„ Z#dS )%é    )ÚpathN)Úassert_equalÚassert_array_equalÚassert_Úsuppress_warnings)Úreadsav)Ú_idlÚdatac                  G   s4   t jt| ƒtd�}tt| ƒƒD ]}| | ||< q|S )z#Constructs a numpy array of objects©Údtype)ÚnpÚemptyÚlenÚobjectÚrange)ÚargsÚarrayÚi© r   úP/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/io/tests/test_idl.pyÚobject_array   s    r   c                 C   sL   t | |ƒ t|ƒtkr*t t| ƒt|ƒƒ nt t | ¡jjt |¡jjƒ dS )z*Assert whether value AND type are the sameN)r   ÚtypeÚstrr   Zasarrayr   ©ÚaÚbr   r   r   Úassert_identical   s    
r   c                 C   s    t | |ƒ t| jj|jjƒ dS )z+Assert whether values AND type are the sameN)r   r   r   r   r   r   r   r   Úassert_array_identical    s    
r   c                   @   s   e Zd Zdd„ ZdS )Ú	TestIdictc                 C   sr   dt  d¡i}t|ƒ}tt td¡|dd�}t|t|ƒƒ td|kƒ t	|d t  d¡ƒ t	|d t  
d¡ƒ d S )Nr   iç  úscalar_byte.savF)ZidictÚverboseÚi8uéê   )r   Úint16Úidr   r   ÚjoinÚ	DATA_PATHr   r   r   Úuint8)ÚselfZcustom_dictZoriginal_idÚsr   r   r   Ú
test_idict,   s    zTestIdict.test_idictN)Ú__name__Ú
__module__Ú__qualname__r*   r   r   r   r   r   *   s   r   c                   @   s„   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d„ Zdd„ Zdd„ ZdS ) ÚTestScalarsc                 C   s*   t t td¡dd�}t|jt d¡ƒ d S )Nr   F©r    r"   ©r   r   r%   r&   r   r!   r   r'   ©r(   r)   r   r   r   Ú	test_byte9   s    zTestScalars.test_bytec                 C   s*   t t td¡dd�}t|jt d¡ƒ d S )Nzscalar_int16.savFr/   i`¤ÿÿ)r   r   r%   r&   r   Zi16sr   r#   r1   r   r   r   Ú
test_int16=   s    zTestScalars.test_int16c                 C   s*   t t td¡dd�}t|jt d¡ƒ d S )Nzscalar_int32.savFr/   i.ýi¶)r   r   r%   r&   r   Zi32sr   Úint32r1   r   r   r   Ú
test_int32A   s    zTestScalars.test_int32c                 C   s*   t t td¡dd�}t|jt d¡ƒ d S )Nzscalar_float32.savFr/   ç•ÐÃ�·Ç)r   r   r%   r&   r   Úf32r   Úfloat32r1   r   r   r   Útest_float32E   s    zTestScalars.test_float32c                 C   s*   t t td¡dd�}t|jt d¡ƒ d S )Nzscalar_float64.savFr/   g‰CÌmC±ÿ)r   r   r%   r&   r   Zf64r   Úfloat64r1   r   r   r   Útest_float64I   s    zTestScalars.test_float64c                 C   s*   t t td¡dd�}t|jt d¡ƒ d S )Nzscalar_complex32.savFr/   y  )Ž¨j¼BÌ•h~ð=rÆ)r   r   r%   r&   r   Zc32r   Ú	complex64r1   r   r   r   Útest_complex32M   s    zTestScalars.test_complex32c                 C   s*   t t td¡dd�}t|jt d¡ƒ d S )Nzscalar_string.savFr/   z.The quick brown fox jumps over the lazy python)r   r   r%   r&   r   r)   r   Úbytes_r1   r   r   r   Ú
test_bytesQ   s    zTestScalars.test_bytesc                 C   s   d S ©Nr   ©r(   r   r   r   Útest_structureU   s    zTestScalars.test_structurec                 C   s*   t t td¡dd�}t|jt d¡ƒ d S )Nzscalar_complex64.savFr/   ù*ÙÃÜð3W¾o‚Òÿ)r   r   r%   r&   r   Úc64r   Ú
complex128r1   r   r   r   Útest_complex64X   s    zTestScalars.test_complex64c                 C   s   d S r@   r   rA   r   r   r   Útest_heap_pointer\   s    zTestScalars.test_heap_pointerc                 C   s   d S r@   r   rA   r   r   r   Útest_object_reference_   s    z!TestScalars.test_object_referencec                 C   s*   t t td¡dd�}t|jt d¡ƒ d S )Nzscalar_uint16.savFr/   içÿ  )r   r   r%   r&   r   Zi16ur   Zuint16r1   r   r   r   Útest_uint16b   s    zTestScalars.test_uint16c                 C   s*   t t td¡dd�}t|jt d¡ƒ d S )Nzscalar_uint32.savFr/   l   Áÿ )r   r   r%   r&   r   Zi32ur   Zuint32r1   r   r   r   Útest_uint32f   s    zTestScalars.test_uint32c                 C   s*   t t td¡dd�}t|jt d¡ƒ d S )Nzscalar_int64.savFr/   lûÿÿÿ'{ÿÿÿ )r   r   r%   r&   r   Zi64sr   Zint64r1   r   r   r   Ú
test_int64j   s    zTestScalars.test_int64c                 C   s*   t t td¡dd�}t|jt d¡ƒ d S )Nzscalar_uint64.savFr/   l   Å(ÿÿÿ )r   r   r%   r&   r   Zi64ur   Zuint64r1   r   r   r   Útest_uint64n   s    zTestScalars.test_uint64N)r+   r,   r-   r2   r3   r5   r9   r;   r=   r?   rB   rF   rG   rH   rI   rJ   rK   rL   r   r   r   r   r.   6   s   r.   c                   @   s   e Zd Zdd„ ZdS )ÚTestCompressedc                 C   sð   t t td¡dd�}t|jt d¡ƒ t|jt 	d¡ƒ t|j
t d¡ƒ t|jjdƒ t|jjd tjd	d
dgtjd�ƒ t|jjd tjddddgtj	d�ƒ t|jjd t t d¡t d¡g¡ƒ t|jjd tjdddgtd�ƒ d S )Nzvarious_compressed.savFr/   r"   r6   rC   ©é   é   rO   é   é   r   é   é   rP   r
   ç      @ç      @ç      @ç      @ù      ð?       @ù      @       @ó   cheeseó   baconó   spam)r   r   r%   r&   r   r!   r   r'   r7   r8   rD   rE   r   Úarray5dÚshapeÚarraysr   r   r#   r   Úcr<   Údr   r1   r   r   r   Útest_compressedv   s    $&(zTestCompressed.test_compressedN)r+   r,   r-   rc   r   r   r   r   rM   s   s   rM   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S )ÚTestArrayDimensionsc                 C   s&   t t td¡dd�}t|jjdƒ d S )Nzarray_float32_1d.savFr/   ©é{   )r   r   r%   r&   r   Úarray1dr_   r1   r   r   r   Útest_1d†   s    zTestArrayDimensions.test_1dc                 C   s&   t t td¡dd�}t|jjdƒ d S )Nzarray_float32_2d.savFr/   ©é   é   )r   r   r%   r&   r   Úarray2dr_   r1   r   r   r   Útest_2dŠ   s    zTestArrayDimensions.test_2dc                 C   s&   t t td¡dd�}t|jjdƒ d S )Nzarray_float32_3d.savFr/   ©é   rj   rk   )r   r   r%   r&   r   Úarray3dr_   r1   r   r   r   Útest_3dŽ   s    zTestArrayDimensions.test_3dc                 C   s&   t t td¡dd�}t|jjdƒ d S )Nzarray_float32_4d.savFr/   ©rO   rR   é   é   )r   r   r%   r&   r   Úarray4dr_   r1   r   r   r   Útest_4d’   s    zTestArrayDimensions.test_4dc                 C   s&   t t td¡dd�}t|jjdƒ d S )Nzarray_float32_5d.savFr/   rN   )r   r   r%   r&   r   r^   r_   r1   r   r   r   Útest_5d–   s    zTestArrayDimensions.test_5dc                 C   s&   t t td¡dd�}t|jjdƒ d S )Nzarray_float32_6d.savFr/   ©rP   rQ   rO   rR   rP   rO   )r   r   r%   r&   r   Úarray6dr_   r1   r   r   r   Útest_6dš   s    zTestArrayDimensions.test_6dc                 C   s&   t t td¡dd�}t|jjdƒ d S )Nzarray_float32_7d.savFr/   ©rT   rS   rT   rP   rO   rP   rT   )r   r   r%   r&   r   Úarray7dr_   r1   r   r   r   Útest_7dž   s    zTestArrayDimensions.test_7dc                 C   s&   t t td¡dd�}t|jjdƒ d S )Nzarray_float32_8d.savFr/   ©rO   rP   rT   rS   rT   rP   rR   rO   )r   r   r%   r&   r   Úarray8dr_   r1   r   r   r   Útest_8d¢   s    zTestArrayDimensions.test_8dN©r+   r,   r-   rh   rm   rq   rv   rw   rz   r}   r€   r   r   r   r   rd   ƒ   s   rd   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S )ÚTestStructuresc                 C   s´   t t td¡dd�}t|jjt t 	d¡¡ƒ t|jj
t t d¡¡ƒ t|jjt t d¡¡ƒ t|jjt t d¡¡ƒ t|jjtjdgtd	�ƒ t|jjt t d
¡¡ƒ d S )Nzstruct_scalars.savFr/   rS   rT   ç      @rU   r]   r
   ù      ð¿      @)r   r   r%   r&   r   Zscalarsr   r   r   r#   r   r4   ra   r8   rb   r:   Úer   Úfr<   r1   r   r   r   Útest_scalars©   s    zTestStructures.test_scalarsc                 C   sÀ   t t td¡dd�}t|jjt t 	d¡d¡ƒ t|jj
t t d¡d¡ƒ t|jjt t d¡d¡ƒ t|jjt t d¡d¡ƒ t|jjt d	d¡ t¡ƒ t|jjt t d
¡d¡ƒ d S )Nzstruct_scalars_replicated.savFr/   rS   rR   rT   rƒ   rU   r]   r„   )r   r   r%   r&   r   Úscalars_repr   r   Úrepeatr#   r   r4   ra   r8   rb   r:   r…   Úastyper   r†   r<   r1   r   r   r   Útest_scalars_replicated²   s    z&TestStructures.test_scalars_replicatedc                 C   sü   t t td¡dd�}t|jjt t 	d¡d¡ 
ddd¡ƒ t|jjt t d¡d¡ 
ddd¡ƒ t|jjt t d	¡d¡ 
ddd¡ƒ t|jjt t d
¡d¡ 
ddd¡ƒ t|jjt dd¡ 
ddd¡ t¡ƒ t|jjt t d¡d¡ 
ddd¡ƒ d S )Nz struct_scalars_replicated_3d.savFr/   rS   é   rO   rP   rT   rƒ   rU   r]   r„   )r   r   r%   r&   r   rˆ   r   r   r‰   r#   Úreshaper   r4   ra   r8   rb   r:   r…   rŠ   r   r†   r<   r1   r   r   r   Útest_scalars_replicated_3d»   s    &&&&&z)TestStructures.test_scalars_replicated_3dc                 C   s¬   t t td¡dd�}t|jjd tjdddgtj	d�ƒ t|jj
d tjd	d
ddgtjd�ƒ t|jjd t t d¡t d¡g¡ƒ t|jjd tjdddgtd�ƒ d S )Nzstruct_arrays.savFr/   r   rS   rT   rP   r
   rU   rV   rW   rX   rY   rZ   r[   r\   r]   )r   r   r%   r&   r   r`   r   r   r   r#   r   r8   ra   r<   rb   r   r1   r   r   r   Útest_arraysÄ   s
    $&(zTestStructures.test_arraysc              	   C   sR  t t td¡dd�}t|jjjjt	j
kƒ t|jjjjt	j
kƒ t|jjjjt	j
kƒ t|jjjjt	j
kƒ t|jjjdƒ t|jjjdƒ t|jjjdƒ t|jjjdƒ tdƒD ]˜}t|jj| t	jdddgt	jd	�ƒ t|jj| t	jd
dddgt	jd	�ƒ t|jj| t	 t	 d¡t	 d¡g¡ƒ t|jj| t	jdddgtd	�ƒ q´d S )Nzstruct_arrays_replicated.savFr/   ©rR   rR   rS   rT   rP   r
   rU   rV   rW   rX   rY   rZ   r[   r\   r]   ©r   r   r%   r&   r   Ú
arrays_repr   r   r   r   Úobject_r   ra   rb   r   r_   r   r   r   r#   r8   r<   r   ©r(   r)   r   r   r   r   Útest_arrays_replicatedË   s4    ÿÿÿÿÿÿz%TestStructures.test_arrays_replicatedc                 C   s†  t t td¡dd�}t|jjjjt	j
kƒ t|jjjjt	j
kƒ t|jjjjt	j
kƒ t|jjjjt	j
kƒ t|jjjdƒ t|jjjdƒ t|jjjdƒ t|jjjdƒ tdƒD ]Ì}tdƒD ]¾}tdƒD ]°}t|jj|||f t	jdddgt	jd	�ƒ t|jj|||f t	jd
dddgt	jd	�ƒ t|jj|||f t	 t	 d¡t	 d¡g¡ƒ t|jj|||f t	jdddgtd	�ƒ qÌqÀq´d S )Nzstruct_arrays_replicated_3d.savFr/   ©rO   rP   rT   rO   rP   rT   rS   r
   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r‘   )r(   r)   r   ÚjÚkr   r   r   Útest_arrays_replicated_3dç   s<    ÿÿÿÿÿÿÿz(TestStructures.test_arrays_replicated_3dc                 C   sˆ   t t td¡dd�}t|jjtjdgtj	d�ƒ t|jj
tjdgtj	d�ƒ t|jjtjdgtj	d�ƒ t|jjtjdgtj	d�ƒ d S )Nzstruct_inherit.savFr/   r   r
   rO   )r   r   r%   r&   r   ÚfcÚxr   r   r#   ÚyÚrra   r1   r   r   r   Útest_inheritance  s
    zTestStructures.test_inheritancec              	   C   sX   t ƒ �&}| td¡ tt td¡dd�}W 5 Q R X t|jj	d t
jddgt
jd�ƒ d S )	Nz.Not able to verify number of bytes from headerzstruct_arrays_byte_idl80.savFr/   r   é7   éB   r
   )r   ÚfilterÚUserWarningr   r   r%   r&   r   rœ   r›   r   r   r'   )r(   Úsupr)   r   r   r   Útest_arrays_corrupt_idl80  s    ÿz(TestStructures.test_arrays_corrupt_idl80N)r+   r,   r-   r‡   r‹   rŽ   r�   r•   r™   rž   r¤   r   r   r   r   r‚   §   s   			r‚   c                   @   s   e Zd Zdd„ ZdS )ÚTestPointersc                 C   sL   t t td¡dd�}t|jt d¡ƒ t|jt d¡ƒ t	|j|jkƒ d S )Nzscalar_heap_pointer.savFr/   rC   )
r   r   r%   r&   r   Zc64_pointer1r   rE   Zc64_pointer2r   r1   r   r   r   Útest_pointers  s    zTestPointers.test_pointersN)r+   r,   r-   r¦   r   r   r   r   r¥     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S )ÚTestPointerArrayc                 C   sb   t t td¡dd�}t|jjdƒ tt 	|jt 
d¡k¡ƒ tt 	t|jƒt|jd ƒk¡ƒ d S )Nzarray_float32_pointer_1d.savFr/   re   rU   r   )r   r   r%   r&   r   rg   r_   r   r   Úallr8   Úvect_idr$   r1   r   r   r   rh   $  s    zTestPointerArray.test_1dc                 C   sb   t t td¡dd�}t|jjdƒ tt 	|jt 
d¡k¡ƒ tt 	t|jƒt|jd ƒk¡ƒ d S )Nzarray_float32_pointer_2d.savFr/   ri   rU   )r   r   )r   r   r%   r&   r   rl   r_   r   r   r¨   r8   r©   r$   r1   r   r   r   rm   *  s    zTestPointerArray.test_2dc                 C   sb   t t td¡dd�}t|jjdƒ tt 	|jt 
d¡k¡ƒ tt 	t|jƒt|jd ƒk¡ƒ d S )Nzarray_float32_pointer_3d.savFr/   rn   rU   ©r   r   r   )r   r   r%   r&   r   rp   r_   r   r   r¨   r8   r©   r$   r1   r   r   r   rq   0  s    zTestPointerArray.test_3dc                 C   sb   t t td¡dd�}t|jjdƒ tt 	|jt 
d¡k¡ƒ tt 	t|jƒt|jd ƒk¡ƒ d S )Nzarray_float32_pointer_4d.savFr/   rr   rU   )r   r   r   r   )r   r   r%   r&   r   ru   r_   r   r   r¨   r8   r©   r$   r1   r   r   r   rv   6  s    zTestPointerArray.test_4dc                 C   sb   t t td¡dd�}t|jjdƒ tt 	|jt 
d¡k¡ƒ tt 	t|jƒt|jd ƒk¡ƒ d S )Nzarray_float32_pointer_5d.savFr/   rN   rU   )r   r   r   r   r   )r   r   r%   r&   r   r^   r_   r   r   r¨   r8   r©   r$   r1   r   r   r   rw   <  s    zTestPointerArray.test_5dc                 C   sb   t t td¡dd�}t|jjdƒ tt 	|jt 
d¡k¡ƒ tt 	t|jƒt|jd ƒk¡ƒ d S )Nzarray_float32_pointer_6d.savFr/   rx   rU   )r   r   r   r   r   r   )r   r   r%   r&   r   ry   r_   r   r   r¨   r8   r©   r$   r1   r   r   r   rz   B  s    zTestPointerArray.test_6dc                 C   sb   t t td¡dd�}t|jjdƒ tt 	|jt 
d¡k¡ƒ tt 	t|jƒt|jd ƒk¡ƒ d S )Nzarray_float32_pointer_7d.savFr/   r{   rU   )r   r   r   r   r   r   r   )r   r   r%   r&   r   r|   r_   r   r   r¨   r8   r©   r$   r1   r   r   r   r}   H  s    zTestPointerArray.test_7dc                 C   sb   t t td¡dd�}t|jjdƒ tt 	|jt 
d¡k¡ƒ tt 	t|jƒt|jd ƒk¡ƒ d S )Nzarray_float32_pointer_8d.savFr/   r~   rU   )r   r   r   r   r   r   r   r   )r   r   r%   r&   r   r   r_   r   r   r¨   r8   r©   r$   r1   r   r   r   r€   N  s    zTestPointerArray.test_8dNr�   r   r   r   r   r§   !  s   r§   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestPointerStructuresc                 C   s|   t t td¡dd�}t|jjtjt 	d¡tj
d�ƒ t|jjtjt 	d¡tj
d�ƒ tt|jjd ƒt|jjd ƒkƒ d S )Nzstruct_pointers.savFr/   rU   r
   r   )r   r   r%   r&   r   ZpointersÚgr   r   r8   r“   Úhr   r$   r1   r   r   r   r‡   X  s      z"TestPointerStructures.test_scalarsc                 C   s‚   t t td¡dd�}t|jjt t 	d¡d¡ 
tj¡ƒ t|jjt t 	d¡d¡ 
tj¡ƒ tt t|jjƒt|jjƒk¡ƒ d S )Nzstruct_pointers_replicated.savFr/   rU   rR   )r   r   r%   r&   r   Úpointers_repr¬   r   r‰   r8   rŠ   r“   r­   r   r¨   r©   r1   r   r   r   Útest_pointers_replicated^  s    $$z.TestPointerStructures.test_pointers_replicatedc                 C   sz   t t td¡dd�}t t d¡d¡ ddd¡ tj	¡}t
|jj|ƒ t
|jj|ƒ tt t|jjƒt|jjƒk¡ƒ d S )	Nz!struct_pointers_replicated_3d.savFr/   rU   rŒ   rO   rP   rT   )r   r   r%   r&   r   r‰   r8   r�   rŠ   r“   r   r®   r¬   r­   r   r¨   r©   )r(   r)   Zs_expectr   r   r   Útest_pointers_replicated_3dd  s
    $z1TestPointerStructures.test_pointers_replicated_3dc                 C   sð   t t td¡dd�}t|jjd t t 	d¡d¡ 
tj¡ƒ t|jjd t t 	d¡d¡ 
tj¡ƒ tt t|jjd ƒt|jjd d ƒk¡ƒ tt t|jjd ƒt|jjd d ƒk¡ƒ tt|jjd d ƒt|jjd d ƒkƒ d S )Nzstruct_pointer_arrays.savFr/   r   rU   rT   rP   )r   r   r%   r&   r   r`   r¬   r   r‰   r8   rŠ   r“   r­   r   r¨   r©   r$   r1   r   r   r   r�   k  s    ((..z!TestPointerStructures.test_arraysc                 C   s  t t td¡dd�}t|jjjjt	j
kƒ t|jjjjt	j
kƒ t|jjjdƒ t|jjjdƒ tdƒD ]°}t|jj| t	 t	 d¡d¡ t	j
¡ƒ t|jj| t	 t	 d¡d¡ t	j
¡ƒ tt	 t|jj| ƒt|jjd	 d	 ƒk¡ƒ tt	 t|jj| ƒt|jjd	 d	 ƒk¡ƒ qhd S )
Nz$struct_pointer_arrays_replicated.savFr/   r�   rR   rU   rT   rP   r   )r   r   r%   r&   r   r’   r¬   r   r   r   r“   r­   r   r_   r   r   r‰   r8   rŠ   r¨   r©   r$   r”   r   r   r   r•   s  s    ((.z,TestPointerStructures.test_arrays_replicatedc                 C   sV  t  td¡}t|dd�}t|jjjjt	j
kƒ t|jjjjt	j
kƒ t|jjjdƒ t|jjjdƒ tdƒD ]ä}tdƒD ]Ö}tdƒD ]È}t|jj|||f t	 t	 d¡d¡ t	j
¡ƒ t|jj|||f t	 t	 d¡d¡ t	j
¡ƒ tt	 t|jj|||f ƒt|jjd	 d
 ƒk¡ƒ tt	 t|jj|||f ƒt|jjd	 d
 ƒk¡ƒ q„qxqld S )Nz'struct_pointer_arrays_replicated_3d.savFr/   r–   rO   rP   rT   rU   rª   r   )r   r%   r&   r   r   r’   r¬   r   r   r   r“   r­   r   r_   r   r   r‰   r8   rŠ   r¨   r©   r$   )r(   Úpthr)   r   r—   r˜   r   r   r   r™   …  s"    ÿÿ4z/TestPointerStructures.test_arrays_replicated_3dN)	r+   r,   r-   r‡   r¯   r°   r�   r•   r™   r   r   r   r   r«   U  s   r«   c                   @   s   e Zd ZdZdd„ ZdS )ÚTestTagsz4Test that sav files with description tag read at allc                 C   s*   t t td¡dd�}t|jt d¡ƒ d S )Nzscalar_byte_descr.savFr/   r"   r0   r1   r   r   r   Útest_descriptionž  s    zTestTags.test_descriptionN)r+   r,   r-   Ú__doc__r³   r   r   r   r   r²   ›  s   r²   c                  C   s6   t t td¡dd�} t| jd ƒ t| jt d¡ƒ d S )Nznull_pointer.savFr/   rR   )	r   r   r%   r&   r   ÚpointÚcheckr   r#   )r)   r   r   r   Útest_null_pointer£  s    r·   c               	   C   sx   t jdd��$} t  d¡ tt td¡dd�}W 5 Q R X tt| ƒdkƒ tt	| d j
ƒd	kƒ t|d
 t d d g¡ƒ d S )NT)ÚrecordÚalwayszinvalid_pointer.savFr/   rS   r   zNVariable referenced by pointer not found in heap: variable will be set to Noner   )ÚwarningsÚcatch_warningsÚsimplefilterr   r   r%   r&   r   r   r   Úmessager   r   r   )Úwr)   r   r   r   Útest_invalid_pointerª  s    
r¿   c               	   C   sn   t  ddi¡} | d dkst‚| jdks,t‚t t¡� | d  W 5 Q R X tjtdd�� | j W 5 Q R X d S )NÚonerS   Útwozhas no attribute)Úmatch)	r   ZAttrDictÚAssertionErrorrÀ   ÚpytestZraisesÚKeyErrorÚAttributeErrorrÁ   )rb   r   r   r   Útest_attrdict»  s    rÇ   )$Úosr   rº   Únumpyr   Znumpy.testingr   r   r   r   rÄ   Zscipy.ior   r   r%   ÚdirnameÚ__file__r&   r   r   r   Z	vectorizer$   r©   r   r.   rM   rd   r‚   r¥   r§   r«   r²   r·   r¿   rÇ   r   r   r   r   Ú<module>   s.   	
=$p
4F