a
    Gb                     @   s   d Z ddlZddlZddlmZmZmZmZ ddl	m
Z ddlmZ ejeegddd Zejeded	fed
ed	fdgdd ddd ZG dd dZdS )zHTests for Interval-Interval operations, such as overlaps, contains, etc.    N)IntervalIntervalIndex	Timedelta	Timestamp)IntervalArray)paramsc                 C   s   | j S )z>
    Fixture for testing both interval container classes.
    ZparamZrequest r
   Dlib/python3.9/site-packages/pandas/tests/arrays/interval/test_ops.pyconstructor   s    r   z0 days1 day
2018-01-01)r      c                 C   s   t | d jS )Nr   type__name__xr
   r
   r   <lambda>       r   )r   idsc                 C   s   | j S )z
    Fixture for generating intervals of different types from a start value
    and a shift value that can be added to start to generate an endpoint.
    r   r	   r
   r
   r   start_shift   s    r   c                   @   sf   e Zd Zdd Zejdeegdd Z	dd Z
ejjdd	d
dededgdd ddd ZdS )TestOverlapsc              	   C   s   |\}}t ||d|  |}||d|  f|| |d|  f|| |d|  f|d|  |d|  f|d|  |d|  f|d|  |d|  fg}|||}	|jo|	j}
tdddd|
dg}|	|}t|| d S )N            TF)	r   from_tuplesZclosed_rightZclosed_leftnparrayoverlapstmassert_numpy_array_equal)selfr   r   closedZother_closedstartshiftintervaltuplesinterval_containerZadjacentexpectedresultr
   r
   r   test_overlaps_interval(   s    
z#TestOverlaps.test_overlaps_intervalother_constructorc                 C   sX   | td}| td}tjtdd || W d    n1 sJ0    Y  d S )Nr   z^$match)from_breaksrangepytestraisesNotImplementedErrorr!   )r$   r   r.   r*   Zother_containerr
   r
   r    test_overlaps_interval_container<   s    z-TestOverlaps.test_overlaps_interval_containerc           
      C   sp   |\}}t ||| }||| ftj|d|  |d|  fg}||}tg d}||}	t|	| dS )zNA values are marked as Falser   r   )TFFN)r   r   nanr   r    r!   r"   r#   )
r$   r   r   r&   r'   r(   r)   r*   r+   r,   r
   r
   r   test_overlaps_naD   s    


zTestOverlaps.test_overlaps_naother
   TZfoor   r   c                 C   s
   t | jS )Nr   r   r
   r
   r   r   W   r   zTestOverlaps.<lambda>)r   c                 C   sZ   | td}dt|j }tjt|d || W d    n1 sL0    Y  d S )Nr   z#`other` must be Interval-like, got r/   )r1   r2   r   r   r3   r4   	TypeErrorr!   )r$   r   r9   r*   msgr
   r
   r   test_overlaps_invalid_typeT   s    z'TestOverlaps.test_overlaps_invalid_typeN)r   
__module____qualname__r-   r3   ZmarkZparametrizer   r   r6   r8   r   r   r=   r
   r
   r
   r   r   '   s   
r   )__doc__Znumpyr   r3   Zpandasr   r   r   r   Zpandas._testingZ_testingr"   Zpandas.core.arraysr   Zfixturer   r   r   r
   r
   r
   r   <module>   s    

