U
    e»{j9)  ã                   @   s$  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d„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Z d,d-„ Z!d.d/„ Z"d0d1„ Z#d2d3„ Z$d4d5„ Z%d6d7„ Z&d8d9„ Z'dS ):é    N)Úassert_array_equal)Ú
convertersÚ
exceptionsÚtree)Úparse_single_table)Úget_pkg_data_filenamec               	   C   s8   t  tj¡�" tjd dddd�} t | ¡ W 5 Q R X d S )NÚbrokenÚcharZfoo©ÚnameÚdatatypeÚ	arraysize)ÚpytestÚraisesr   ZE13r   ÚFieldr   Úget_converter)Úfield© r   úf/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/io/votable/tests/converter_test.pyÚtest_invalid_arraysize   s    r   c               	   C   s†   ddi} t  tj¡�&}tjd dd| d�}tj|| d�}W 5 Q R X t|ƒdksPt	‚t  tj
¡�}| d¡ W 5 Q R X t|ƒdks‚t	‚d S )	NÚverifyÚ	exceptionÚcr	   ©r   r   Úconfig©r   é   ÚXXX)r   Úwarnsr   ZW47r   r   r   r   ÚlenÚAssertionErrorÚW46Úparse©r   Úwr   r   r   r   r   Útest_oversize_char   s    r%   c                  C   sB   ddi} t jd ddd| d�}tj|| d�}| dd	¡d
ks>t‚d S )Nr   r   r   Ú1r	   ©r   r   r   r   r   ÚFooTÚ ©r   r   r   r   Úoutputr    ©r   r   r   r   r   r   Útest_char_mask"   s    r-   c               	   C   s`   ddi} t  tj¡�2}tjd ddd| d�}tj|| d�}| d¡ W 5 Q R X t	|ƒd	ks\t
‚d S )
Nr   r   Úc2ÚunicodeCharr&   ©r   r   r   r   r   r   r   )r   r   r   r!   r   r   r   r   r"   r   r    r#   r   r   r   Útest_oversize_unicode)   s        ÿr1   c                  C   sB   ddi} t jd ddd| d�}tj|| d�}| dd	¡d
ks>t‚d S )Nr   r   r   r&   r/   r'   r   r(   Tr)   r*   r,   r   r   r   Útest_unicode_mask4   s        ÿr2   c               	   C   sÔ   ddi} t jd ddd| d�}tj|| d�}| d¡ tjtjd	d
�� | d¡ W 5 Q R X | 	dd¡ | 	dd¡ d}| 
d¡}tjtjdd
�� | 	|d¡ W 5 Q R X tjtjdd
�� | 	|d¡ W 5 Q R X d S )Nr   r   Úunicode_in_charr	   Ú*r0   r   Z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   ZW55r+   ÚencodeÚE24)r   r   r   ÚvalueZvalue_bytesr   r   r   Útest_unicode_as_char=   s.        ÿ
ý
r<   c               	   C   s¸   ddi} t jd ddd| d�}tj|| d�}| dd	¡ tjtjd
d�� | dd	¡ W 5 Q R X t jd ddd| d�}tj|| d�}| 	dd	¡ tjtjd
d�� | 	dd	¡ W 5 Q R X d S )Nr   r   r3   r	   r4   r0   r   ÚabcFr8   r5   r7   Ú3Zxyz)
r   r   r   r   Z_binoutput_varr   r   r   r:   Z_binoutput_fixedr,   r   r   r   Útest_unicode_as_char_binaryZ   s.        ÿ    ÿr?   c               	   C   sP   ddi} t jd ddd| d�}tj|| d�}t tj¡� | d¡ W 5 Q R X d S )	Nr   r   r   Úintú2x3*r0   r   ú	2 3 4 5 6©	r   r   r   r   r   r   r   ÚE02r"   r,   r   r   r   Útest_wrong_number_of_elementsn   s
    rE   c               	   C   sd   ddi} t jd dd| d�}tj|| d�}| d¡|jdfks@t‚t t	¡� | d	¡ W 5 Q R X d S )
Nr   r   r   Úfloatr   r   r)   TÚnull)
r   r   r   r   r"   rG   r    r   r   Ú
ValueErrorr,   r   r   r   Útest_float_maskv   s    rI   c                  C   sH   ddi} t jd dd| d�}tj|| d�}|jd| d�|jdfksDt‚d S )	Nr   Úignorer   rF   r   r   rG   T)r   r   r   r   r"   rG   r    r,   r   r   r   Útest_float_mask_permissive   s    rK   c               
   C   s²  dddœ} t jd ddd| d�}d}tj|| d	�}| d
d¡dksDt‚| d
ddg¡dks\t‚| |d¡dkspt‚| |dddg¡dksŠt‚| |dddg¡dks¤t‚| |ddg¡dks¼t‚|jd| d	�}t|d |ƒ t|d dƒ t 	t
j¡� |jd| d	� W 5 Q R X t 	t¡�( t t
j¡� | d¡ W 5 Q R X W 5 Q R X t 	t
j¡� |jd| d	� W 5 Q R X t t
j¡� | d¡}W 5 Q R X t|d dddgƒ t|d dƒ d S )Nr   T)r   Zversion_1_3_or_laterr   Údoubler>   r0   )ç      ð?ç       @ç      @r   rM   Fr&   ú1 2 3z1 2 NaNz1 2r   r   rB   é   é   é   )r   r   r   r   r+   r    r"   r   r   r   r   rD   ÚAttributeErrorr   )r   r   Údatar   Úar   r   r   Útest_double_array‰   s.    
rW   c               	   C   sP   ddi} t jd ddd| d�}tj|| d�}t tj¡� | d¡ W 5 Q R X d S )	Nr   r   r   ÚfloatComplexrA   r0   r   rB   rC   r,   r   r   r   Útest_complex_array_vararray©   s        ÿrY   c                  C   sL   ddi} t jd ddd| d�}tj|| d�}| d¡}t|d	 ƒd	ksHt‚d S )
Nr   r   r   rX   rA   r0   r   r)   r   )r   r   r   r   r"   r   r    ©r   r   r   Úxr   r   r   Útest_complex_array_vararray2³   s        ÿ
r\   c                  C   sl   ddi} t jd ddd| d�}tj|| d�}| d¡}t|ƒd	ksDt‚t |d
 d
 d
 t	dd	ƒk¡sht‚d S )Nr   r   r   ÚdoubleComplexrA   r0   r   z1 2 3 4 5 6 7 8 9 10 11 12rQ   r   r   )
r   r   r   r   r"   r   r    ÚnpÚallÚcomplexrZ   r   r   r   Útest_complex_array_vararray3½   s        ÿ
ra   c                  C   sb   ddi} t jd ddd| d�}tj|| d�}| d¡}t|ƒd	ksDt‚|d
 d
 tdd	ƒks^t‚d S )Nr   r   r   r]   r4   r0   r   z1 2 3 4rQ   r   r   )r   r   r   r   r"   r   r    r`   rZ   r   r   r   Útest_complex_vararrayÈ   s        ÿ
rb   c               	   C   sN   ddi} t jd dd| d�}tj|| d�}t tj¡� | d¡ W 5 Q R X d S )Nr   r   r   r]   r   r   rP   )	r   r   r   r   r   r   r   ZE03r"   r,   r   r   r   Útest_complexÓ   s
    rc   c               	   C   sN   ddi} t jd dd| d�}tj|| d�}t tj¡� | d¡ W 5 Q R X d S )Nr   r   r   Úbitr   r   ÚT)	r   r   r   r   r   r   r   ZE04r"   r,   r   r   r   Útest_bitÛ   s
    rf   c               	   C   s`   ddi} t  tj¡�2}tjd dd| d�}tj|| d�}| dd¡ W 5 Q R X t	|ƒdks\t
‚d S )	Nr   r   r   rd   r   r   Tr   )r   r   r   ZW39r   r   r   r   r+   r   r    r#   r   r   r   Útest_bit_maskã   s    rg   c               	   C   sN   ddi} t jd dd| d�}tj|| d�}t tj¡� | d¡ W 5 Q R X d S )Nr   r   r   Úbooleanr   r   ZYES)	r   r   r   r   r   r   r   ZE05r"   r,   r   r   r   Útest_booleanì   s
    ri   c                  C   sR   ddi} t jd ddd| d�}tj|| d�}| d¡\}}t|d	d
d	d
d
d	gƒ d S )Nr   r   r   rh   r4   r0   r   zTRUE FALSE T F 0 1TF)r   r   r   r   r"   r   )r   r   r   ÚrÚmaskr   r   r   Útest_boolean_arrayô   s
    rl   c               	   C   sD   ddi} t  tj¡�& tjd dd| d�}tj|| d� W 5 Q R X d S )Nr   r   r   Zfoobarr   r   )r   r   r   ZE06r   r   r   r   )r   r   r   r   r   Útest_invalid_typeü   s    rm   c                  C   sx   ddi} t jd ddd| d�}tj|| d�}| dd	¡d
ks>t‚t jd ddd| d�}tj|| d�}| dd	¡dkstt‚d S )Nr   r   r   rF   ZE4)r   r   Ú	precisionr   r   g‡ÙÎ÷£p@Fz266.2ZF4z266.2480r*   r,   r   r   r   Útest_precision  s    ro   c               	   C   sR   ddi} t jd dd| d�}tj|| d�}t tj¡� |jd| d� W 5 Q R X d S )Nr   r   r   r@   r   r   z-2208988800)	r   r   r   r   r   r   r   ZW51r"   r,   r   r   r   Útest_integer_overflow  s
    rp   c                  C   sR   ddi} t jd ddd| d�}tj|| d�}| dd	d
dgddddg¡dksNt‚d S )Nr   r   r   rF   Ú4r0   r   r   rQ   rR   g    €ÿ!@Fz1 2 3 8.9990234375r*   r,   r   r   r   Útest_float_default_precision  s    ÿÿrr   c            
   	   C   sð   t  ¡ } t  ¡ }| j |¡ t  | ¡}|j |¡ g }dddg}dddg}ddd	gd
ddgdddgg}tt|ƒƒD ]$}| t j	| || || dd�¡ qr|j
 |¡ | t|ƒ¡ tt|ƒƒD ]}t|| ƒ}||j|< q¾t ¡ }	|  |	¡ d S )NZheadAZheadBZheadCr	   rL   r@   ÚArM   rQ   ÚBrN   rR   ÚCrO   rS   r4   r
   )r   ZVOTableFileÚResourceÚ	resourcesÚappendÚTableZtablesÚranger   r   ÚfieldsÚextendZcreate_arraysÚtupleÚarrayÚioÚBytesIOZto_xml)
ZvotableÚresourceÚtableZtabarrZheadsÚtypesÚvalsÚiÚvaluesZbuffr   r   r   Útest_vararray#  s(    


ÿr‡   c                  C   s8   t tdƒƒ} | dk	st‚|  ¡ }|d d dks4t‚dS )z9
    see Pull Request 4782 or Issue 4781 for details
    zdata/gemini.xmlNZ
access_urlr   zahttp://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/data/pub/GEMINI/S20120515S0064?runid=bx9b1o8cvk1qesrt)r   r   r    Zto_table)r‚   Úttr   r   r   Útest_gemini_v1_2=  s    
ÿÿr‰   )(r   Únumpyr^   r   Znumpy.testingr   Zastropy.io.votabler   r   r   Zastropy.io.votable.tabler   Zastropy.utils.datar   r   r%   r-   r1   r2   r<   r?   rE   rI   rK   rW   rY   r\   ra   rb   rc   rf   rg   ri   rl   rm   ro   rp   rr   r‡   r‰   r   r   r   r   Ú<module>   s@   		
 

		