o
    ?HhYP                     @   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   W/home/air/sanwanet/gpt-api/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-   gCmC)r   r   r    r!   r   f64r   float64r/   r   r   r   test_float64B   r1   zTestScalars.test_float64c                 C   r,   )Nzscalar_complex32.savFr-   y  )jB̕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sJ t|jj|||f }t|jjd	 d
 }	t	||	ksJ 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
