
    5[gP                        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                 .   t        | |       t        |t              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   
isinstancestrtypenpasarraydtypeabs     R/var/www/html/bid-api/venv/lib/python3.12/site-packages/scipy/io/tests/test_idl.pyassert_identicalr      sZ    A!S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):;%u6["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_byte2   s0    DIIi):;UK.r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_int16.savFr3   i`)r   r   r$   r%   r   i16sr   r"   r5   s     r   
test_int16zTestScalars.test_int166   s1    DIIi);<eL&!12r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_int32.savFr3   i.i)r   r   r$   r%   r   i32sr   int32r5   s     r   
test_int32zTestScalars.test_int32:   s1    DIIi);<eL+!67r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_float32.savFr3   )r   r   r$   r%   r   f32r   float32r5   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.savFr3   gCmC)r   r   r$   r%   r   f64r   float64r5   s     r   test_float64zTestScalars.test_float64B   s2    DIIi)=>N

+C DEr   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_complex32.savFr3   y  )jB̕h~=r)r   r   r$   r%   r   c32r   	complex64r5   s     r   test_complex32zTestScalars.test_complex32F   s2    DIIi)?@%P-E FGr   c                     t        t        j                  t        d      d      }d}t	        |j
                  t        j                  |             y )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   s5    DIIi)<=uM>biin-r   c                      y Nr/   r'   s    r   test_structurezTestScalars.test_structureO       r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_complex64.savFr3   *3Wo)r   r   r$   r%   r   c64r   
complex128r5   s     r   test_complex64zTestScalars.test_complex64R   s6    DIIi)?@%PEEMMJK	
r   c                      y rP   r/   rQ   s    r   test_heap_pointerzTestScalars.test_heap_pointerY   rS   r   c                      y 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             y )Nzscalar_uint16.savFr3   i  )r   r   r$   r%   r   i16ur   uint16r5   s     r   test_uint16zTestScalars.test_uint16_   s1    DIIi)<=uM5!12r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_uint32.savFr3   l    )r   r   r$   r%   r   i32ur   uint32r5   s     r   test_uint32zTestScalars.test_uint32c   s1    DIIi)<=uM:!67r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_int64.savFr3   l'{ )r   r   r$   r%   r   i64sr   int64r5   s     r   
test_int64zTestScalars.test_int64g   s2    DIIi);<eL*>!?@r   c                     t        t        j                  t        d      d      }t	        |j
                  t        j                  d             y )Nzscalar_uint64.savFr3   l   ( )r   r   r$   r%   r   i64ur   uint64r5   s     r   test_uint64zTestScalars.test_uint64k   s2    DIIi)<=uM+?!@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   /   sQ    /38<FH.

38ABr   r1   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.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   s"   DIIi)ABER.

> :;EEMMJK	
 	QYY__o6A"(((KLA1A(TUA2<<#5r||D7I"JK	MA"@O	Qr   N)r,   r-   r.   r   r/   r   r   rn   rn   p   s    Qr   rn   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.savFr3   {   )r   r   r$   r%   r   array1dr   r5   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.savFr3         )r   r   r$   r%   r   array2dr   r5   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.savFr3      r   r   )r   r   r$   r%   r   array3dr   r5   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.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       y )Nzarray_float32_5d.savFr3   rp   )r   r   r$   r%   r   r   r   r5   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.savFr3   rr   rs   rq   rt   rr   rq   )r   r   r$   r%   r   array6dr   r5   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.savFr3   rw   rv   rw   rr   rq   rr   rw   )r   r   r$   r%   r   array7dr   r5   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.savFr3   rq   rr   rw   rv   rw   rr   rt   rq   )r   r   r$   r%   r   array8dr   r5   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.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    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.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    DIIi)HI!#"))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.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   sm   DIIi)KL!#"))BHHQK*D*L*LQPQST*UV"))BHHQK*D*L*LQPQST*UV2::b>26>>q!QG	I2::b>26>>q!QG	I7B/771a@GGO	Q2<<#7<DDQ1M	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                     y )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    DIIi)<=uMqxxzz!}bhhy.QRqxxzz!}!xx(8

K	Mqxxzz!}!xxd);R\\$=O(PQ	Sqxxzz!}!xx(FfU	Wr   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.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   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.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#   DIIi)JK!# 	$$))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A1Xq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 "  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.savFr3   r   rx   rq   )r   r   r$   r%   r   fcxr   r   r"   yrr   r5   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.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  sm     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      s2    FNOW;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.savFr3   rU   )
r   r   r$   r%   r   c64_pointer1r   rW   c64_pointer2r   r5   s     r   test_pointerszTestPointers.test_pointers&  sk    DIIi)BCUSNNMMJK	
 	NNMMJK	
 	!..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.savFr3   r   rz   r   )r   r   r$   r%   r   r   r   r   r   allrA   vect_idr#   r5   s     r   r   zTestPointerArray.test_1d6  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.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{    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.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_3dB  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.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_4dH  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.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_5dN  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.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_6dT  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.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_7dZ  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.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_8d`  s}    DIIi)GHRWXQYY__&>?qyyBJJrN234wqyy)R		/0J-KKLMr   Nr   r/   r   r   r   r   3  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.savFr3   rz   rx   r   )r   r   r$   r%   r   pointersgr   r   rA   r   hr   r#   r5   s     r   r   z"TestPointerStructures.test_scalarsj  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.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_replicatedp  s    DIIi)IJ!#))2::b>15<<RZZH	J))2::b>15<<RZZH	J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.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_3dy  s    DIIi)LM!#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.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  sE   DIIi)DEuUqxxzz!}!yyB;BB2::N	Pqxxzz!}!yyB;BB2::N	P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.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   DIIi)OP!# 	$$))RZZ78$$))RZZ78 	Q\\^^))51Q\\^^))51 qA"1<<>>!#4#%99RZZ^Q#?#F#Frzz#RT"1<<>>!#4#%99RZZ^Q#?#F#Frzz#RTBFF71<<>>!#45ALLNN1<Ma<P9QQRSBFF71<<>>!#45ALLNN1<Ma<P9QQRS 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'        |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(        rJ    y )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   ii	#LMC' 	$$))RZZ78$$))RZZ78 	Q\\^^))95Q\\^^))95 qA1XqA*1<<>>!Q'+BIIbjjna8??

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

KM 1a!89BALLNN73A67B66"(+++ 1a!89BALLNN73A67B66"(+++ "  r   N)	r,   r-   r.   r   r   r   r   r   r   r/   r   r   r   r   g  s#    <PP>T*,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.savFr3   r!   r4   r5   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.savFr3   rt   )	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.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     
	 	 	-h'DIIi)>?O 
. CFaKC! #G H IQsVRXXtTl34 
.	-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onerv   twozhas no attribute)match)r	   AttrDictr  pytestraisesKeyErrorAttributeErrorr  )r   s    r   test_attrdictr!    s{    uaj!AU8q==55A::	x	 	% 
!	~-?	@	 
A	@ 
!	 	@	@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   r1   rn   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BQ[ Q*!@ !@HwF wFt2 2 1N 1NhR, R,f/ /+5"r   