a
    ߙfb                     @   s   d dl Zd dlmZ d dlZd dlmZ d dlm	Z	m
Z
mZmZ d dlmZ d dlmZ ddlmZ d	d
gZerzed G dd dZG dd deZG dd deZG dd deeZdS )    N)assert_array_equal)units)QTablehstackvstackjoin)Masked)HAS_H5PY   )assert_masked_equalZecsvfitsh5c                   @   s$   e Zd Zedd Zedd ZdS )MaskedArrayTableSetupc                 C   s$   t g d| _t g d| _d S N)g      @g      @g        TFF)nparrayamask_aself r   Dlib/python3.9/site-packages/astropy/utils/masked/tests/test_table.pysetup_arrays   s    z"MaskedArrayTableSetup.setup_arraysc                 C   s<   |    t| j| jd| _d| jj_t| jgdgd| _d S )N)maskz.1fma)names)	r   r   r   r   r   infoformatr   tr   r   r   r   setup_class   s    
z!MaskedArrayTableSetup.setup_classN)__name__
__module____qualname__classmethodr   r    r   r   r   r   r      s   
r   c                   @   s   e Zd Zedd ZdS )MaskedQuantityTableSetupc                 C   s*   t g dtj> | _t g d| _d S r   )r   r   umr   r   r   r   r   r   r   %   s    z%MaskedQuantityTableSetup.setup_arraysN)r!   r"   r#   r$   r   r   r   r   r   r%   $   s   r%   c                   @   sT   e Zd Zdd Zdd Zejdedd Z	ejdd	d
gdd Z
dd ZdS )TestMaskedArrayTablec                 C   sN   t | jd j| j t | jd j| j t| j dd  g dksJJ d S )Nr   )       ———z    5.0z    0.0)r   r   Zunmaskedr   r   r   repr
splitlinesr   r   r   r   test_table_initialization,   s    z.TestMaskedArrayTable.test_table_initializationc                 C   s   | j d jjdksJ d| j d jjv s,J | j  }d|d j_d|d jjd< t| dd  g dksrJ |d d }|d jjdksJ |d jjdksJ d|d jjv sJ |d jjd dksJ d S )	Nr   serialize_methodz.2fZnonsenser   r)   )r*   z   5.00z   0.00   )	r   r   nameZ
attr_namescopyr   r.   r+   r,   )r   t2Zt3r   r   r   test_info_basics4   s    
 z%TestMaskedArrayTable.test_info_basicsfile_formatc                 C   s   t |d| }i }|dkr0d|d< d|d< | jj|fi | t|}t|d | jjsdJ t	
|d | jks|J t	
|d j| jksJ |dkr| jd jj|d jjv sJ n|d jj| jd jjksJ d S )	Nza.r   ZtrialpathTZserialize_metar   r   )strr   r   writer   read
isinstancer   	__class__r   allr   r   r   r   )r   r4   tmpdirr0   kwargsr2   r   r   r   test_table_writeE   s    
 z%TestMaskedArrayTable.test_table_writer.   	data_maskZ
null_valuec                 C   s   t |d}| jj||d t|}| }W d    n1 sD0    Y  t|}t|d | j	j
snJ |dkrt|d  dksJ t|d | j	 nJt|d  dksJ t|d | j	ksJ t|d j| jksJ d S )Nz	test.ecsvr.   r   r?   r/   r
   )r6   r   r   r7   open	readlinesr   r8   r9   r   r:   lensplitr   r   r;   r   r   )r   r.   r<   r0   Zfhlinesr2   r   r   r   test_table_write_serializationX   s    
&
z3TestMaskedArrayTable.test_table_write_serializationc                 C   sP   t |d}tjtdd  | jj|dd W d    n1 sB0    Y  d S )Nzbad.ecsvzserialize method must be)matchZbad_serialize_methodr@   )r6   r   pytestZraises
ValueErrorr   r7   )r   r<   r0   r   r   r   "test_non_existing_serialize_methodn   s    z7TestMaskedArrayTable.test_non_existing_serialize_methodN)r!   r"   r#   r-   r3   rI   ZmarkZparametrizeFILE_FORMATSr>   rG   rK   r   r   r   r   r(   +   s   

r(   c                   @   s   e Zd Zdd Zdd ZdS )TestMaskedQuantityTablec                 C   s   | j }tdtddgtj i}t||gdd}t|d jg dksLJ t|d jg dkshJ t||gd	d}t|d jd
dgksJ t|d jddgksJ t	||gdd}t|d jg dksJ t|d jg dksJ d S )Nma2r
   r/   outerZ	join_typer   r   FFTinnerTF)TFFTT)TTTFF)
r   r   r   r&   r'   r   r   r;   r   r   )r   t1r2   t12r   r   r   'test_table_operations_requiring_maskingv   s    	z?TestMaskedQuantityTable.test_table_operations_requiring_maskingc                 C   s  t tj}tdddgtj i}tdg dtj i}t||gdd}t|d |sXJ t|d j	g dkstJ t|d g d	tj ksJ t|d |rJ t|d tjsJ t|d g dtj ksJ t||gd
d}t|d tjsJ t|d |rJ t|d tjs(J t|d |r<J t
||gdd}t|d j	g dksjJ t|d j	g dksJ ddg|d< g d|d< t||dd}t|d j	g dksJ t|d j	g dksJ d S )NZma1r
   r/   rN   )         rO   rP   rQ   )r
   r/   r   rR   )FFTTT)TTFFFr   )r
   rV   rW   )FFTT)FTFF)r   r&   ZQuantityr   r'   r   r9   r   r;   r   r   r   )r   ZMaskedQuantityrS   r2   rT   r   r   r   4test_table_operations_requiring_masking_auto_promote   s.    
  zLTestMaskedQuantityTable.test_table_operations_requiring_masking_auto_promoteN)r!   r"   r#   rU   rY   r   r   r   r   rM   t   s   rM   )Znumpyr   Znumpy.testingr   rI   Zastropyr   r&   Zastropy.tabler   r   r   r   Zastropy.utils.maskedr   Z"astropy.utils.compat.optional_depsr	   Ztest_maskedr   rL   appendr   r%   r(   rM   r   r   r   r   <module>   s   
I