a
    Pf                     @   sb   d dl mZmZ d dlZd dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZ G dd dZdS )	    )given
strategiesN)lib)iNaT)OutOfBoundsTimedelta)	Timedeltac                   @   s8  e Zd Zejddededfdededfded	ed
fdededfdededfdededfdededfdededfdededfdededfg
d d! Zd"d# Zejj	d$d% Z
ejj	eejed& ejd'd(ejd)ejejejgd*d+ Zejd,g d-d.d/ Zd0S )1TestTimedeltaRoundz
freq,s1,s2ns1 days 02:34:56.789123456-1 days 02:34:56.789123456usz1 days 02:34:56.789123000z-1 days 02:34:56.789123000msz1 days 02:34:56.789000000z-1 days 02:34:56.789000000s1 days 02:34:57z-1 days 02:34:57Z2sz1 days 02:34:56z-1 days 02:34:56Z5sz1 days 02:34:55z-1 days 02:34:55min1 days 02:35:00z-1 days 02:35:00Z12minz1 days 02:36:00z-1 days 02:36:00hz1 days 03:00:00z-1 days 03:00:00dz1 daysz-1 daysc                 C   s@   t d}t d}||}||ks&J ||}||ks<J d S )Nr
   r   )r   round)selffreqs1s2t1t2r1r2 r   i/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/scalar/timedelta/methods/test_round.py
test_round   s    

zTestTimedeltaRound.test_roundc              	   C   sR   t d}dD ]@\}}tjt|d || W d    q1 sB0    Y  qd S )Nr
   ))ZYEz,<YearEnd: month=12> is a non-fixed frequency)ZMEz#<MonthEnd> is a non-fixed frequency)ZfoobarzInvalid frequency: foobarmatch)r   pytestraises
ValueErrorr   )r   r   r   msgr   r   r   test_round_invalid5   s    z%TestTimedeltaRound.test_round_invalidc                 C   sN  t jd}t jt dd t d }||ks0J t jd}t jt d }||ksVJ d}tjt|d t jd W d    n1 s0    Y  tjt|d t jd W d    n1 s0    Y  d}tjt|d t jd W d    n1 s0    Y  tjt|d t jd W d    n1 s@0    Y  d S )	Nr      )secondsii2zICannot round -106752 days \+00:12:43.145224193 to freq=s without overflowr    zFCannot round 106751 days 23:47:16.854775807 to freq=s without overflow)	r   r   ceilmaxfloorr"   r#   r   r   )r   resultexpectedr%   r   r   r    test_round_implementation_bounds@   s"    **,z3TestTimedeltaRound.test_round_implementation_boundsr'   )Z	min_valueZ	max_value)valmethodc                    s   t  tt|} |} fdd}d}|||d d}|||d d}|||d d	}|||d
 d}|||d d}|||d d}|||d d S )Nc                    sR  |dkrnt | j|\}}t|| }| j| }|| jks@J | j| }|| jksXJ d}|dkrhnR ju r| jjkrtj|d | | W d    n1 s0    Y  d S n ju r| jjk rtj|d | | W d    n1 s0    Y  d S n||krn| jjkrtj|d | | W d    n1 s^0    Y  d S nL| jjk rtj|d | | W d    n1 s0    Y  d S | |}	|	|  }
t	|
j}||k sJ |	j| dksJ  j
u r||d ksNJ n6 ju r4|	| ksNJ n ju rN|	| ksNJ d S )Nr'   zwithout overflowr   r       )divmod_valueintr)   r*   r"   r#   r+   r   absr   )tsnanosunitdivmoddiffZlbZubr%   restdclsZerr_clsr0   r   r   checkerf   sR    


(*
**

z5TestTimedeltaRound.test_round_sanity.<locals>.checkerr'   r	   i  r   i@B r   i ʚ;r   l    Xp7 r   l     qar   l     "R: D)r   r   npZint64)r   r/   r0   r=   r@   r7   r   r>   r   test_round_sanityZ   s&    
2z$TestTimedeltaRound.test_round_sanityr8   )r	   r   r   r   c                 C   s   t d|}|d}|t dks(J |j|jks8J |d}|t dksRJ |j|jksbJ |d}|t dks|J |j|jksJ d S )Nr   r   r   z1 days 02:34:00)r   Zas_unitr   Z_cresor+   r)   )r   r8   r=   r<   r   r   r   test_round_non_nano   s    


z&TestTimedeltaRound.test_round_non_nanoN)__name__
__module____qualname__r"   markZparametrizer   r   r&   Z
skip_ubsanr.   r   stZintegersr   r   Zi8maxr   r+   r)   rC   rD   r   r   r   r   r      sF   
	
Nr   )Z
hypothesisr   r   rI   numpyrB   r"   Zpandas._libsr   Zpandas._libs.tslibsr   Zpandas.errorsr   Zpandasr   r   r   r   r   r   <module>   s   