U
    sVc                     @   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.
    paramrequest r   I/tmp/pip-unpacked-wheel-xj8nt62q/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_containeradjacentexpectedresultr   r   r   test_overlaps_interval(   s    
z#TestOverlaps.test_overlaps_intervalother_constructorc              	   C   sD   | td}| td}tjtdd || W 5 Q R X d S )Nr   z^$match)from_breaksrangepytestraisesNotImplementedErrorr#   )r&   r   r1   r,   Zother_containerr   r   r    test_overlaps_interval_container<   s    z-TestOverlaps.test_overlaps_interval_containerc           
      C   sr   |\}}t ||| }||| ftj|d|  |d|  fg}||}tdddg}||}	t|	| dS )zNA values are marked as Falser   r   TFN)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   sF   | td}dt|j }tjt|d || W 5 Q R X d S )Nr   z#`other` must be Interval-like, got r2   )r4   r5   r   r   r6   r7   	TypeErrorr#   )r&   r   r<   r,   msgr   r   r   test_overlaps_invalid_typeT   s    z'TestOverlaps.test_overlaps_invalid_typeN)r   
__module____qualname__r0   r6   markZparametrizer   r   r9   r;   r   r   r@   r   r   r   r   r   '   s   
r   )__doc__Znumpyr!   r6   Zpandasr   r   r   r   Zpandas._testingZ_testingr$   Zpandas.core.arraysr   Zfixturer   r   r   r   r   r   r   <module>   s    

