o
    Ö­jYP  ã                   @   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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 e
j!j"dd „ ƒZ#d!d"„ Z$dS )#é    )ÚpathN)Úassert_equalÚassert_array_equalÚassert_Úsuppress_warnings)Úreadsav)Ú_idlÚdatac                 C   sL   t | |ƒ t|tƒrt t| ƒt|ƒƒ dS t t | ¡jjt |¡jjƒ dS )z*Assert whether value AND type are the sameN)r   Ú
isinstanceÚstrÚtypeÚnpÚasarrayÚdtype©ÚaÚb© r   úT/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/io/tests/test_idl.pyÚ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                   @   ó   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|v ƒ t	|d t  d¡ƒ t	|d t  
d¡ƒ d S )Nr   iç  úscalar_byte.savF)ÚidictÚverboseÚi8uéê   )r   Úint16Úidr   r   ÚjoinÚ	DATA_PATHr   r   r   Úuint8)ÚselfÚcustom_dictÚ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   ó*   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_byte2   ó   zTestScalars.test_bytec                 C   r,   )Nzscalar_int16.savFr-   i`¤ÿÿ)r   r   r    r!   r   Úi16sr   r   r/   r   r   r   Ú
test_int166   r1   zTestScalars.test_int16c                 C   r,   )Nzscalar_int32.savFr-   i.ýi¶)r   r   r    r!   r   Úi32sr   Úint32r/   r   r   r   Ú
test_int32:   r1   zTestScalars.test_int32c                 C   r,   )Nzscalar_float32.savFr-   ç•ÐÃ�·Ç)r   r   r    r!   r   Úf32r   Úfloat32r/   r   r   r   Útest_float32>   r1   zTestScalars.test_float32c                 C   r,   )Nzscalar_float64.savFr-   g‰CÌmC±ÿ)r   r   r    r!   r   Úf64r   Úfloat64r/   r   r   r   Útest_float64B   r1   zTestScalars.test_float64c                 C   r,   )Nzscalar_complex32.savFr-   y  )Ž¨j¼BÌ•h~ð=rÆ)r   r   r    r!   r   Úc32r   Ú	complex64r/   r   r   r   Útest_complex32F   r1   zTestScalars.test_complex32c                 C   s.   t t td¡dd�}d}t|jt |¡ƒ d S )Nzscalar_string.savFr-   z.The quick brown fox jumps over the lazy python)r   r   r    r!   r   r&   r   Úbytes_)r#   r&   Úmsgr   r   r   Ú
test_bytesJ   s   zTestScalars.test_bytesc                 C   ó   d S ©Nr   ©r#   r   r   r   Útest_structureO   ó   zTestScalars.test_structurec                 C   r,   )Nzscalar_complex64.savFr-   ù*ÙÃÜð3W¾o‚Òÿ)r   r   r    r!   r   Úc64r   Ú
complex128r/   r   r   r   Útest_complex64R   s
   þzTestScalars.test_complex64c                 C   rD   rE   r   rF   r   r   r   Útest_heap_pointerY   rH   zTestScalars.test_heap_pointerc                 C   rD   rE   r   rF   r   r   r   Útest_object_reference\   rH   z!TestScalars.test_object_referencec                 C   r,   )Nzscalar_uint16.savFr-   içÿ  )r   r   r    r!   r   Úi16ur   Úuint16r/   r   r   r   Útest_uint16_   r1   zTestScalars.test_uint16c                 C   r,   )Nzscalar_uint32.savFr-   l   Áÿ )r   r   r    r!   r   Úi32ur   Úuint32r/   r   r   r   Útest_uint32c   r1   zTestScalars.test_uint32c                 C   r,   )Nzscalar_int64.savFr-   lûÿÿÿ'{ÿÿÿ )r   r   r    r!   r   Úi64sr   Úint64r/   r   r   r   Ú
test_int64g   r1   zTestScalars.test_int64c                 C   r,   )Nzscalar_uint64.savFr-   l   Å(ÿÿÿ )r   r   r    r!   r   Úi64ur   Úuint64r/   r   r   r   Útest_uint64k   r1   zTestScalars.test_uint64N)r(   r)   r*   r0   r3   r6   r:   r=   r@   rC   rG   rL   rM   rN   rQ   rT   rW   rZ   r   r   r   r   r+   /   s     r+   c                   @   r   )Ú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g d	¢tjd
�ƒ t|jjd tjg d¢tj	d
�ƒ t|jjd t t d¡t d¡g¡ƒ t|jjd tjg d¢td
�ƒ d S )Nzvarious_compressed.savFr-   r   r7   rI   ©é   é   r]   é   é   r   ©é   é   r^   ©r   ©ç      @g      @g      @g      @ù      ð?       @ù      @       @©s   cheeses   baconó   spam)r   r   r    r!   r   r   r   r"   r8   r9   rJ   rK   r   Úarray5dÚshapeÚarraysr   Úarrayr   r   Úcr?   ÚdÚobjectr/   r   r   r   Útest_compresseds   s    þ""ÿÿzTestCompressed.test_compressedN)r(   r)   r*   rr   r   r   r   r   r[   p   ó    r[   c                   @   óL   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   ó&   t t td¡dd�}t|jjdƒ d S )Nzarray_float32_1d.savFr-   ©é{   )r   r   r    r!   r   Úarray1drl   r/   r   r   r   Útest_1dˆ   ó   zTestArrayDimensions.test_1dc                 C   rv   )Nzarray_float32_2d.savFr-   ©é   é   )r   r   r    r!   r   Úarray2drl   r/   r   r   r   Útest_2dŒ   r{   zTestArrayDimensions.test_2dc                 C   rv   )Nzarray_float32_3d.savFr-   ©é   r}   r~   )r   r   r    r!   r   Úarray3drl   r/   r   r   r   Útest_3d�   r{   zTestArrayDimensions.test_3dc                 C   rv   )Nzarray_float32_4d.savFr-   ©r]   r`   é   é   )r   r   r    r!   r   Úarray4drl   r/   r   r   r   Útest_4d”   r{   zTestArrayDimensions.test_4dc                 C   rv   )Nzarray_float32_5d.savFr-   r\   )r   r   r    r!   r   rk   rl   r/   r   r   r   Útest_5d˜   r{   zTestArrayDimensions.test_5dc                 C   rv   )Nzarray_float32_6d.savFr-   ©r^   r_   r]   r`   r^   r]   )r   r   r    r!   r   Úarray6drl   r/   r   r   r   Útest_6dœ   r{   zTestArrayDimensions.test_6dc                 C   rv   )Nzarray_float32_7d.savFr-   ©rc   rb   rc   r^   r]   r^   rc   )r   r   r    r!   r   Úarray7drl   r/   r   r   r   Útest_7d    r{   zTestArrayDimensions.test_7dc                 C   rv   )Nzarray_float32_8d.savFr-   ©r]   r^   rc   rb   rc   r^   r`   r]   )r   r   r    r!   r   Úarray8drl   r/   r   r   r   Útest_8d¤   r{   zTestArrayDimensions.test_8dN©r(   r)   r*   rz   r€   r„   r‰   rŠ   r�   r�   r“   r   r   r   r   ru   …   s    ru   c                   @   sT   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	e
jj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-   rb   rc   ç      @rf   rj   rd   ù      ð¿      @)r   r   r    r!   r   Úscalarsr   r   rn   r   r   r5   ro   r9   rp   r<   Úerq   Úfr?   r/   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-   rb   r`   rc   r–   rf   rj   r—   )r   r   r    r!   r   Úscalars_repr   r   Úrepeatr   r   r5   ro   r9   rp   r<   r™   Úastyperq   rš   r?   r/   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-   rb   é   r]   r^   rc   r–   rf   rj   r—   )r   r   r    r!   r   rœ   r   r   r�   r   Úreshaper   r5   ro   r9   rp   r<   r™   rž   rq   rš   r?   r/   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g d¢tj	d�ƒ t|jj
d tjg d¢tjd�ƒ t|jjd t t d¡t d	¡g¡ƒ t|jjd tjg d
¢td�ƒ d S )Nzstruct_arrays.savFr-   r   ra   rd   re   rg   rh   ri   )r   r   r    r!   r   rm   r   r   rn   r   r   r9   ro   r?   rp   rq   r/   r   r   r   Útest_arraysÌ   s   "ÿÿÿzTestStructures.test_arraysc              	   C   sJ  t t td¡dd�}t|jjjjt	j
u ƒ t|jjjjt	j
u ƒ t|jjjjt	j
u ƒ t|jjjjt	j
u ƒ t|jjjdƒ t|jjjdƒ t|jjjdƒ t|jjjdƒ tdƒD ]H}t|jj| t	jg d¢t	jd�ƒ t|jj| t	jg d¢t	jd�ƒ t|jj| t	 t	 d	¡t	 d
¡g¡ƒ t|jj| t	jg d¢td�ƒ qZd S )Nzstruct_arrays_replicated.savFr-   ©r`   r`   ra   rd   re   rg   rh   ri   ©r   r   r    r!   r   Ú
arrays_repr   r   r   r   Úobject_r   ro   rp   r   rl   Úranger   rn   r   r9   r?   rq   ©r#   r&   Úir   r   r   Útest_arrays_replicatedÖ   s6   ÿÿÿÿ
ÿÿøz%TestStructures.test_arrays_replicatedc                 C   s~  t t td¡dd�}t|jjjjt	j
u ƒ t|jjjjt	j
u ƒ t|jjjjt	j
u ƒ t|jjjjt	j
u ƒ t|jjjdƒ t|jjjdƒ t|jjjdƒ t|jjjdƒ tdƒD ]b}tdƒD ][}tdƒD ]T}t|jj|||f t	jg d¢t	jd	�ƒ t|jj|||f t	jg d
¢t	jd	�ƒ t|jj|||f t	 t	 d¡t	 d¡g¡ƒ t|jj|||f t	jg d¢td	�ƒ qfq`qZd S )Nzstruct_arrays_replicated_3d.savFr-   ©r]   r^   rc   r]   r^   rc   ra   rd   re   rg   rh   ri   r¥   )r#   r&   rª   ÚjÚkr   r   r   Útest_arrays_replicated_3dò   sF   ÿÿ
ÿÿÿÿ
ÿÿ÷ÿÿ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   rd   r]   )r   r   r    r!   r   ÚfcÚxr   rn   r   ÚyÚrro   r/   r   r   r   Útest_inheritance  s
    zTestStructures.test_inheritancec                 C   sl   t ƒ �}| td¡ tt td¡dd�}W d   ƒ n1 sw   Y  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   rd   )r   ÚfilterÚUserWarningr   r   r    r!   r   r²   r±   r   rn   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´   ÚpytestÚmarkÚthread_unsaferº   r   r   r   r   r•   ©   s    	

 r•   c                   @   r   )ÚTestPointersc                 C   sL   t t td¡dd�}t|jt d¡ƒ t|jt d¡ƒ t	|j|ju ƒ d S )Nzscalar_heap_pointer.savFr-   rI   )
r   r   r    r!   r   Úc64_pointer1r   rK   Úc64_pointer2r   r/   r   r   r   Útest_pointers'  s   þþzTestPointers.test_pointersN)r(   r)   r*   rÁ   r   r   r   r   r¾   $  rs   r¾   c                   @   rt   )ÚTestPointerArrayc                 C   ób   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-   rw   rf   r   )r   r   r    r!   r   ry   rl   r   r   Úallr9   Úvect_idr   r/   r   r   r   rz   7  ó   &zTestPointerArray.test_1dc                 C   rÃ   )Nzarray_float32_pointer_2d.savFr-   r|   rf   )r   r   )r   r   r    r!   r   r   rl   r   r   rÄ   r9   rÅ   r   r/   r   r   r   r€   =  rÆ   zTestPointerArray.test_2dc                 C   rÃ   )Nzarray_float32_pointer_3d.savFr-   r�   rf   ©r   r   r   )r   r   r    r!   r   rƒ   rl   r   r   rÄ   r9   rÅ   r   r/   r   r   r   r„   C  rÆ   zTestPointerArray.test_3dc                 C   rÃ   )Nzarray_float32_pointer_4d.savFr-   r…   rf   )r   r   r   r   )r   r   r    r!   r   rˆ   rl   r   r   rÄ   r9   rÅ   r   r/   r   r   r   r‰   I  rÆ   zTestPointerArray.test_4dc                 C   rÃ   )Nzarray_float32_pointer_5d.savFr-   r\   rf   )r   r   r   r   r   )r   r   r    r!   r   rk   rl   r   r   rÄ   r9   rÅ   r   r/   r   r   r   rŠ   O  rÆ   zTestPointerArray.test_5dc                 C   rÃ   )Nzarray_float32_pointer_6d.savFr-   r‹   rf   )r   r   r   r   r   r   )r   r   r    r!   r   rŒ   rl   r   r   rÄ   r9   rÅ   r   r/   r   r   r   r�   U  rÆ   zTestPointerArray.test_6dc                 C   rÃ   )Nzarray_float32_pointer_7d.savFr-   rŽ   rf   )r   r   r   r   r   r   r   )r   r   r    r!   r   r�   rl   r   r   rÄ   r9   rÅ   r   r/   r   r   r   r�   [  rÆ   zTestPointerArray.test_7dc                 C   rÃ   )Nzarray_float32_pointer_8d.savFr-   r‘   rf   )r   r   r   r   r   r   r   r   )r   r   r    r!   r   r’   rl   r   r   rÄ   r9   rÅ   r   r/   r   r   r   r“   a  rÆ   zTestPointerArray.test_8dNr”   r   r   r   r   rÂ   4  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-   rf   rd   r   )r   r   r    r!   r   ÚpointersÚgr   rn   r9   r§   Úhr   r   r/   r   r   r   r›   k  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-   rf   r`   )r   r   r    r!   r   Úpointers_reprÊ   r   r�   r9   rž   r§   rË   r   rÄ   rÅ   r/   r   r   r   Útest_pointers_replicatedq  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-   rf   r    r]   r^   rc   )r   r   r    r!   r   r�   r9   r¡   rž   r§   r   rÌ   rÊ   rË   r   rÄ   rÅ   )r#   r&   Ús_expectr   r   r   Útest_pointers_replicated_3dz  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   rf   rc   r^   )r   r   r    r!   r   rm   rÊ   r   r�   r9   rž   r§   rË   r   rÄ   rÅ   r   r/   r   r   r   r£   ‚  s   ÿÿ..0z!TestPointerStructures.test_arraysc                 C   s  t t td¡dd�}t|jjjjt	j
u ƒ t|jjjjt	j
u ƒ t|jjjdƒ t|jjjdƒ tdƒD ]X}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¡ƒ q4d S )
Nz$struct_pointer_arrays_replicated.savFr-   r¤   r`   rf   rc   r^   r   )r   r   r    r!   r   r¦   rÊ   r   r   r   r§   rË   r   rl   r¨   r   r�   r9   rž   rÄ   rÅ   r   r©   r   r   r   r«   Œ  s"   ÿÿÿ.0úz,TestPointerStructures.test_arrays_replicatedc           
   
   C   sf  t  td¡}t|dd�}t|jjjjt	j
u ƒ t|jjjjt	j
u ƒ t|jjjdƒ t|jjjdƒ tdƒD ]z}tdƒD ]s}tdƒD ]l}t|jj|||f t	 t	 d¡d¡ t	j
¡ƒ t|jj|||f t	 t	 d¡d¡ t	j
¡ƒ t|jj|||f ƒ}t|jjd	 d
 ƒ}t	 ||k¡s�J ‚t|jj|||f ƒ}t|jjd	 d
 ƒ}	t	 ||	k¡s®J ‚qBq<q6d S )Nz'struct_pointer_arrays_replicated_3d.savFr-   r¬   r]   r^   rc   rf   rÇ   r   )r   r    r!   r   r   r¦   rÊ   r   r   r   r§   rË   r   rl   r¨   r   r�   r9   rž   rÅ   r   rÄ   )
r#   Úpthr&   rª   r­   r®   Úg0Úg1Úh0Úh1r   r   r   r¯   ¡  s0   ÿÿöÿÿz/TestPointerStructures.test_arrays_replicated_3dN)	r(   r)   r*   r›   rÍ   rÏ   r£   r«   r¯   r   r   r   r   rÈ   h  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   r,   )Nzscalar_byte_descr.savFr-   r   r.   r/   r   r   r   Útest_description¾  r1   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-   r`   )	r   r   r    r!   r   ÚpointÚcheckr   r   )r&   r   r   r   Útest_null_pointerÃ  s   rÚ   c                  C   sŒ   t jdd��} t  d¡ tt td¡dd�}W d   ƒ n1 s w   Y  tt| ƒdkƒ tt	| d j
ƒd	kƒ t|d
 t d d g¡ƒ d S )NT)ÚrecordÚalwayszinvalid_pointer.savFr-   rb   r   zNVariable referenced by pointer not found in heap: variable will be set to Noner   )ÚwarningsÚcatch_warningsÚsimplefilterr   r   r    r!   r   Úlenr   Úmessager   r   rn   )Úwr&   r   r   r   Útest_invalid_pointerÊ  s   	
þrã   c                  C   s˜   t  ddi¡} | d dksJ ‚| jdksJ ‚t t¡� | d  W d   ƒ n1 s*w   Y  tjtdd�� | j W d   ƒ d S 1 sEw   Y  d S )NÚonerb   Útwozhas no attribute)Úmatch)r   ÚAttrDicträ   r»   ÚraisesÚKeyErrorÚAttributeErrorrå   )rp   r   r   r   Útest_attrdictÜ  s   
ÿ"ÿrë   )%Úosr   rÝ   Únumpyr   Únumpy.testingr   r   r   r   r»   Úscipy.ior   r   r    ÚdirnameÚ__file__r!   r   r   Ú	vectorizer   rÅ   r   r+   r[   ru   r•   r¾   rÂ   rÈ   rÕ   rÚ   r¼   r½   rã   rë   r   r   r   r   Ú<module>   s0    	
A${4S
