o
    3ήc                     @   sF   d Z ddlZddlZddlZddlmZ ddlmZ G dd dZ	dS )zFUnit tests for the :mod:`networkx.generators.interval_graph` module.

    N)interval_graph)edges_equalc                   @   sP   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd ZdS )TestIntervalGraphzHUnit tests for :func:`networkx.generators.interval_graph.interval_graph`c                 C   s   t tg dks
J dS )z%Tests for trivial case of empty inputr   N)lenr   )self r   T/tmp/pip-target-vg8gfxp4/lib/python/networkx/generators/tests/test_interval_graph.py
test_empty   s   zTestIntervalGraph.test_emptyc                 C   s   ddg}t t t| W d   n1 sw   Y  ddhg}t t t| W d   n1 s6w   Y  dg}t t t| W d   n1 sRw   Y  ddgg}t t t| W d   dS 1 sqw   Y  dS )z*Tests for conditions that raise ExceptionsN      r   r   )r   r      r   )pytestraises	TypeErrorr   
ValueError)r   invalids_having_noneinvalids_having_set#invalids_having_seq_but_not_length2invalids_intervalr   r   r   !test_interval_graph_check_invalid   s    





"z3TestIntervalGraph.test_interval_graph_check_invalidc                 C   sL   ddg}t  }|j|  t|}t|jt|jksJ t||s$J d S )Nr
   r   r   )nxGraphadd_edger   setnodesr   r   	intervalsexpected_graphactual_gr   r   r   test_interval_graph_0'   s   
z'TestIntervalGraph.test_interval_graph_0c           	      C   st   g d}t  }|| d}d}d}d}d}||||||g t|}t|jt|jks1J t||s8J d S )N)r
   r   r   r      r   r$   )r%   r
   )r%   r"   )r%   r#   )r#   r"   )r
   r"   r   r   add_nodes_fromadd_edges_fromr   r   r   r   )	r   r   r   e1e2e3e4e5r    r   r   r   test_interval_graph_12   s   
z'TestIntervalGraph.test_interval_graph_1c                 C   s\   dddgddgdg}t  }|g d t|}t|jt|jks%J t||s,J d S )Nr
   r            	   
   )r
   r   r/   )r0   r1   r2   )r   r   r'   r   r   r   r   r   r   r   r   test_interval_graph_2D   s   z'TestIntervalGraph.test_interval_graph_2c                 C   sv   dddgddgg}t  }|g d d}d}d	}||||g t|}t|jt|jks2J t||s9J d S )
Nr%   r   r/         @r$   )r%   r5   r7   r$   )r%   r5   )r%   r8   )r5   r8   r&   )r   r   r   r)   r*   r+   r    r   r   r   test_interval_graph_3O   s   z'TestIntervalGraph.test_interval_graph_3c                 C   sL   g d}t  }|| h d}t |}t |d}t||ks$J dS )ztest all possible overlaps)r   r   )r;   r   r;   r   r;   r   r;   r   r   r   r:   r   r   r
   r   r"   r#   >
   rA   r:   rB   r
   r   r"   r=   r>   r?   r@   r:   N)r   r   r'   r   	neighborsr   )r   r   r   expected_nbrsr    actual_nbrsr   r   r   test_interval_graph_4_   s   

z'TestIntervalGraph.test_interval_graph_4c                 C   s   t j dfddddt jfh}t }|| t j dfdf}ddt jff}|||g t|}t|jt|jks=J t	||sDJ dS )z=this test is to see that an interval supports infinite numberr   )r<   r<   )      ?rG   )r   r   r   N)
mathinfr   r   r'   r(   r   r   r   r   )r   r   r   r)   r*   r    r   r   r   test_interval_graph_5   s   
z'TestIntervalGraph.test_interval_graph_5N)__name__
__module____qualname____doc__r	   r   r!   r.   r6   r9   rF   rJ   r   r   r   r   r      s    %r   )
rN   rH   r   networkxr   "networkx.generators.interval_graphr   networkx.utilsr   r   r   r   r   r   <module>   s    