
     hM                        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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!d Z"d Z#dS )    )pathN)assert_equalassert_array_equalassert_suppress_warnings)readsav)_idldatac                      t          j        t          |           t                    }t	          t          |                     D ]}| |         ||<   |S )z#Constructs a numpy array of objectsdtype)npemptylenobjectrange)argsarrayis      S/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/io/tests/test_idl.pyobject_arrayr      sM    HSYYf---E3t99  7aL    c                 :   t          | |           t          |          t          u 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   typestrr   asarrayr   abs     r   assert_identicalr       su    AAww#~~T!WWd1gg&&&&&RZ]](-rz!}}/B/GHHHHHr   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):;;;X]^^^["Q%%(((q3#///528C==11111r   N)__name__
__module____qualname__r4    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/   r0   r3   s     r   	test_bytezTestScalars.test_byte9   sA    DIi):;;UKKK.....r   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_int16.savFr<   i`)r   r   r-   r.   r    i16sr   r+   r>   s     r   
test_int16zTestScalars.test_int16=   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.savFr<   i.i)r   r   r-   r.   r    i32sr   int32r>   s     r   
test_int32zTestScalars.test_int32A   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.savFr<   )r   r   r-   r.   r    f32r   float32r>   s     r   test_float32zTestScalars.test_float32E   sC    DIi)=>>NNN
> : :;;;;;r   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_float64.savFr<   gCmC)r   r   r-   r.   r    f64r   float64r>   s     r   test_float64zTestScalars.test_float64I   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.savFr<   y  )jB̕h~=r)r   r   r-   r.   r    c32r   	complex64r>   s     r   test_complex32zTestScalars.test_complex32M   sD    DIi)?@@%PPP-E F FGGGGGr   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_string.savFr<   z.The quick brown fox jumps over the lazy python)r   r   r-   r.   r    r3   r   bytes_r>   s     r   
test_byteszTestScalars.test_bytesQ   sD    DIi)<==uMMMbi(XYYZZZZZr   c                     d S Nr8   r0   s    r   test_structurezTestScalars.test_structureU       r   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_complex64.savFr<   *3Wo)r   r   r-   r.   r    c64r   
complex128r>   s     r   test_complex64zTestScalars.test_complex64X   sD    DIi)?@@%PPP.^ _ _`````r   c                     d S rX   r8   rY   s    r   test_heap_pointerzTestScalars.test_heap_pointer\   r[   r   c                     d S rX   r8   rY   s    r   test_object_referencez!TestScalars.test_object_reference_   r[   r   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_uint16.savFr<   i  )r   r   r-   r.   r    i16ur   uint16r>   s     r   test_uint16zTestScalars.test_uint16b   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.savFr<   l    )r   r   r-   r.   r    i32ur   uint32r>   s     r   test_uint32zTestScalars.test_uint32f   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.savFr<   l'{ )r   r   r-   r.   r    i64sr   int64r>   s     r   
test_int64zTestScalars.test_int64j   sD    DIi);<<eLLL*>!?!?@@@@@r   c                     t          t          j        t          d          d          }t	          |j        t          j        d                     d S )Nzscalar_uint64.savFr<   l   ( )r   r   r-   r.   r    i64ur   uint64r>   s     r   test_uint64zTestScalars.test_uint64n   sD    DIi)<==uMMM+?!@!@AAAAAr   N)r5   r6   r7   r?   rB   rF   rK   rO   rS   rV   rZ   r`   rb   rd   rh   rl   rp   rt   r8   r   r   r:   r:   6   s	       / / /3 3 38 8 8< < <F F FH H H[ [ [  a a a    3 3 38 8 8A A AB B B B Br   r:   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.savFr<   r*   rH   r]         ry         r         rz   r         @g      @g      @g      @      ?       @      @       @s   cheeses   bacon   spam)r   r   r-   r.   r    r)   r   r/   rI   rJ   r^   r_   r   array5dshapearraysr   r   r+   r   crR   dr   r>   s     r   test_compressedzTestCompressed.test_compressedv   sV   DIi)ABBERRR...
> : :;;;.^ _ _```QY_o666A"((K(K(KLLLA1A1A1A(T(T(TUUUA",t2D2DblSWFXFX1Y(Z(Z[[[A1O1O1OW](^(^(^_____r   N)r5   r6   r7   r   r8   r   r   rv   rv   s   s(        
` 
` 
` 
` 
`r   rv   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.savFr<   {   )r   r   r-   r.   r   array1dr   r>   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.savFr<         )r   r   r-   r.   r   array2dr   r>   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.savFr<      r   r   )r   r   r-   r.   r   array3dr   r>   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.savFr<   ry   r|         )r   r   r-   r.   r   array4dr   r>   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.savFr<   rx   )r   r   r-   r.   r   r   r   r>   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.savFr<   rz   r{   ry   r|   rz   ry   )r   r   r-   r.   r   array6dr   r>   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.savFr<   r   r~   r   rz   ry   rz   r   )r   r   r-   r.   r   array7dr   r>   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.savFr<   ry   rz   r   r~   r   rz   r|   ry   )r   r   r-   r.   r   array8dr   r>   s     r   test_8dzTestArrayDimensions.test_8d   s<    DIi)?@@%PPPQY_&>?????r   Nr5   r6   r7   r   r   r   r   r   r   r   r   r8   r   r   r   r      s        / / /0 0 04 4 44 4 47 7 7: : := = =@ @ @ @ @r   r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	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.savFr<   r~   r         @r   r   r               @)r   r   r-   r.   r    scalarsr   r   r   r+   r   rE   r   rJ   r   rN   er   frR   r>   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.savFr<   r~   r|   r   r   r   r   r   )r   r   r-   r.   r    scalars_repr   r   repeatr+   r   rE   r   rJ   r   rN   r   astyper   r   rR   r>   s     r   test_scalars_replicatedz&TestStructures.test_scalars_replicated   s    DIi)HIISXYYY")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.savFr<   r~      ry   rz   r   r   r   r   r   )r   r   r-   r.   r    r   r   r   r   r+   reshaper   rE   r   rJ   r   rN   r   r   r   r   rR   r>   s     r   test_scalars_replicated_3dz)TestStructures.test_scalars_replicated_3d   s   DIi)KLLV[\\\")BHQKK*D*D*L*LQPQST*U*UVVV")BHQKK*D*D*L*LQPQST*U*UVVV")BJrNNB*G*G*O*OPQSTVW*X*XYYY")BJrNNB*G*G*O*OPQSTVW*X*XYYY")GR*@*@*H*HAq*Q*Q*X*XY_*`*`aaa")BL4H4H"*M*M*U*UVWYZ\]*^*^_____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.savFr<   r   r}   r   r   r   r   r   )r   r   r-   r.   r"   r   r   r   r   r+   r   rJ   r   rR   r   r   r>   s     r   test_arrayszTestStructures.test_arrays   s    DIi)<==uMMMqxz!}bhyyy.Q.Q.QRRRqxz!}bh7G7G7Grz.Z.Z.Z[[[qxz!}bhT8J8JBLY]L^L^7_.`.`aaaqxz!}bh7U7U7U]c.d.d.deeeeer   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.savFr<   r|   r|   r}   r   r   r   r   r   r   r   r-   r.   r   
arrays_repr   r   r   r   object_r   r   r   r   r   r   r"   r   r+   rJ   rR   r   r0   r3   r   s      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.savFr<   ry   rz   r   ry   rz   r   r}   r   r   r   r   r   r   )r0   r3   r   jks        r   test_arrays_replicated_3dz(TestStructures.test_arrays_replicated_3d   s   DIi)JKKUZ[[[ 	$)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.savFr<   r   r   ry   )r   r   r-   r.   r    fcxr   r   r+   yrr   r>   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.savFr<   r   7   B   r   )r   filterUserWarningr   r   r-   r.   r    r   r   r   r   r/   )r0   supr3   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)r5   r6   r7   r   r   r   r   r   r   r   r   r8   r   r   r   r      s        F F FN N N` ` `f f f; ; ;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.savFr<   r]   )
r   r   r-   r.   r    c64_pointer1r   r_   c64_pointer2r   r>   s     r   test_pointerszTestPointers.test_pointers  sx    DIi)BCCUSSS7g)h)hiii7g)h)hiii!.011111r   N)r5   r6   r7   r   r8   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.savFr<   r   r   r   )r   r   r-   r.   r   r   r   r   r   allrJ   vect_idr,   r>   s     r   r   zTestPointerArray.test_1d$  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.savFr<   r   r   )r   r   )r   r   r-   r.   r   r   r   r   r   r   rJ   r   r,   r>   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.savFr<   r   r   r   r   r   )r   r   r-   r.   r   r   r   r   r   r   rJ   r   r,   r>   s     r   r   zTestPointerArray.test_3d0  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.savFr<   r   r   )r   r   r   r   )r   r   r-   r.   r   r   r   r   r   r   rJ   r   r,   r>   s     r   r   zTestPointerArray.test_4d6  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.savFr<   rx   r   )r   r   r   r   r   )r   r   r-   r.   r   r   r   r   r   r   rJ   r   r,   r>   s     r   r   zTestPointerArray.test_5d<  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.savFr<   r   r   )r   r   r   r   r   r   )r   r   r-   r.   r   r   r   r   r   r   rJ   r   r,   r>   s     r   r   zTestPointerArray.test_6dB  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.savFr<   r   r   )r   r   r   r   r   r   r   )r   r   r-   r.   r   r   r   r   r   r   rJ   r   r,   r>   s     r   r   zTestPointerArray.test_7dH  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.savFr<   r   r   )r   r   r   r   r   r   r   r   )r   r   r-   r.   r   r   r   r   r   r   rJ   r   r,   r>   s     r   r   zTestPointerArray.test_8dN  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   r8   r   r   r   r   !  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.savFr<   r   r   r   )r   r   r-   r.   r    pointersgr   r   rJ   r   hr   r,   r>   s     r   r   z"TestPointerStructures.test_scalarsX  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.savFr<   r   r|   )r   r   r-   r.   r    pointers_repr   r   r   rJ   r   r   r   r   r   r   r>   s     r   test_pointers_replicatedz.TestPointerStructures.test_pointers_replicated^  s    DIi)IJJTYZZZ)29RZ^^Q+G+G+N+Nrz+Z+Z[[[)29RZ^^Q+G+G+N+Nrz+Z+Z[[[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.savFr<   r   r   ry   rz   r   )r   r   r-   r.   r   r   rJ   r   r   r   r    r   r   r   r   r   r   )r0   r3   s_expects      r   test_pointers_replicated_3dz1TestPointerStructures.test_pointers_replicated_3dd  s    DIi)LMMW\]]]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.savFr<   r   r   r   rz   )r   r   r-   r.   r"   r   r   r   r   rJ   r   r   r   r   r   r   r,   r>   s     r   r   z!TestPointerStructures.test_arraysk  sd   DIi)DEEuUUUqxz!}bi
2.J.J.Q.QRTR\.].]^^^qxz!}bi
2.J.J.Q.QRTR\.].]^^^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.savFr<   r   r|   r   r   rz   r   )r   r   r-   r.   r   r   r   r   r   r   r   r   r   r   r   r"   r   rJ   r   r   r   r,   r   s      r   r   z,TestPointerStructures.test_arrays_replicateds  s   DIi)OPPZ_``` 	$)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<>!#4bi
2PQ6R6R6Y6YZ\Zd6e6efff"1<>!#4bi
2PQ6R6R6Y6YZ\Zd6e6efff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	          t          j        t)          |j        j        |||f                   t+          |j        j        d	         d
                   k                         t	          t          j        t)          |j        j        |||f                   t+          |j        j        d	         d
                   k                         d S )Nz'struct_pointer_arrays_replicated_3d.savFr<   r   ry   rz   r   r   r   r   )r   r-   r.   r   r   r   r   r   r   r   r   r   r   r   r   r"   r   rJ   r   r   r   r,   )r0   pthr3   r   r   r   s         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 	h 	hA1XX h hq h h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BF71<>!Q'+B#C#Cr!,.Y`JabcJdGeGe#effgggBF71<>!Q'+B#C#Cr!,.Y`JabcJdGeGe#effgggghh	h 	hr   N)	r5   r6   r7   r   r   r   r   r   r   r8   r   r   r   r   U  s|        < < <P P PP P P> > >T T T$h h h h h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.savFr<   r*   r=   r>   s     r   test_descriptionzTestTags.test_description  sA    DIi)@AA5QQQ.....r   N)r5   r6   r7   __doc__r  r8   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.savFr<   r|   )	r   r   r-   r.   r    pointcheckr   r+   )r3   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.savFr<   r~   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   )wr3   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oner~   twozhas no attribute)match)r	   AttrDictr  pytest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    r"   	vectorizer,   r   r$   r:   rv   r   r   r   r   r   r  r  r  r  r8   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z` ` ` ` `[ ` ` ` !@ !@ !@ !@ !@ !@ !@ !@HmF mF mF mF mF mF mF mF`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Eh Eh Eh Eh Eh Eh Eh EhL/ / / / / / / /+ + +5 5 5"    r   