
    xfL                        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 d Z!d Z"y)    )pathN)assert_equalassert_array_equalassert_suppress_warnings)readsav)_idldatac                 0   t        | |       t        |      t        u rt        t        |       t        |             yt        t        j                  |       j
                  j                  t        j                  |      j
                  j                         y)z*Assert whether value AND type are the sameN)r   typestrnpasarraydtypeabs     9/usr/lib/python3/dist-packages/scipy/io/tests/test_idl.pyassert_identicalr      s[    AAw#~T!Wd1g&RZZ]((--rzz!}/B/B/G/GH    c                     t        | |       t        | j                  j                  |j                  j                         y)z+Assert whether values AND type are the sameN)r   r   r   r   r   s     r   assert_array_identicalr      s&    q!qww||,r   c                       e Zd Zd Zy)	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             y )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~    BHHSM*oDIIi):;;X]^["Q%(q3#/5288C=1r   N)__name__
__module____qualname__r*    r   r   r   r   "   s    2r   r   c                   f    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y)TestScalarsc                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nr   Fr   r    r   r   r#   r$   r   r   r   r%   r&   r)   s     r   	test_bytezTestScalars.test_byte1   s0    DIIi):;UK.r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_int16.savFr2   i`)r   r   r#   r$   r   i16sr   r!   r4   s     r   
test_int16zTestScalars.test_int165   s1    DIIi);<eL&!12r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_int32.savFr2   i.i)r   r   r#   r$   r   i32sr   int32r4   s     r   
test_int32zTestScalars.test_int329   s1    DIIi);<eL+!67r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_float32.savFr2   )r   r   r#   r$   r   f32r   float32r4   s     r   test_float32zTestScalars.test_float32=   s1    DIIi)=>N

> :;r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_float64.savFr2   gCmC)r   r   r#   r$   r   f64r   float64r4   s     r   test_float64zTestScalars.test_float64A   s2    DIIi)=>N

+C DEr   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_complex32.savFr2   y  )jB̕h~=r)r   r   r#   r$   r   c32r   	complex64r4   s     r   test_complex32zTestScalars.test_complex32E   s2    DIIi)?@%P-E FGr   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_string.savFr2   z.The quick brown fox jumps over the lazy python)r   r   r#   r$   r   r)   r   bytes_r4   s     r   
test_byteszTestScalars.test_bytesI   s2    DIIi)<=uMbii(XYZr   c                      y Nr.   r&   s    r   test_structurezTestScalars.test_structureM       r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_complex64.savFr2   *3Wo)r   r   r#   r$   r   c64r   
complex128r4   s     r   test_complex64zTestScalars.test_complex64P   s2    DIIi)?@%P.^ _`r   c                      y rN   r.   rO   s    r   test_heap_pointerzTestScalars.test_heap_pointerT   rQ   r   c                      y rN   r.   rO   s    r   test_object_referencez!TestScalars.test_object_referenceW   rQ   r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_uint16.savFr2   i  )r   r   r#   r$   r   i16ur   uint16r4   s     r   test_uint16zTestScalars.test_uint16Z   s1    DIIi)<=uM5!12r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_uint32.savFr2   l    )r   r   r#   r$   r   i32ur   uint32r4   s     r   test_uint32zTestScalars.test_uint32^   s1    DIIi)<=uM:!67r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_int64.savFr2   l'{ )r   r   r#   r$   r   i64sr   int64r4   s     r   
test_int64zTestScalars.test_int64b   s2    DIIi);<eL*>!?@r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_uint64.savFr2   l   ( )r   r   r#   r$   r   i64ur   uint64r4   s     r   test_uint64zTestScalars.test_uint64f   s2    DIIi)<=uM+?!@Ar   N)r+   r,   r-   r5   r8   r<   rA   rE   rI   rL   rP   rV   rX   rZ   r^   rb   rf   rj   r.   r   r   r0   r0   .   sS    /38<FH[a38ABr   r0   c                       e Zd Zd Zy)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.        
             y )Nzvarious_compressed.savFr2   r    r>   rS         ro         r         rp   r         @g      @g      @g      @      ?       @      @       @s   cheeses   bacon   spam)r   r   r#   r$   r   r   r   r%   r?   r@   rT   rU   r   array5dshapearraysr   arrayr!   r   crH   dobjectr4   s     r   test_compressedzTestCompressed.test_compressedn   s   DIIi)ABER.

> :;.^ _`QYY__o6A"(((KLA1A(TUA",,t2DbllSWFX1Y(Z[A1OW](^_r   N)r+   r,   r-   r   r.   r   r   rl   rl   k   s    
`r   rl   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestArrayDimensionsc                     t        t        j                  t        d      d      }t	        |j
                  j                  d       y )Nzarray_float32_1d.savFr2   {   )r   r   r#   r$   r   array1dr~   r4   s     r   test_1dzTestArrayDimensions.test_1d~   s,    DIIi)?@%PQYY__g.r   c                     t        t        j                  t        d      d      }t	        |j
                  j                  d       y )Nzarray_float32_2d.savFr2         )r   r   r#   r$   r   array2dr~   r4   s     r   test_2dzTestArrayDimensions.test_2d   s,    DIIi)?@%PQYY__h/r   c                     t        t        j                  t        d      d      }t	        |j
                  j                  d       y )Nzarray_float32_3d.savFr2      r   r   )r   r   r#   r$   r   array3dr~   r4   s     r   test_3dzTestArrayDimensions.test_3d   ,    DIIi)?@%PQYY__l3r   c                     t        t        j                  t        d      d      }t	        |j
                  j                  d       y )Nzarray_float32_4d.savFr2   ro   rr         )r   r   r#   r$   r   array4dr~   r4   s     r   test_4dzTestArrayDimensions.test_4d   r   r   c                     t        t        j                  t        d      d      }t	        |j
                  j                  d       y )Nzarray_float32_5d.savFr2   rn   )r   r   r#   r$   r   r}   r~   r4   s     r   test_5dzTestArrayDimensions.test_5d   s,    DIIi)?@%PQYY__o6r   c                     t        t        j                  t        d      d      }t	        |j
                  j                  d       y )Nzarray_float32_6d.savFr2   rp   rq   ro   rr   rp   ro   )r   r   r#   r$   r   array6dr~   r4   s     r   test_6dzTestArrayDimensions.test_6d   s-    DIIi)?@%PQYY__&89r   c                     t        t        j                  t        d      d      }t	        |j
                  j                  d       y )Nzarray_float32_7d.savFr2   ru   rt   ru   rp   ro   rp   ru   )r   r   r#   r$   r   array7dr~   r4   s     r   test_7dzTestArrayDimensions.test_7d   s-    DIIi)?@%PQYY__&;<r   c                     t        t        j                  t        d      d      }t	        |j
                  j                  d       y )Nzarray_float32_8d.savFr2   ro   rp   ru   rt   ru   rp   rr   ro   )r   r   r#   r$   r   array8dr~   r4   s     r   test_8dzTestArrayDimensions.test_8d   s-    DIIi)?@%PQYY__&>?r   Nr+   r,   r-   r   r   r   r   r   r   r   r   r.   r   r   r   r   {   s+    /0447:=@r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
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
                   y )Nzstruct_scalars.savFr2   rt   ru         @rx   r|   rv               @)r   r   r#   r$   r   scalarsr   r   r   r!   r   r;   r   r@   r   rD   er   frH   r4   s     r   test_scalarszTestStructures.test_scalars   s    DIIi)=>Nbhhrxx{&;<bhhrxx{&;<bhhrzz"~&>?bhhrzz"~&>?bhhy&GHbhhr||F/C&DEr   c                    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      j#                  t$                     t	        |j
                  j&                  t        j                  t        j(                  d
      d             y )Nzstruct_scalars_replicated.savFr2   rt   rr   ru   r   rx   r|   r   )r   r   r#   r$   r   scalars_repr   r   repeatr!   r   r;   r   r@   r   rD   r   astyper   r   rH   r4   s     r   test_scalars_replicatedz&TestStructures.test_scalars_replicated   s    DIIi)HISXY"))BHHQK*CD"))BHHQK*CD"))BJJrNA*FG"))BJJrNA*FG"))GQ*?*F*Fv*NO"))BLL4H!*LMr   c                 n   t        t        j                  t        d      d      }t	        |j
                  j                  t        j                  t        j                  d      d      j                  ddd             t	        |j
                  j                  t        j                  t        j                  d      d      j                  ddd             t	        |j
                  j                  t        j                  t        j                  d	      d      j                  ddd             t	        |j
                  j                  t        j                  t        j                   d
      d      j                  ddd             t	        |j
                  j"                  t        j                  dd      j                  ddd      j%                  t&                     t	        |j
                  j(                  t        j                  t        j*                  d      d      j                  ddd             y )Nz struct_scalars_replicated_3d.savFr2   rt      ro   rp   ru   r   rx   r|   r   )r   r   r#   r$   r   r   r   r   r   r!   reshaper   r;   r   r@   r   rD   r   r   r   r   rH   r4   s     r   test_scalars_replicated_3dz)TestStructures.test_scalars_replicated_3d   se   DIIi)KLV[\"))BHHQK*D*L*LQPQST*UV"))BHHQK*D*L*LQPQST*UV"))BJJrNB*G*O*OPQSTVW*XY"))BJJrNB*G*O*OPQSTVW*XY"))GR*@*H*HAq*Q*X*XY_*`a"))BLL4H"*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                     y )Nzstruct_arrays.savFr2   r   rs   rv   rw   ry   rz   r{   )r   r   r#   r$   r   r   r   r   r   r!   r   r@   r   rH   r   r   r4   s     r   test_arrayszTestStructures.test_arrays   s    DIIi)<=uMqxxzz!}bhhy.QRqxxzz!}bhh7Grzz.Z[qxxzz!}bhhT8JBLLY]L^7_.`aqxxzz!}bhh7U]c.der   c           
      2   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,                     2 y )Nzstruct_arrays_replicated.savFr2   rr   rr   rs   rv   rw   ry   rz   r{   r   r   r#   r$   r   
arrays_repr   r   r   r   object_r   r   r   r   r~   ranger   r   r!   r@   rH   r   r&   r)   is      r   test_arrays_replicatedz%TestStructures.test_arrays_replicated   s   DIIi)GHRWX 	$$))RZZ78$$))RZZ78$$))RZZ78$$))RZZ78 	Q\\^^))51Q\\^^))51Q\\^^))51Q\\^^))51 q 
	;A"1<<>>!#4#%88IRXX#FH"1<<>>!#4#%88,<BJJ#OQ"1<<>>!#4#%88R\\$-?-/\\$-?-A $BC #1<<>>!#4#%88,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 ]_  }t!        d      D ]M  }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,        	             > P b y )Nzstruct_arrays_replicated_3d.savFr2   ro   rp   ru   ro   rp   ru   rs   rv   rw   ry   rz   r{   r   )r&   r)   r   jks        r   test_arrays_replicated_3dz(TestStructures.test_arrays_replicated_3d   s6   DIIi)JKUZ[ 	$$))RZZ78$$))RZZ78$$))RZZ78$$))RZZ78 	Q\\^^))95Q\\^^))95Q\\^^))95Q\\^^))95 q 	CA1X Cq CA*1<<>>!Q'+B+-88IRXX+NP*1<<>>!Q'+B+-884D:<**,FG +1<<>>!Q'+B+-88R\\$5G57\\$5G5I ,JK +1<<>>!Q'+B+-884R:@,BCCC	Cr   c                 n   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                               y )Nzstruct_inherit.savFr2   r   rv   ro   )r   r   r#   r$   r   fcxr   r   r!   yrr   r4   s     r   test_inheritancezTestStructures.test_inheritance   s    DIIi)=>N1#RXX!>?1#RXX!>?1#RXX!>?1#RXX!>?r   c                 H   t               5 }|j                  t        d       t        t	        j
                  t        d      d      }d d d        t        j                  j                  d   t        j                  ddgt        j                               y # 1 sw Y   RxY w)	Nz.Not able to verify number of bytes from headerzstruct_arrays_byte_idl80.savFr2   r   7   B   rv   )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  st      	'CJJ{$TU		),JK %'A	'
 	q288RG288#DE	' 	's   <BB!N)r+   r,   r-   r   r   r   r   r   r   r   r   r.   r   r   r   r      s1    FN`f;8C>@Fr   r   c                       e Zd Zd Zy)TestPointersc                 4   t        t        j                  t        d      d      }t	        |j
                  t        j                  d             t	        |j                  t        j                  d             t        |j
                  |j                  u        y )Nzscalar_heap_pointer.savFr2   rS   )
r   r   r#   r$   r   c64_pointer1r   rU   c64_pointer2r   r4   s     r   test_pointerszTestPointers.test_pointers  s_    DIIi)BCUS7g)hi7g)hi!..01r   N)r+   r,   r-   r   r.   r   r   r   r     s    2r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
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(               y )Nzarray_float32_pointer_1d.savFr2   r   rx   r   )r   r   r#   r$   r   r   r~   r   r   allr@   vect_idr"   r4   s     r   r   zTestPointerArray.test_1d  s{    DIIi)GHRWXQYY__g.qyyBJJrN234wqyy)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(               y )Nzarray_float32_pointer_2d.savFr2   r   rx   )r   r   )r   r   r#   r$   r   r   r~   r   r   r   r@   r   r"   r4   s     r   r   zTestPointerArray.test_2d"  s{    DIIi)GHRWXQYY__h/qyyBJJrN234wqyy)R		#-??@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(               y )Nzarray_float32_pointer_3d.savFr2   r   rx   r   r   r   )r   r   r#   r$   r   r   r~   r   r   r   r@   r   r"   r4   s     r   r   zTestPointerArray.test_3d(  s|    DIIi)GHRWXQYY__l3qyyBJJrN234wqyy)R		%0@-AAB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(               y )Nzarray_float32_pointer_4d.savFr2   r   rx   )r   r   r   r   )r   r   r#   r$   r   r   r~   r   r   r   r@   r   r"   r4   s     r   r   zTestPointerArray.test_4d.  s|    DIIi)GHRWXQYY__l3qyyBJJrN234wqyy)R		'0B-CCD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(               y )Nzarray_float32_pointer_5d.savFr2   rn   rx   )r   r   r   r   r   )r   r   r#   r$   r   r}   r~   r   r   r   r@   r   r"   r4   s     r   r   zTestPointerArray.test_5d4  s|    DIIi)GHRWXQYY__o6qyyBJJrN234wqyy)R		)0D-EEF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(               y )Nzarray_float32_pointer_6d.savFr2   r   rx   )r   r   r   r   r   r   )r   r   r#   r$   r   r   r~   r   r   r   r@   r   r"   r4   s     r   r   zTestPointerArray.test_6d:  s}    DIIi)GHRWXQYY__&89qyyBJJrN234wqyy)R		+0F-GGH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(               y )Nzarray_float32_pointer_7d.savFr2   r   rx   )r   r   r   r   r   r   r   )r   r   r#   r$   r   r   r~   r   r   r   r@   r   r"   r4   s     r   r   zTestPointerArray.test_7d@  s}    DIIi)GHRWXQYY__&;<qyyBJJrN234wqyy)R		-0H-IIJ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(               y )Nzarray_float32_pointer_8d.savFr2   r   rx   )r   r   r   r   r   r   r   r   )r   r   r#   r$   r   r   r~   r   r   r   r@   r   r"   r4   s     r   r   zTestPointerArray.test_8dF  s}    DIIi)GHRWXQYY__&>?qyyBJJrN234wqyy)R		/0J-KKLMr   Nr   r.   r   r   r   r     s2    @BDFHJLNr   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestPointerStructuresc                 B   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(         y )Nzstruct_pointers.savFr2   rx   rv   r   )r   r   r#   r$   r   pointersgr   r   r@   r   hr   r"   r4   s     r   r   z"TestPointerStructures.test_scalarsP  s    DIIi)>?Orxx

2bjj'QRrxx

2bjj'QR1::<<?#r!**,,q/'::;r   c                    t        t        j                  t        d      d      }t	        |j
                  j                  t        j                  t        j                  d      d      j                  t        j                               t	        |j
                  j                  t        j                  t        j                  d      d      j                  t        j                               t        t        j                  t        |j
                  j                        t        |j
                  j                        k(               y )Nzstruct_pointers_replicated.savFr2   rx   rr   )r   r   r#   r$   r   pointers_repr   r   r   r@   r   r   r   r   r   r   r4   s     r   test_pointers_replicatedz.TestPointerStructures.test_pointers_replicatedV  s    DIIi)IJTYZ))299RZZ^Q+G+N+Nrzz+Z[))299RZZ^Q+G+N+Nrzz+Z[wq~~//0GANN<L<L4MMNOr   c                 2   t        t        j                  t        d      d      }t	        j
                  t	        j                  d      d      j                  ddd      j                  t        j                        }t        |j                  j                  |       t        |j                  j                  |       t        t	        j                  t!        |j                  j                        t!        |j                  j                        k(               y )	Nz!struct_pointers_replicated_3d.savFr2   rx   r   ro   rp   ru   )r   r   r#   r$   r   r   r@   r   r   r   r   r   r   r   r   r   r   )r&   r)   s_expects      r   test_pointers_replicated_3dz1TestPointerStructures.test_pointers_replicated_3d\  s    DIIi)LMW\]99RZZ^R088AqAHHT))84))84wq~~//0GANN<L<L4MMNOr   c           	      "   t        t        j                  t        d      d      }t	        |j
                  j                  d   t        j                  t        j                  d      d      j                  t        j                               t	        |j
                  j                  d   t        j                  t        j                  d      d      j                  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(         y )Nzstruct_pointer_arrays.savFr2   r   rx   ru   rp   )r   r   r#   r$   r   r   r   r   r   r@   r   r   r   r   r   r   r"   r4   s     r   r   z!TestPointerStructures.test_arraysc  sC   DIIi)DEuUqxxzz!}bii

2.J.Q.QRTR\R\.]^qxxzz!}bii

2.J.Q.QRTR\R\.]^wqxxzz!}-AHHJJqM!4D1EEFGwqxxzz!}-AHHJJqM!4D1EEFG188::a=#$188::a=+;(<<=r   c           
      R   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      j%                  t        j                               t        |j
                  j                  |   t        j                   t        j"                  d      d      j%                  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(                y )
Nz$struct_pointer_arrays_replicated.savFr2   r   rr   rx   ru   rp   r   )r   r   r#   r$   r   r   r   r   r   r   r   r   r   r~   r   r   r   r@   r   r   r   r"   r   s      r   r   z,TestPointerStructures.test_arrays_replicatedk  s   DIIi)OPZ_` 	$$))RZZ78$$))RZZ78 	Q\\^^))51Q\\^^))51 q 	TA"1<<>>!#4bii

2PQ6R6Y6YZ\ZdZd6ef"1<<>>!#4bii

2PQ6R6Y6YZ\ZdZd6efBFF71<<>>!#45ALLNN1<Ma<P9QQRSBFF71<<>>!#45ALLNN1<Ma<P9QQRS		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      j%                  t        j                               t        |j
                  j                  |||f   t        j                   t        j"                  d      d      j%                  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(                  y )Nz'struct_pointer_arrays_replicated_3d.savFr2   r   ro   rp   ru   rx   r   r   )r   r#   r$   r   r   r   r   r   r   r   r   r   r   r~   r   r   r   r@   r   r   r   r"   )r&   pthr)   r   r   r   s         r   r   z/TestPointerStructures.test_arrays_replicated_3d}  s   ii	#LMC' 	$$))RZZ78$$))RZZ78 	Q\\^^))95Q\\^^))95 q 	hA1X hq hA*1<<>>!Q'+BIIbjjna8??

KM*1<<>>!Q'+BIIbjjna8??

KMBFF71<<>>!Q'+B#Cr!,,..Y`JabcJdGe#efgBFF71<<>>!Q'+B#Cr!,,..Y`JabcJdGe#efghh	hr   N)	r+   r,   r-   r   r   r   r   r   r   r.   r   r   r   r   M  s$    <PP>T$hr   r   c                       e Zd ZdZd Zy)TestTagsz4Test that sav files with description tag read at allc                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_byte_descr.savFr2   r    r3   r4   s     r   test_descriptionzTestTags.test_description  s0    DIIi)@A5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             y )Nznull_pointer.savFr2   rr   )	r   r   r#   r$   r   pointcheckr   r!   )r)   s    r   test_null_pointerr    s>    		)%78%HAQWWd#QWWbhhqk*r   c                     t        j                  d      5 } t        j                  d       t        t	        j
                  t        d      d      }d d d        t        t               dk(         t        t        | d   j                        d	k(         t        d
   t        j                  d d g             y # 1 sw Y   ixY w)NT)recordalwayszinvalid_pointer.savFr2   rt   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'DIIi)>?OP CFaKC! #G H IQsVRXXtTl34P Ps   ;B::Cc                  F   t        j                  ddi      } | d   dk(  sJ | j                  dk(  sJ t        j                  t
              5  | d    d d d        t        j                  t        d      5  | j                   d d d        y # 1 sw Y   :xY w# 1 sw Y   y xY w)Nonert   twozhas no attribute)match)r	   AttrDictr  pytestraisesKeyErrorAttributeErrorr  )r   s    r   test_attrdictr    s    uaj!AU8q==55A::	x	  	%	~-?	@ 	   s   B5BBB )#osr   r  numpyr   numpy.testingr   r   r   r   r  scipy.ior   r	   r#   dirname__file__r$   r   r   	vectorizer"   r   r   r0   rl   r   r   r   r   r   r   r  r  r  r.   r   r   <module>r#     s      7 7   DIIldll8,f5	I- ",,r
	2 	2:B :Bz`[ ` !@ !@HmF mF`2 21N 1NhEh EhL/ /+5"r   