U
    e»{j  ã                   @   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	 G dd„ dƒZ
ej dddg¡ej dddg¡d	d
„ ƒƒZdd„ Zej dddg¡ej dddg¡ej dddg¡dd„ ƒƒƒZdd„ ZdS )é    N)ÚTimeÚ	TimeDeltac                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚTestTimeComparisonsz.Test Comparisons of Time and TimeDelta classesc                 C   s6   t t dd¡ddd�| _t t ddd¡ddd�| _d S )	NiKÃ  iUÃ  ZmjdÚutc)ÚformatÚscaleih¿  i8Ç  éÈ   )r   ÚnpZarangeÚt1Út2)Úself© r   úb/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/time/tests/test_comparisons.pyÚsetup_method   s    z TestTimeComparisons.setup_methodc              
   C   s~   t ddd�}tjdftjdftjdftjdffD ](\}}t t¡� ||dƒ W 5 Q R X q0|dkd	ksjt	‚|dkd
kszt	‚dS )zÄ
        If an incompatible object is compared to a Time object, == should
        return False and != should return True. All other comparison
        operators should raise a TypeError.
        ZJ2000r   )r   z>=ú>z<=ú<NFT)
r   ÚoperatorÚgeÚgtÚleÚltÚpytestÚraisesÚ	TypeErrorÚAssertionError)r   r
   ÚopZop_strr   r   r   Útest_miscompares   s    üz$TestTimeComparisons.test_miscomparesc           
      C   s¦  | j | jk }t |t ddddddddddg
¡k¡s8t‚| j | jk}t ||k¡sVt‚| j | jk}t |t ddddddddddg
¡k¡sŽt‚| j | jk}t ||k¡s¬t‚| j | jk}t |t ddddddddddg
¡k¡sät‚| j | jk}t ||k¡�st‚| j d | jd k}|dk�s&t‚| j d | jk}t |t ddddddddddg
¡k¡�sdt‚| j | jd k}	t |	t ddddddddddg
¡k¡�s¢t‚d S )NFTr   )r
   r   r	   ÚallÚarrayr   )
r   Zt1_lt_t2Zt1_ge_t2Zt1_le_t2Zt1_gt_t2Zt1_eq_t2Zt1_ne_t2Út1_0_gt_t2_0Z
t1_0_gt_t2Z
t1_gt_t2_0r   r   r   Ú	test_time'   s\    ÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿzTestTimeComparisons.test_timec                 C   s$   | j d | jd k}|dks t‚d S )Nr   T)r
   r   r   )r   r   r   r   r   Útest_time_booleanU   s    z%TestTimeComparisons.test_time_booleanc                 C   sl   | j | j }t t¡� | j|k W 5 Q R X |tddd�k}t |t ddddddddddg
¡k¡sht	‚d S )Nç        Úsec)r   FT)
r   r
   r   r   r   r   r	   r   r   r   )r   ÚdtZ	dt_gt_td0r   r   r   Útest_timedeltaY   s    ÿÿÿz"TestTimeComparisons.test_timedeltaN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r    r!   r%   r   r   r   r   r      s   .r   ÚswapTFÚ
time_deltac                    sø   ‡ ‡fdd„}t dƒ}|dtj  }|tdtj ƒ }|||ƒsDt‚|||ƒsRt‚|dtj  }|||dtj d�sxt‚|||dtj d�r�t‚|d	d
dgtj  }t |||dtj d�dddgk¡sÌt‚|dt t	¡j
 tj  }|||ƒrôt‚dS )z©Test functionality of Time.isclose() method.

    Run every test with 2 args in original order and swapped, and using
    Quantity or TimeDelta for atol (when provided).c                    s8   ˆ r||  } }d|kr*ˆr*t |d ƒ|d< | j|f|ŽS ©NÚatol©r   Úisclose©r
   r   Úkwargs©r*   r+   r   r   Úisclose_swapn   s
    
z'test_isclose_time.<locals>.isclose_swapz2018-07-24T10:41:56.807015240r"   é   çß¼šxV4ò>©r-   ç)QÎ ÈEØ>éÿÿÿÿr   é   ç      ø?TFé   N)r   ÚuÚsr   r   Údayr	   r   ÚfinfoÚfloatÚeps)r*   r+   r3   r
   r   Út3r   r2   r   Útest_isclose_timef   s    	(rC   c               	   C   sl   t dƒ} | dtj  }d}tjt|d�� |  d¡ W 5 Q R X d}tjt|d�� |  |d¡ W 5 Q R X d S )Nz2020:001r4   z3'other' argument must support subtraction with Time©Úmatchr:   úK'atol' argument must be a Quantity or TimeDelta instance, got float instead)r   r<   r=   r   r   r   r/   ©r
   r   rE   r   r   r   Útest_isclose_time_exceptionsˆ   s    ÿrH   Úother_quantityc                    sÐ  ‡‡fdd„}‡ ‡fdd„}t dtj ƒ}|dtj  }|t dtj ƒ }|||ƒsXt‚|||ƒsft‚|||ƒstt‚|||ƒs‚t‚|dtj  }|||dtj d	�s¨t‚|||d
tj d	�rÀt‚|||dtj d	�sØt‚|||d
tj d	�rðt‚t dtj ƒ}|dddgtj  }t |||dtj d	�dddgk¡�s<t‚t |||dtj d	�dddgk¡�sft‚t |j|dtj dd�dddgk¡�s’t‚|dt t	¡j
 tj  }|||ƒ�r¼t‚|||ƒ�rÌt‚dS )zêTest functionality of TimeDelta.isclose() method.

    Run every test with 2 args in original order and swapped, and using
    Quantity or TimeDelta for atol (when provided), and using Quantity or
    TimeDelta for the other argument.c                    s8   ˆ r||  } }d|kr*ˆr*t |d ƒ|d< | j|f|ŽS r,   r.   r0   r2   r   r   r3       s
    
z,test_isclose_timedelta.<locals>.isclose_swapc                    s:   ˆ r|  tj¡}d|kr,ˆr,t|d ƒ|d< | j|f|ŽS r,   )Útor<   r>   r   r/   r0   )rI   r+   r   r   Úisclose_other_quantity§   s
    z6test_isclose_timedelta.<locals>.isclose_other_quantityg      ð?r"   r4   r5   r6   r7   r   r8   r9   r:   TFg      à?g333333ã?)r-   ZrtolN)r   r<   r=   r   r>   r	   r   r/   r?   r@   rA   )r*   r+   rI   r3   rK   r
   r   rB   r   )rI   r*   r+   r   Útest_isclose_timedelta–   s,    
**,rL   c               	   C   sr   t dtj ƒ} | dtj  }d}tjt|d�� |  d¡ W 5 Q R X d}tjt|d�� |  |d¡ W 5 Q R X d S )Nr4   z/other' argument must support conversion to daysrD   r:   rF   )r   r<   r=   r   r   r   r/   rG   r   r   r   Ú!test_isclose_timedelta_exceptionsÌ   s    ÿrM   )r   Únumpyr	   r   Zastropy.unitsZunitsr<   Zastropy.timer   r   r   ÚmarkZparametrizerC   rH   rL   rM   r   r   r   r   Ú<module>   s   Z 3