o
    ßË·eq	  ã                   @   s(   d dl ZG dd„ dƒZG dd„ dƒZdS )é    Nc                   @   sH   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S )ÚTestMinEdgeCoverz4Tests for :func:`networkx.algorithms.min_edge_cover`c                 C   s    t  ¡ }t  |¡tƒ ksJ ‚d S ©N)ÚnxÚGraphÚmin_edge_coverÚset©ÚselfÚG© r   ú^/var/www/ideatree/venv/lib/python3.10/site-packages/networkx/algorithms/tests/test_covering.pyÚtest_empty_graph   s   z!TestMinEdgeCover.test_empty_graphc                 C   s,   t  ¡ }| dd¡ t  |¡dhksJ ‚d S )Nr   ©r   r   )r   r   Úadd_edger   r   r   r   r   Útest_graph_with_loop   s   z%TestMinEdgeCover.test_graph_with_loopc                 C   s*   t  dg¡}t  |¡dhdhfv sJ ‚d S )N©r   é   ©r   r   )r   r   r   r   r   r   r   Útest_graph_single_edge   s   z'TestMinEdgeCover.test_graph_single_edgec                 C   sT   t  d¡}t  |¡}t|ƒdksJ ‚|jD ]\}}||f|v s'||f|v s'J ‚qd S )Né   é   )r   Ú
path_graphr   ÚlenÚedges)r	   r
   Ú	min_coverÚuÚvr   r   r   Útest_graph_two_edge_path   s   

€ÿz)TestMinEdgeCover.test_graph_two_edge_pathc                 C   sœ   t  ¡ }|jg d¢dd |jg d¢dd | g d¢¡ t  |t jjjj¡}t  	||¡s/J ‚t
|ƒdks7J ‚t  |¡}t  	||¡sDJ ‚t
|ƒdksLJ ‚d S )	N)r   r   r   é   r   )Ú	bipartite)ÚaÚbÚcr   ))r   r    )r   r!   )r   r!   )r   r"   )r   r"   )r   r    é   r   )r   r   Úadd_nodes_fromÚadd_edges_fromr   Ú
algorithmsr   ÚmatchingÚeppstein_matchingÚis_edge_coverr   )r	   r
   r   Ú
min_cover2r   r   r   Útest_bipartite_explicit   s   ÿ
z(TestMinEdgeCover.test_bipartite_explicitc                 C   ó8   t  d¡}t  |¡}t  ||¡sJ ‚t|ƒdksJ ‚d S )Né
   é   ©r   Úcomplete_graphr   r)   r   ©r	   r
   r   r   r   r   Útest_complete_graph_even+   ó   

z)TestMinEdgeCover.test_complete_graph_evenc                 C   r,   )Né   é   r/   r1   r   r   r   Útest_complete_graph_odd1   r3   z(TestMinEdgeCover.test_complete_graph_oddN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r+   r2   r6   r   r   r   r   r      s    r   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTestIsEdgeCoverz3Tests for :func:`networkx.algorithms.is_edge_cover`c                 C   s   t  ¡ }t  |tƒ ¡sJ ‚d S r   )r   r   r)   r   r   r   r   r   r   ;   s   z TestIsEdgeCover.test_empty_graphc                 C   s*   t  ¡ }| dd¡ t  |dh¡sJ ‚d S )Nr   ©r   r   ©r   r   r   r)   r   r   r   r   r   ?   s   z$TestIsEdgeCover.test_graph_with_loopc                 C   sd   t  ¡ }| dd¡ t  |ddh¡sJ ‚t  |ddh¡sJ ‚t  |dh¡s'J ‚t  |dh¡r0J ‚d S )Nr   r   r   r<   r   r   r=   r   r   r   r   r   D   s   z&TestIsEdgeCover.test_graph_single_edgeN)r7   r8   r9   r:   r   r   r   r   r   r   r   r;   8   s
    r;   )Únetworkxr   r   r;   r   r   r   r   Ú<module>   s    4