
    Vh                     L    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      Z	y)zDUnit tests for the :mod:`networkx.generators.interval_graph` module.    N)interval_graph)edges_equalc                   @    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestIntervalGraphzHUnit tests for :func:`networkx.generators.interval_graph.interval_graph`c                 6    t        t        g             dk(  sJ y)z%Tests for trivial case of empty inputr   N)lenr   )selfs    ]/home/dcms/DCMS/lib/python3.12/site-packages/networkx/generators/tests/test_interval_graph.py
test_emptyzTestIntervalGraph.test_empty   s    >"%&!+++    c                    ddg}t        j                  t              5  t        |       ddd       ddhg}t        j                  t              5  t        |       ddd       dg}t        j                  t              5  t        |       ddd       ddgg}t        j                  t              5  t        |       ddd       y# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   TxY w# 1 sw Y   yxY w)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_intervals        r
   !test_interval_graph_check_invalidz3TestIntervalGraph.test_interval_graph_check_invalid   s     !%f~]]9% 	1/0	1 !"1vh]]9% 	0./	0 09k+]]9% 	@>?	@  VH]]:& 	.,-	. 	.	1 	1	0 	0	@ 	@	. 	.s/   CC C2C+CCC(+C4c                     ddg}t        j                         } |j                  |  t        |      }t	        |j
                        t	        |j
                        k(  sJ t        ||      sJ y )Nr   r   r   )nxGraphadd_edger   setnodesr   r	   	intervalsexpected_graphactual_gs       r
   test_interval_graph_0z'TestIntervalGraph.test_interval_graph_0&   sc    V$	+!),8>>"c.*>*>&????>8444r   c                 "   g d}t        j                         }|j                  |       d}d}d}d}d}|j                  |||||g       t	        |      }t        |j                        t        |j                        k(  sJ t        ||      sJ y )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%   s	            r
   test_interval_graph_1z'TestIntervalGraph.test_interval_graph_11   s    4	%%i0%%r2r2r&:;!),8>>"c.*>*>&????>8444r   c                     dddgddgdg}t        j                         }|j                  g d       t        |      }t	        |j
                        t	        |j
                        k(  sJ t        ||      sJ y )Nr   r            	   
   )r   r   r6   )r7   r8   r9   )r   r   r-   r   r    r!   r   r"   s       r
   test_interval_graph_2z'TestIntervalGraph.test_interval_graph_2C   sn    aVaVW5	%%&GH!),8>>"c.*>*>&????>8444r   c                 $   dddgddgg}t        j                         }|j                  g d       d}d}d	}|j                  |||g       t	        |      }t        |j                        t        |j                        k(  sJ t        ||      sJ y )
Nr+   r   r6         @r*   )r+   r<   r?   r*   )r+   r<   )r+   r@   )r<   r@   r,   )r	   r#   r$   r/   r0   r1   r%   s          r
   test_interval_graph_3z'TestIntervalGraph.test_interval_graph_3N   s    aVc1X.	%%&@A%%r2rl3!),8>>"c.*>*>&????>8444r   c                     g d}t        j                         }|j                  |       h d}t        j                  |      }t        j                  |d      }t        |      |k(  sJ y)ztest all possible overlaps)r   r   )rD   r   rD   r   rD   r   rD   r   r   r   rC   r   r   r   r   r(   r)   >
   rJ   rC   rK   r   r   r(   rF   rG   rH   rI   rC   N)r   r   r-   r   	neighborsr    )r	   r#   r$   expected_nbrsr%   actual_nbrss         r
   test_interval_graph_4z'TestIntervalGraph.test_interval_graph_4^   s`    
	  %%i0
 $$Y/ll8V4;=000r   c                    t         j                   dfddddt         j                  fh}t        j                         }|j	                  |       t         j                   dfdf}ddt         j                  ff}|j                  ||g       t        |      }t        |j                        t        |j                        k(  sJ t        ||      sJ y)z=this test is to see that an interval supports infinite numberr   )rE   rE   )      ?rQ   )r   r   r   N)
mathinfr   r   r-   r.   r   r    r!   r   )r	   r#   r$   r/   r0   r%   s         r
   test_interval_graph_5z'TestIntervalGraph.test_interval_graph_5   s    xxi^Xz6Atxx=Q	%%i0y!nh'q$((m$%%r2h/!),8>>"c.*>*>&????>8444r   N)__name__
__module____qualname____doc__r   r   r&   r4   r=   rA   rO   rT    r   r
   r   r      s.    R,.&	55$	55 #1J5r   r   )
rX   rR   r   networkxr   "networkx.generators.interval_graphr   networkx.utilsr   r   rY   r   r
   <module>r]      s#    J    = &D5 D5r   