
    _MhYP                        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j         ej        e          d          Zd Zd Z ej        e          Z G d	 d
          Z G d d          Z G d de          Z G d d          Z G d d          Z G d d          Z G d d          Z G d d          Z G d d          Zd Z e
j!        j"        d             Z#d Z$dS )    )pathN)assert_equalassert_array_equalassert_suppress_warnings)readsav)_idldatac                 8   t          | |           t          |t                    r,t          t          |           t          |                     dS t          t	          j        |           j        j        t	          j        |          j        j                   dS )z*Assert whether value AND type are the sameN)r   
isinstancestrtypenpasarraydtypeabs     W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/io/tests/test_idl.pyassert_identicalr      sy    A!S IT!WWd1gg&&&&&RZ]](-rz!}}/B/GHHHHH    c                 n    t          | |           t          | j        j        |j        j                   dS )z+Assert whether values AND type are the sameN)r   r   r   r   r   s     r   assert_array_identicalr      s0    q!qw|,,,,,r   c                       e Zd Zd ZdS )	TestIdictc                    dt          j        d          i}t          |          }t          t	          j        t          d          |d          }t          |t          |                     t          d|v            t          |d         t          j        d                     t          |d         t          j
        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ss       r   
test_idictzTestIdict.test_idict$   s    BHSMM*ooDIi):;;%u6 6 6["Q%%(((q3#///528C==11111r   N)__name__
__module____qualname__r+    r   r   r   r   "   s#        2 2 2 2 2r   r   c                   h    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd ZdS )TestScalarsc                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nr   Fr   r!   r   r   r$   r%   r   r    r   r&   r'   r*   s     r   	test_bytezTestScalars.test_byte2   sA    DIi):;;UKKK.....r   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_int16.savFr3   i`)r   r   r$   r%   r   i16sr   r"   r5   s     r   
test_int16zTestScalars.test_int166   sC    DIi);<<eLLL&!1!122222r   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_int32.savFr3   i.i)r   r   r$   r%   r   i32sr   int32r5   s     r   
test_int32zTestScalars.test_int32:   sC    DIi);<<eLLL+!6!677777r   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_float32.savFr3   )r   r   r$   r%   r   f32r   float32r5   s     r   test_float32zTestScalars.test_float32>   sC    DIi)=>>NNN
> : :;;;;;r   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_float64.savFr3   gCmC)r   r   r$   r%   r   f64r   float64r5   s     r   test_float64zTestScalars.test_float64B   sD    DIi)=>>NNN
+C D DEEEEEr   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_complex32.savFr3   y  )jB̕h~=r)r   r   r$   r%   r   c32r   	complex64r5   s     r   test_complex32zTestScalars.test_complex32F   sD    DIi)?@@%PPP-E F FGGGGGr   c                     t          t          j        t          d          d          }d}t	          |j        t          j        |                     d S )Nzscalar_string.savFr3   z.The quick brown fox jumps over the lazy python)r   r   r$   r%   r   r*   r   bytes_)r'   r*   msgs      r   
test_byteszTestScalars.test_bytesJ   sF    DIi)<==uMMM>binn-----r   c                     d S Nr/   r'   s    r   test_structurezTestScalars.test_structureO       r   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_complex64.savFr3   *3Wo)r   r   r$   r%   r   c64r   
complex128r5   s     r   test_complex64zTestScalars.test_complex64R   sP    DIi)?@@%PPPEMJKK	
 	
 	
 	
 	
r   c                     d S rP   r/   rQ   s    r   test_heap_pointerzTestScalars.test_heap_pointerY   rS   r   c                     d S rP   r/   rQ   s    r   test_object_referencez!TestScalars.test_object_reference\   rS   r   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_uint16.savFr3   i  )r   r   r$   r%   r   i16ur   uint16r5   s     r   test_uint16zTestScalars.test_uint16_   sC    DIi)<==uMMM5!1!122222r   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_uint32.savFr3   l    )r   r   r$   r%   r   i32ur   uint32r5   s     r   test_uint32zTestScalars.test_uint32c   sC    DIi)<==uMMM:!6!677777r   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_int64.savFr3   l'{ )r   r   r$   r%   r   i64sr   int64r5   s     r   
test_int64zTestScalars.test_int64g   sD    DIi);<<eLLL*>!?!?@@@@@r   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_uint64.savFr3   l   ( )r   r   r$   r%   r   i64ur   uint64r5   s     r   test_uint64zTestScalars.test_uint64k   sD    DIi)<==uMMM+?!@!@AAAAAr   N)r,   r-   r.   r6   r9   r=   rB   rF   rJ   rN   rR   rX   rZ   r\   r`   rd   rh   rl   r/   r   r   r1   r1   /   s       / / /3 3 38 8 8< < <F F FH H H. . .
  
 
 
    3 3 38 8 8A A AB B B B Br   r1   c                       e Zd Zd ZdS )TestCompressedc           	         t          t          j        t          d          d          }t	          |j        t          j        d                     t	          |j        t          j	        d                     t	          |j
        t          j        d                     t          |j        j        d           t	          |j        j        d         t          j        g d	t          j        
                     t	          |j        j        d         t          j        g dt          j	        
                     t	          |j        j        d         t          j        t          j        d          t          j        d          g                     t	          |j        j        d         t          j        g dt.          
                     d S )Nzvarious_compressed.savFr3   r!   r?   rU         rq         r         rr   r         @g      @g      @g      @      ?       @      @       @s   cheeses   bacon   spam)r   r   r$   r%   r   r    r   r&   r@   rA   rV   rW   r   array5dshapearraysr   arrayr"   r   crI   dobjectr5   s     r   test_compressedzTestCompressed.test_compresseds   sx   DIi)ABBERRR...
> : :;;;EMJKK	
 	
 	
 	QY_o666A"((K(K(KLLLA1A1A1A(T(T(TUUUA2<#5#5r|D7I7I"JKK	M 	M 	MA"@"@"@OOO	Q 	Q 	Q 	Q 	Qr   N)r,   r-   r.   r   r/   r   r   rn   rn   p   s(        Q Q Q Q Qr   rn   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestArrayDimensionsc                     t          t          j        t          d          d          }t	          |j        j        d           d S )Nzarray_float32_1d.savFr3   {   )r   r   r$   r%   r   array1dr   r5   s     r   test_1dzTestArrayDimensions.test_1d   s;    DIi)?@@%PPPQY_g.....r   c                     t          t          j        t          d          d          }t	          |j        j        d           d S )Nzarray_float32_2d.savFr3         )r   r   r$   r%   r   array2dr   r5   s     r   test_2dzTestArrayDimensions.test_2d   s;    DIi)?@@%PPPQY_h/////r   c                     t          t          j        t          d          d          }t	          |j        j        d           d S )Nzarray_float32_3d.savFr3      r   r   )r   r   r$   r%   r   array3dr   r5   s     r   test_3dzTestArrayDimensions.test_3d   ;    DIi)?@@%PPPQY_l33333r   c                     t          t          j        t          d          d          }t	          |j        j        d           d S )Nzarray_float32_4d.savFr3   rq   rt         )r   r   r$   r%   r   array4dr   r5   s     r   test_4dzTestArrayDimensions.test_4d   r   r   c                     t          t          j        t          d          d          }t	          |j        j        d           d S )Nzarray_float32_5d.savFr3   rp   )r   r   r$   r%   r   r   r   r5   s     r   test_5dzTestArrayDimensions.test_5d   s;    DIi)?@@%PPPQY_o66666r   c                     t          t          j        t          d          d          }t	          |j        j        d           d S )Nzarray_float32_6d.savFr3   rr   rs   rq   rt   rr   rq   )r   r   r$   r%   r   array6dr   r5   s     r   test_6dzTestArrayDimensions.test_6d   s<    DIi)?@@%PPPQY_&899999r   c                     t          t          j        t          d          d          }t	          |j        j        d           d S )Nzarray_float32_7d.savFr3   rw   rv   rw   rr   rq   rr   rw   )r   r   r$   r%   r   array7dr   r5   s     r   test_7dzTestArrayDimensions.test_7d   s<    DIi)?@@%PPPQY_&;<<<<<r   c                     t          t          j        t          d          d          }t	          |j        j        d           d S )Nzarray_float32_8d.savFr3   rq   rr   rw   rv   rw   rr   rt   rq   )r   r   r$   r%   r   array8dr   r5   s     r   test_8dzTestArrayDimensions.test_8d   s<    DIi)?@@%PPPQY_&>?????r   Nr,   r-   r.   r   r   r   r   r   r   r   r   r/   r   r   r   r      s        / / /0 0 04 4 44 4 47 7 7: : := = =@ @ @ @ @r   r   c                   b    e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j        j        d             Zd	S )
TestStructuresc                 ,   t          t          j        t          d          d          }t	          |j        j        t          j        t          j	        d                               t	          |j        j
        t          j        t          j        d                               t	          |j        j        t          j        t          j        d                               t	          |j        j        t          j        t          j        d                               t	          |j        j        t          j        dgt"          	                     t	          |j        j        t          j        t          j        d
                               d S )Nzstruct_scalars.savFr3   rv   rw         @rz   r~   rx               @)r   r   r$   r%   r   scalarsr   r   r   r"   r   r<   r   rA   r   rE   er   frI   r5   s     r   test_scalarszTestStructures.test_scalars   s   DIi)=>>NNNbhrx{{&;&;<<<bhrx{{&;&;<<<bhrz"~~&>&>???bhrz"~~&>&>???bhy&G&G&GHHHbhr|F/C/C&D&DEEEEEr   c                 X   t          t          j        t          d          d          }t	          |j        j        t          j        t          j	        d          d                     t	          |j        j
        t          j        t          j        d          d                     t	          |j        j        t          j        t          j        d          d                     t	          |j        j        t          j        t          j        d          d                     t	          |j        j        t          j        d	d                              t$                               t	          |j        j        t          j        t          j        d
          d                     d S )Nzstruct_scalars_replicated.savFr3   rv   rt   rw   r   rz   r~   r   )r   r   r$   r%   r   scalars_repr   r   repeatr"   r   r<   r   rA   r   rE   r   astyper   r   rI   r5   s     r   test_scalars_replicatedz&TestStructures.test_scalars_replicated   s&   DIi)HII!# # #")BHQKK*C*CDDD")BHQKK*C*CDDD")BJrNNA*F*FGGG")BJrNNA*F*FGGG")GQ*?*?*F*Fv*N*NOOO")BL4H4H!*L*LMMMMMr   c                 T   t          t          j        t          d          d          }t	          |j        j        t          j        t          j	        d          d          
                    ddd                     t	          |j        j        t          j        t          j        d          d          
                    ddd                     t	          |j        j        t          j        t          j        d	          d          
                    ddd                     t	          |j        j        t          j        t          j        d
          d          
                    ddd                     t	          |j        j        t          j        dd          
                    ddd                              t&                               t	          |j        j        t          j        t          j        d          d          
                    ddd                     d S )Nz struct_scalars_replicated_3d.savFr3   rv      rq   rr   rw   r   rz   r~   r   )r   r   r$   r%   r   r   r   r   r   r"   reshaper   r<   r   rA   r   rE   r   r   r   r   rI   r5   s     r   test_scalars_replicated_3dz)TestStructures.test_scalars_replicated_3d   s   DIi)KLL!# # #")BHQKK*D*D*L*LQPQST*U*UVVV")BHQKK*D*D*L*LQPQST*U*UVVV2:b>>266>>q!QGG	I 	I 	I2:b>>266>>q!QGG	I 	I 	I7B//771a@@GGOO	Q 	Q 	Q2<#7#7<<DDQ1MM	O 	O 	O 	O 	Or   c           	      ~   t          t          j        t          d          d          }t	          |j        j        d         t          j        g dt          j	                             t	          |j        j
        d         t          j        g dt          j                             t	          |j        j        d         t          j        t          j        d          t          j        d	          g                     t	          |j        j        d         t          j        g d
t                               d S )Nzstruct_arrays.savFr3   r   ru   rx   ry   r{   r|   r}   )r   r   r$   r%   r   r   r   r   r   r"   r   rA   r   rI   r   r   r5   s     r   test_arrayszTestStructures.test_arrays   s   DIi)<==uMMMqxz!}bhyyy.Q.Q.QRRRqxz!}!x(8(8(8
KKK	M 	M 	Mqxz!}!xd););R\$=O=O(PQQ	S 	S 	Sqxz!}!x(F(F(FfUUU	W 	W 	W 	W 	Wr   c           
         t          t          j        t          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 ]}t#          |j        j        |         t          j        g dt          j                             t#          |j        j        |         t          j        g dt          j                             t#          |j        j        |         t          j        t          j        d	          t          j        d
          g                     t#          |j        j        |         t          j        g dt,                               d S )Nzstruct_arrays_replicated.savFr3   rt   rt   ru   rx   ry   r{   r|   r}   r   r   r$   r%   r   
arrays_repr   r   r   r   object_r   r   r   r   r   ranger   r   r"   rA   rI   r   r'   r*   is      r   test_arrays_replicatedz%TestStructures.test_arrays_replicated   s&   DIi)GHHRWXXX 	$)RZ7888$)RZ7888$)RZ7888$)RZ7888 	Q\^)5111Q\^)5111Q\^)5111Q\^)5111 q 
	; 
	;A"1<>!#4#%8IIIRX#F#F#FH H H"1<>!#4#%8,<,<,<BJ#O#O#OQ Q Q"1<>!#4#%8R\$-?-?-/\$-?-?-A $B $BC C C #1<>!#4#%8,J,J,J28$: $: $:; ; ; ;
	; 
	;r   c                 ~   t          t          j        t          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 ]J}t!          d          D ]6}t!          d          D ]"}t#          |j        j        |||f         t          j        g dt          j        	                     t#          |j        j        |||f         t          j        g d
t          j        	                     t#          |j        j        |||f         t          j        t          j        d          t          j        d          g                     t#          |j        j        |||f         t          j        g dt,          	                     $8Ld S )Nzstruct_arrays_replicated_3d.savFr3   rq   rr   rw   rq   rr   rw   ru   rx   ry   r{   r|   r}   r   )r'   r*   r   jks        r   test_arrays_replicated_3dz(TestStructures.test_arrays_replicated_3d   s   DIi)JKK!# # # 	$)RZ7888$)RZ7888$)RZ7888$)RZ7888 	Q\^)9555Q\^)9555Q\^)9555Q\^)9555 q 	C 	CA1XX C Cq C CA*1<>!Q'+B+-8IIIRX+N+N+NP P P*1<>!Q'+B+-84D4D4D:<*,F ,F ,FG G G +1<>!Q'+B+-8R\$5G5G57\$5G5G5I ,J ,JK K K +1<>!Q'+B+-84R4R4R:@,B ,B ,BC C C CCC	C 	Cr   c                     t          t          j        t          d          d          }t	          |j        j        t          j        dgt          j	                             t	          |j        j
        t          j        dgt          j	                             t	          |j        j        t          j        dgt          j	                             t	          |j        j        t          j        dgt          j	                             d S )Nzstruct_inherit.savFr3   r   rx   rq   )r   r   r$   r%   r   fcxr   r   r"   yrr   r5   s     r   test_inheritancezTestStructures.test_inheritance  s    DIi)=>>NNN1#RX!>!>!>???1#RX!>!>!>???1#RX!>!>!>???1#RX!>!>!>?????r   c                 Z   t                      5 }|                    t          d           t          t	          j        t          d          d          }d d d            n# 1 swxY w Y   t          |j        j	        d         t          j        ddgt          j                             d S )	Nz.Not able to verify number of bytes from headerzstruct_arrays_byte_idl80.savFr3   r   7   B   rx   )r   filterUserWarningr   r   r$   r%   r   r   r   r   r   r&   )r'   supr*   s      r   test_arrays_corrupt_idl80z(TestStructures.test_arrays_corrupt_idl80  s        	'CJJ{$TUUU	),JKK %' ' 'A	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'
 	q28RG28#D#D#DEEEEEs   AA  A$'A$N)r,   r-   r.   r   r   r   r   r   r   r   pytestmarkthread_unsafer   r/   r   r   r   r      s        F F FN N NO O OW W W; ; ;8C C C@@ @ @ [F F F F Fr   r   c                       e Zd Zd ZdS )TestPointersc                 *   t          t          j        t          d          d          }t	          |j        t          j        d                     t	          |j        t          j        d                     t          |j        |j        u            d S )Nzscalar_heap_pointer.savFr3   rU   )
r   r   r$   r%   r   c64_pointer1r   rW   c64_pointer2r   r5   s     r   test_pointerszTestPointers.test_pointers'  s    DIi)BCCUSSSNMJKK	
 	
 	
 	NMJKK	
 	
 	
 	!.011111r   N)r,   r-   r.   r   r/   r   r   r   r   $  s#        
2 
2 
2 
2 
2r   r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestPointerArrayc           	         t          t          j        t          d          d          }t	          |j        j        d           t          t          j	        |j        t          j
        d          k                         t          t          j	        t          |j                  t          |j        d                   k                         d S )Nzarray_float32_pointer_1d.savFr3   r   rz   r   )r   r   r$   r%   r   r   r   r   r   allrA   vect_idr#   r5   s     r   r   zTestPointerArray.test_1d7  s    DIi)GHHRWXXXQY_g...qyBJrNN233444wqy))R	!-=-==>>?????r   c           	         t          t          j        t          d          d          }t	          |j        j        d           t          t          j	        |j        t          j
        d          k                         t          t          j	        t          |j                  t          |j        d                   k                         d S )Nzarray_float32_pointer_2d.savFr3   r   rz   )r   r   )r   r   r$   r%   r   r   r   r   r   r   rA   r   r#   r5   s     r   r   zTestPointerArray.test_2d=  s    DIi)GHHRWXXXQY_h///qyBJrNN233444wqy))R	#-?-??@@AAAAAr   c           	         t          t          j        t          d          d          }t	          |j        j        d           t          t          j	        |j        t          j
        d          k                         t          t          j	        t          |j                  t          |j        d                   k                         d S )Nzarray_float32_pointer_3d.savFr3   r   rz   r   r   r   )r   r   r$   r%   r   r   r   r   r   r   rA   r   r#   r5   s     r   r   zTestPointerArray.test_3dC  s    DIi)GHHRWXXXQY_l333qyBJrNN233444wqy))R	%0@-A-AABBCCCCCr   c           	         t          t          j        t          d          d          }t	          |j        j        d           t          t          j	        |j        t          j
        d          k                         t          t          j	        t          |j                  t          |j        d                   k                         d S )Nzarray_float32_pointer_4d.savFr3   r   rz   )r   r   r   r   )r   r   r$   r%   r   r   r   r   r   r   rA   r   r#   r5   s     r   r   zTestPointerArray.test_4dI  s    DIi)GHHRWXXXQY_l333qyBJrNN233444wqy))R	'0B-C-CCDDEEEEEr   c           	         t          t          j        t          d          d          }t	          |j        j        d           t          t          j	        |j        t          j
        d          k                         t          t          j	        t          |j                  t          |j        d                   k                         d S )Nzarray_float32_pointer_5d.savFr3   rp   rz   )r   r   r   r   r   )r   r   r$   r%   r   r   r   r   r   r   rA   r   r#   r5   s     r   r   zTestPointerArray.test_5dO  s    DIi)GHHRWXXXQY_o666qyBJrNN233444wqy))R	)0D-E-EEFFGGGGGr   c           	         t          t          j        t          d          d          }t	          |j        j        d           t          t          j	        |j        t          j
        d          k                         t          t          j	        t          |j                  t          |j        d                   k                         d S )Nzarray_float32_pointer_6d.savFr3   r   rz   )r   r   r   r   r   r   )r   r   r$   r%   r   r   r   r   r   r   rA   r   r#   r5   s     r   r   zTestPointerArray.test_6dU  s    DIi)GHHRWXXXQY_&8999qyBJrNN233444wqy))R	+0F-G-GGHHIIIIIr   c           	         t          t          j        t          d          d          }t	          |j        j        d           t          t          j	        |j        t          j
        d          k                         t          t          j	        t          |j                  t          |j        d                   k                         d S )Nzarray_float32_pointer_7d.savFr3   r   rz   )r   r   r   r   r   r   r   )r   r   r$   r%   r   r   r   r   r   r   rA   r   r#   r5   s     r   r   zTestPointerArray.test_7d[  s    DIi)GHHRWXXXQY_&;<<<qyBJrNN233444wqy))R	-0H-I-IIJJKKKKKr   c           	         t          t          j        t          d          d          }t	          |j        j        d           t          t          j	        |j        t          j
        d          k                         t          t          j	        t          |j                  t          |j        d                   k                         d S )Nzarray_float32_pointer_8d.savFr3   r   rz   )r   r   r   r   r   r   r   r   )r   r   r$   r%   r   r   r   r   r   r   rA   r   r#   r5   s     r   r   zTestPointerArray.test_8da  s    DIi)GHHRWXXXQY_&>???qyBJrNN233444wqy))R	/0J-K-KKLLMMMMMr   Nr   r/   r   r   r   r   4  s        @ @ @B B BD D DF F FH H HJ J JL L LN N N N Nr   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestPointerStructuresc                    t          t          j        t          d          d          }t	          |j        j        t          j        t          j	        d          t          j
                             t	          |j        j        t          j        t          j	        d          t          j
                             t          t          |j        j        d                   t          |j        j        d                   k               d S )Nzstruct_pointers.savFr3   rz   rx   r   )r   r   r$   r%   r   pointersgr   r   rA   r   hr   r#   r5   s     r   r   z"TestPointerStructures.test_scalarsk  s    DIi)>??OOOrx
2bj'Q'Q'QRRRrx
2bj'Q'Q'QRRR1:<?##r!*,q/':'::;;;;;r   c                 n   t          t          j        t          d          d          }t	          |j        j        t          j        t          j	        d          d          
                    t          j                             t	          |j        j        t          j        t          j	        d          d          
                    t          j                             t          t          j        t          |j        j                  t          |j        j                  k                         d S )Nzstruct_pointers_replicated.savFr3   rz   rt   )r   r   r$   r%   r   pointers_repr   r   r   rA   r   r   r   r   r   r   r5   s     r   test_pointers_replicatedz.TestPointerStructures.test_pointers_replicatedq  s    DIi)IJJ!# # #)2:b>>155<<RZHH	J 	J 	J)2:b>>155<<RZHH	J 	J 	Jwq~/00GAN<L4M4MMNNOOOOOr   c                    t          t          j        t          d          d          }t	          j        t	          j        d          d                              ddd                              t          j	                  }t          |j        j        |           t          |j        j        |           t          t	          j        t!          |j        j                  t!          |j        j                  k                         d S )	Nz!struct_pointers_replicated_3d.savFr3   rz   r   rq   rr   rw   )r   r   r$   r%   r   r   rA   r   r   r   r   r   r   r   r   r   r   )r'   r*   s_expects      r   test_pointers_replicated_3dz1TestPointerStructures.test_pointers_replicated_3dz  s    DIi)LMM!# # #9RZ^^R0088AqAAHHTT)8444)8444wq~/00GAN<L4M4MMNNOOOOOr   c           	      &   t          t          j        t          d          d          }t	          |j        j        d         t          j        t          j	        d          d          
                    t          j                             t	          |j        j        d         t          j        t          j	        d          d          
                    t          j                             t          t          j        t          |j        j        d                   t!          |j        j        d         d                   k                         t          t          j        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.savFr3   r   rz   rw   rr   )r   r   r$   r%   r   r   r   r   r   rA   r   r   r   r   r   r   r#   r5   s     r   r   z!TestPointerStructures.test_arrays  st   DIi)DEEuUUUqxz!}!yB;;BB2:NN	P 	P 	Pqxz!}!yB;;BB2:NN	P 	P 	Pwqxz!}--AHJqM!4D1E1EEFFGGGwqxz!}--AHJqM!4D1E1EEFFGGG18:a=#$$18:a=+;(<(<<=====r   c           
         t          t          j        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 ]}t          |j        j        |         t          j        t          j        d          d                              t          j
                             t          |j        j        |         t          j        t          j        d          d                              t          j
                             t	          t          j        t)          |j        j        |                   t+          |j        j        d	         d	                   k                         t	          t          j        t)          |j        j        |                   t+          |j        j        d	         d	                   k                         d S )
Nz$struct_pointer_arrays_replicated.savFr3   r   rt   rz   rw   rr   r   )r   r   r$   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   r   r   r   r#   r   s      r   r   z,TestPointerStructures.test_arrays_replicated  s   DIi)OPP!# # # 	$)RZ7888$)RZ7888 	Q\^)5111Q\^)5111 q 	T 	TA"1<>!#4#%9RZ^^Q#?#?#F#Frz#R#RT T T"1<>!#4#%9RZ^^Q#?#?#F#Frz#R#RT T TBF71<>!#455ALN1<Ma<P9Q9QQRRSSSBF71<>!#455ALN1<Ma<P9Q9QQRRSSSS	T 	Tr   c                 $   t          j        t          d          }t          |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 ]}t          d          D ]}t          d          D ]}t          |j        j        |||f         t          j        t          j        d          d                              t          j
                             t          |j        j        |||f         t          j        t          j        d          d                              t          j
                             t'          |j        j        |||f                   }t)          |j        j        d	         d
                   }t          j        ||k              sJ t'          |j        j        |||f                   }t)          |j        j        d	         d
                   }	t          j        ||	k              sJ d S )Nz'struct_pointer_arrays_replicated_3d.savFr3   r   rq   rr   rw   rz   r   r   )r   r$   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   r   r   r#   r   )
r'   pthr*   r   r   r   g0g1h0h1s
             r   r   z/TestPointerStructures.test_arrays_replicated_3d  s*   i	#LMMC''' 	$)RZ7888$)RZ7888 	Q\^)9555Q\^)9555 q 	, 	,A1XX , ,q 
, 
,A*1<>!Q'+BIbjnna88??
KKM M M*1<>!Q'+BIbjnna88??
KKM M M 1a!899BALN73A677B6"(+++++ 1a!899BALN73A677B6"(++++++
,,	, 	,r   N)	r,   r-   r.   r   r   r   r   r   r   r/   r   r   r   r   h  sw        < < <P P PP P P> > >T T T*, , , , ,r   r   c                       e Zd ZdZd ZdS )TestTagsz4Test that sav files with description tag read at allc                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_byte_descr.savFr3   r!   r4   r5   s     r   test_descriptionzTestTags.test_description  sA    DIi)@AA5QQQ.....r   N)r,   r-   r.   __doc__r  r/   r   r   r	  r	    s)        >>/ / / / /r   r	  c                      t          t          j        t          d          d          } t	          | j        d            t	          | j        t          j        d                     d S )Nznull_pointer.savFr3   rt   )	r   r   r$   r%   r   pointcheckr   r"   )r*   s    r   test_null_pointerr    sS    	)%788%HHHAQWd###QWbhqkk*****r   c                     t          j        d          5 } t          j        d           t          t	          j        t          d          d          }d d d            n# 1 swxY w Y   t          t          |           dk               t          t          | d         j
                  d	k               t          |d
         t          j        d d g                     d S )NT)recordalwayszinvalid_pointer.savFr3   rv   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   r   )wr*   s     r   test_invalid_pointerr    s    
	 	-	-	- Ph'''DIi)>??OOOP P P P P P P P P P P P P P P CFFaKC! #G H I I IQsVRXtTl3344444s   >A  A$'A$c                  P   t          j        ddi          } | d         dk    sJ | j        dk    sJ t          j        t
                    5  | d          d d d            n# 1 swxY w Y   t          j        t          d          5  | j         d d d            d S # 1 swxY w Y   d S )Nonerv   twozhas no attribute)match)r	   AttrDictr  r   raisesKeyErrorAttributeErrorr  )r   s    r   test_attrdictr#    s$   uaj!!AU8q====5A::::	x	 	   	%              	~-?	@	@	@  	                 s$   	A  A$'A$BB"B)%osr   r  numpyr   numpy.testingr   r   r   r   r   scipy.ior   r	   r$   dirname__file__r%   r   r   	vectorizer#   r   r   r1   rn   r   r   r   r   r   r	  r  r   r   r  r#  r/   r   r   <module>r+     s             7 7 7 7 7 7 7 7 7 7 7 7             DIldl8,,f55	I I I- - - ",r


2 
2 
2 
2 
2 
2 
2 
2>B >B >B >B >B >B >B >BBQ Q Q Q Q[ Q Q Q*!@ !@ !@ !@ !@ !@ !@ !@HxF xF xF xF xF xF xF xFv2 2 2 2 2 2 2 2 1N 1N 1N 1N 1N 1N 1N 1NhR, R, R, R, R, R, R, R,f/ / / / / / / /+ + + 5 5 5"    r   