
    HR-e:)                         d dl Z d dlZd dlZd dlmZ d dlmZmZm	Z	 d dl
mZ d dlm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 Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'dS )     N)assert_array_equal)
converters
exceptionstree)parse_single_table)get_pkg_data_filenamec                      t          j        t          j                  5  t	          j        d ddd          } t          j        |            d d d            d S # 1 swxY w Y   d S )Nbrokencharfoonamedatatype	arraysize)pytestraisesr   E13r   Fieldr   get_converter)fields    Glib/python3.11/site-packages/astropy/io/votable/tests/converter_test.pytest_invalid_arraysizer      s    	z~	&	& ( (
4h5QQQ '''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   -AA Ac                     ddi} t          j        t          j                  5 }t	          j        d dd|           }t          j        ||           }d d d            n# 1 swxY w Y   t          |          dk    sJ t          j        t          j	                  5 }|
                    d           d d d            n# 1 swxY w Y   t          |          dk    sJ d S )	Nverify	exceptioncr   r   r   configr      XXX)r   warnsr   W47r   r   r   r   lenW46parser   wr   r   s       r   test_oversize_charr)      s<   $F	jn	%	% ;
4cF6JJJ$U6:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; q66Q;;;;	jn	%	% 	              q66Q;;;;;;s#   /AA"%A"B>>CCc                      ddi} t          j        d ddd|           }t          j        ||           }|                    dd	          d
k    sJ d S )Nr   r   r   1r   r   r   r   r   r   FooT r   r   r   r   outputr   r   r   s      r   test_char_maskr2   "   s`    $FJt#vfUUUE v666A88E4  B&&&&&&    c                  ,   ddi} t          j        t          j                  5 }t	          j        d ddd|           }t          j        ||           }|                    d           d d d            n# 1 swxY w Y   t          |          d	k    sJ d S )
Nr   r   c2unicodeCharr+   r   r   r   r   r   r!   r    )
r   r"   r   r%   r   r   r   r   r&   r$   r'   s       r   test_oversize_unicoder8   )   s    $F	jn	%	% 
tms6
 
 
 $U6:::	               q66Q;;;;;;   AA44A8;A8c                      ddi} t          j        d ddd|           }t          j        ||           }|                    dd	          d
k    sJ d S )Nr   r   r   r+   r6   r,   r   r-   Tr.   r/   r1   s      r   test_unicode_maskr;   4   si    $FJ3#f  E 	 v666A88E4  B&&&&&&r3   c                     ddi} t          j        d ddd|           }t          j        ||           }|                    d           t          j        t          j        d	
          5  |                    d           d d d            n# 1 swxY w Y   |	                    dd           |	                    dd           d}|
                    d          }t          j        t          j        d
          5  |	                    |d           d d d            n# 1 swxY w Y   t          j        t          j        d
          5  |	                    |d           d d d            d S # 1 swxY w Y   d S )Nr   r   unicode_in_charr   *r7   r   XYZzJFIELD \(unicode_in_char\) has datatype="char" but contains non-ASCII valuematch   złaFs   XYZzutf-8%E24: Attempt to write non-ASCII value)r   r   r   r   r&   r   r"   r   W55r0   encodeE24)r   r   r   valuevalue_bytess        r   test_unicode_as_charrI   =   s.   $FJ$vV  E 	 v666A GGENNN	
 
 
   	
               HHUEHHVUE,,w''K	jn,T	U	U	U  	              	jn,T	U	U	U % %	e$$$% % % % % % % % % % % % % % % % % %s6   )BBB9DD #D E++E/2E/c                  \   ddi} t          j        d ddd|           }t          j        ||           }|                    dd	           t          j        t          j        d
          5  |                    dd	           d d d            n# 1 swxY w Y   t          j        d ddd|           }t          j        ||           }|	                    dd	           t          j        t          j        d
          5  |	                    dd	           d d d            d S # 1 swxY w Y   d S )Nr   r   r=   r   r>   r7   r   abcFrC   r@   rB   3xyz)
r   r   r   r   _binoutput_varr   r   r   rF   _binoutput_fixedr1   s      r   test_unicode_as_char_binaryrP   Z   s   $FJ$vV  E 	 v666AUE"""	z~-U	V	V	V ( (	'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( J$vV  E 	 v666Aue$$$	z~-U	V	V	V * *	65)))* * * * * * * * * * * * * * * * * *s$   *BBB=D!!D%(D%c                     ddi} t          j        d ddd|           }t          j        ||           }t	          j        t          j                  5  |                    d           d d d            d S # 1 swxY w Y   d S )	Nr   r   r   int2x3*r7   r   	2 3 4 5 6	r   r   r   r   r   r   r   E02r&   r1   s      r   test_wrong_number_of_elementsrW   n   s    $FJt#PVWWWE v666A	z~	&	&  	                    A55A9<A9c                  <   ddi} t          j        d dd|           }t          j        ||           }|                    d          |j        dfk    sJ t          j        t                    5  |                    d	           d d d            d S # 1 swxY w Y   d S )
Nr   r   r   floatr   r   r.   Tnull)	r   r   r   r   r&   r[   r   r   
ValueErrorr1   s      r   test_float_maskr]   v   s    $FJt#GGGE v666A772;;164.((((	z	"	"  	                 s   .BBBc                      ddi} t          j        d dd|           }t          j        ||           }|                    d|           |j        dfk    sJ d S )	Nr   ignorer   rZ   r   r   r[   T)r   r   r   r   r&   r[   r1   s      r   test_float_mask_permissiver`      sh    !FJt#GGGE 	 v666A776&7))afd^;;;;;;r3   c                  v   ddd} t          j        d ddd|           }d}t          j        || 	          }|                    d
d          dk    sJ |                    d
ddg          dk    sJ |                    |d          dk    sJ |                    |g d          dk    sJ |                    |g d          dk    sJ |                    |ddg          dk    sJ |                    d| 	          }t          |d         |           t          |d         d           t          j        t          j
                  5  |                    d| 	           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        t          j
                  5  |                    d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          j
                  5  |                    d| 	           d d d            n# 1 swxY w Y   t          j        t          j
                  5  |                    d          }d d d            n# 1 swxY w Y   t          |d         g d           t          |d         d           d S )Nr   T)r   version_1_3_or_laterr   doublerL   r7   )      ?       @      @r   rd   Fr+   1 2 3)FFF)FFTz1 2 NaNz1 2r   r    rT   )         )r   r   r   r   r0   r&   r   r   r   r   rV   AttributeErrorr"   )r   r   datar   as        r   test_double_arrayrn      s   #TBBFJt#CPVWWWED v666A88C3&&&&88C%((C////88D%  G++++88D///00G;;;;88D...//9<<<<88D5%.))U2222	''AqtT"""qtU###	z~	&	& $ $	F###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
~	&	&  Z^(D(D  	                              
z~	&	& , ,	F+++, , , , , , , , , , , , , , , 
jn	%	% ! !GGK  ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! qtYYY'''qtU#####sl   E,,E03E0G(/GG(G	G(G	G((G,/G,H55H9<H9J  JJc                     ddi} t          j        d ddd|           }t          j        ||           }t	          j        t          j                  5  |                    d           d d d            d S # 1 swxY w Y   d S )	Nr   r   r   floatComplexrS   r7   r   rT   rU   r1   s      r   test_complex_array_vararrayrq      s    $FJ36&  E 	 v666A	z~	&	&  	                 rX   c                      ddi} t          j        d ddd|           }t          j        ||           }|                    d          }t          |d	                   d	k    sJ d S )
Nr   r   r   rp   rS   r7   r   r.   r   )r   r   r   r   r&   r$   r   r   r   xs       r   test_complex_array_vararray2ru      sn    $FJ36&  E 	 v666A	Aqt99>>>>>>r3   c                  4   ddi} t          j        d ddd|           }t          j        ||           }|                    d          }t          |          d	k    sJ t          j        |d
         d
         d
         t          dd	          k              sJ d S )Nr   r   r   doubleComplexrS   r7   r   z1 2 3 4 5 6 7 8 9 10 11 12rh   r   r    )	r   r   r   r   r&   r$   npallcomplexrs   s       r   test_complex_array_vararray3r{      s    $FJ3F6  E 	 v666A	,--Aq66Q;;;;6!A$q'!*1-.......r3   c                     ddi} t          j        d ddd|           }t          j        ||           }|                    d          }t          |          d	k    sJ |d
         d
         t          dd	          k    sJ d S )Nr   r   r   rw   r>   r7   r   z1 2 3 4rh   r   r    )r   r   r   r   r&   r$   rz   rs   s       r   test_complex_vararrayr}      s    $FJ3C  E 	 v666A		Aq66Q;;;;Q47gamm######r3   c                     ddi} t          j        d dd|           }t          j        ||           }t	          j        t          j                  5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   rw   r   r   rg   )	r   r   r   r   r   r   r   E03r&   r1   s      r   test_complexr      s    $FJt#OOOE v666A	z~	&	&  	                    A44A8;A8c                     ddi} t          j        d dd|           }t          j        ||           }t	          j        t          j                  5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   bitr   r   T)	r   r   r   r   r   r   r   E04r&   r1   s      r   test_bitr      s    $FJt#fEEEE v666A	z~	&	&  	                 r   c                  ,   ddi} t          j        t          j                  5 }t	          j        d dd|           }t          j        ||           }|                    dd           d d d            n# 1 swxY w Y   t          |          dk    sJ d S )	Nr   r   r   r   r   r   Tr    )
r   r"   r   W39r   r   r   r   r0   r$   r'   s       r   test_bit_maskr      s    $F	jn	%	% 
4cE&III$U6:::	t               q66Q;;;;;;r9   c                     ddi} t          j        d dd|           }t          j        ||           }t	          j        t          j                  5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   booleanr   r   YES)	r   r   r   r   r   r   r   E05r&   r1   s      r   test_booleanr      s    $FJt#	&IIIE v666A	z~	&	&  	                 r   c                      ddi} t          j        d ddd|           }t          j        ||           }|                    d          \  }}t          |g d	           d S )
Nr   r   r   r   r>   r7   r   zTRUE FALSE T F 0 1)TFTFFT)r   r   r   r   r&   r   )r   r   r   rmasks        r   test_boolean_arrayr      so    $FJt#	SQWXXXE v666Agg*++GAtqAAABBBBBr3   c                      ddi} t          j        t          j                  5  t	          j        d dd|           }t          j        ||            d d d            d S # 1 swxY w Y   d S )Nr   r   r   foobarr   r   )r   r   r   E06r   r   r   r   )r   r   s     r   test_invalid_typer      s    $F	z~	&	& 7 7
4cHVLLL v66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   /AA#&A#c                  :   ddi} t          j        d ddd|           }t          j        ||           }|                    dd	          d
k    sJ t          j        d ddd|           }t          j        ||           }|                    dd	          dk    sJ d S )Nr   r   r   rZ   E4)r   r   	precisionr   r   gp@Fz266.2F4z266.2480r/   r1   s      r   test_precisionr     s    $FJt#4PVWWWE v666A88GU##w....Jt#4PVWWWE v666A88GU##z111111r3   c                     ddi} t          j        d dd|           }t          j        ||           }t	          j        t          j                  5  |                    d|            d d d            d S # 1 swxY w Y   d S )Nr   r   r   rR   r   r   z-2208988800)	r   r   r   r   r   r   r   W51r&   r1   s      r   test_integer_overflowr     s    $FJt#fEEEE v666A	z~	&	& . .	f---. . . . . . . . . . . . . . . . . .s   A66A:=A:c                      ddi} t          j        d ddd|           }t          j        ||           }|                    g dg d	          d
k    sJ d S )Nr   r   r   rZ   4r7   r   )r    rh   ri   g    !@)FFFFz1 2 3 8.9990234375r/   r1   s      r   test_float_default_precisionr     s{    $FJt#3vVVVE v666A	(((*F*F*FGG	  	  	  	  	  	 r3   c            	         t          j                    } t          j                    }| j                            |           t          j        |           }|j                            |           g }g d}g d}g dg dg dg}t          t          |                    D ]9}|                    t          j	        | ||         ||         d                     :|j
                            |           |                    t          |                     t          t          |                    D ]!}t          ||                   }||j        |<   "t          j                    }	|                     |	           d S )N)headAheadBheadC)r   rc   rR   )Ard   rh   )Bre   ri   )Crf   rj   r>   r   )r   VOTableFileResource	resourcesappendTabletablesranger$   r   fieldsextendcreate_arraystuplearrayioBytesIOto_xml)
votableresourcetabletabarrheadstypesvalsivaluesbuffs
             r   test_vararrayr   #  sn     G}HX&&&JwEO5!!!F'''E%%%EMM===---8D3u:: 
 
JwU1XaCPPP	
 	
 	
 	
 
L	D		"""3t99    tAwA:<<DNN4r3   c                      t          t          d                    } | J |                                 }|d         d         dk    sJ dS )z:
    see Pull Request 4782 or Issue 4781 for details.
    zdata/gemini.xmlN
access_urlr   zahttp://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/data/pub/GEMINI/S20120515S0064?runid=bx9b1o8cvk1qesrt)r   r   to_table)r   tts     r   test_gemini_v1_2r   =  sf     45FGGHHE			B
<0	0 	0 	0 	0 	0 	0r3   )(r   numpyrx   r   numpy.testingr   astropy.io.votabler   r   r   astropy.io.votable.tabler   astropy.utils.datar   r   r)   r2   r8   r;   rI   rP   rW   r]   r`   rn   rq   ru   r{   r}   r   r   r   r   r   r   r   r   r   r   r    r3   r   <module>r      s   
			      , , , , , , < ; ; ; ; ; ; ; ; ; 7 7 7 7 7 7 4 4 4 4 4 4( ( (	 	 	' ' '  ' ' '% % %:* * *(    < < <$ $ $@    / / /$ $ $        C C C7 7 7	2 	2 	2. . .    4    r3   