a
    “I_±  ã                   @   sh   d Z ddlZddlZddlmZ ddlmZmZmZmZm	Z	m
Z
 ddlZdd„ ZG dd„ dejjƒZdS )	zTests for samba.kcc.graph_utilsé    N)Ú
GraphError)Úverify_graph_completeÚverify_graph_connectedÚ*verify_graph_connected_under_edge_failuresÚverify_graph_forestÚ,verify_graph_connected_under_vertex_failuresÚverify_graph_no_lonely_verticesc                 C   sˆ   t | ƒdk rdS t| ƒ}tƒ }tƒ }| | ¡ ¡ | | ¡ ¡ | t|ƒ¡ |r€| ¡ }| ¡ }||f}| |¡ | |¡ qNt|ƒS )Né   © )ÚlenÚsetÚaddÚpopÚtupleÚupdate)ÚverticesZ	remainingZusedÚedgesÚvÚwÚer
   r
   ú=/usr/lib/python3/dist-packages/samba/tests/kcc/graph_utils.pyÚ	make_tree#   s    
r   c                       sd   e Zd Z‡ f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d„ Zdd„ Z‡  ZS )ÚUndirectedGraphTestsc           	         s  t t| ƒ ¡  tdƒ}tdƒ}tt |d¡ƒ}tt |d¡ƒ}tt|dd … |d d… ƒƒ}||d |d fg }t|ƒ}t|ƒ}|||g| _	|| || || g| _
||| |g| _|||g| _|||g| _|||g| _|| || || g| _d|df| _d S )NZabcdefghZijkr	   é   éÿÿÿÿr   r
   )Úsuperr   ÚsetUpr   Ú	itertoolsÚcombinationsÚlistÚzipr   Úcomplete_graphÚdisconnected_clustersÚgraph_with_unreachablesÚringÚlineÚtreeÚforestÚunconnected_graph)	Úselfr   Z	vertices2r   Zedges2Z
line_edgesZ
ring_edgesr&   Ztree2©Ú	__class__r
   r   r   9   s4    þþþzUndirectedGraphTests.setUpc                 G   s   | j t|g|¢R Ž S ©N)ZassertRaisesr   )r)   ÚfnÚargsr
   r
   r   ÚassertGraphErrorY   s    z%UndirectedGraphTests.assertGraphErrorc                 C   sh   t }| j|g| j¢R Ž  | j|g| j¢R Ž  | j|g| j¢R Ž  | j|g| j¢R Ž  |  || jŽ ¡ d S r,   )r   r/   r"   r#   r$   r&   ÚassertIsNoner!   ©r)   r-   r
   r
   r   Útest_graph_complete\   s    z(UndirectedGraphTests.test_graph_completec                 C   s˜   t }| j|g| j¢R Ž  | j|g| j¢R Ž  | j|g| j¢R Ž  | j|g| j¢R Ž  |  || jŽ ¡ |  || jŽ ¡ |  || j	Ž ¡ |  || j
Ž ¡ d S r,   )r   r/   r"   r#   r'   r(   r0   r%   r$   r!   r&   r1   r
   r
   r   Útest_graph_connectedf   s    z)UndirectedGraphTests.test_graph_connectedc                 C   s„   t }| j|g| j¢R Ž  | j|g| j¢R Ž  | j|g| j¢R Ž  |  || jŽ ¡ |  || jŽ ¡ |  || jŽ ¡ |  || j	Ž ¡ d S r,   )
r   r/   r"   r#   r$   r0   r%   r&   r'   r(   r1   r
   r
   r   Útest_graph_forests   s    z&UndirectedGraphTests.test_graph_forestc                 C   sx   t }| j|g| j¢R Ž  | j|g| j¢R Ž  | j|g| j¢R Ž  | j|g| j¢R Ž  |  || jŽ ¡ |  || jŽ ¡ d S r,   )	r   r/   r%   r&   r'   r"   r0   r$   r!   r1   r
   r
   r   Ú(test_graph_connected_under_edge_failures   s    z=UndirectedGraphTests.test_graph_connected_under_edge_failuresc                 C   sx   t }| j|g| j¢R Ž  | j|g| j¢R Ž  | j|g| j¢R Ž  | j|g| j¢R Ž  |  || jŽ ¡ |  || jŽ ¡ d S r,   )	r   r/   r%   r&   r'   r"   r0   r$   r!   r1   r
   r
   r   Ú*test_graph_connected_under_vertex_failuresŠ   s    z?UndirectedGraphTests.test_graph_connected_under_vertex_failuresc                 C   s   d S r,   r
   ©r)   r
   r
   r   Útest_graph_multi_edge_forest–   s    z1UndirectedGraphTests.test_graph_multi_edge_forestc                 C   s€   t }| j|g| j¢R Ž  | j|g| j¢R Ž  |  || jŽ ¡ |  || jŽ ¡ |  || jŽ ¡ |  || jŽ ¡ |  || j	Ž ¡ d S r,   )
r   r/   r(   r#   r0   r$   r!   r%   r&   r'   r1   r
   r
   r   Útest_graph_no_lonely_vertices™   s    z2UndirectedGraphTests.test_graph_no_lonely_verticesc                 C   s   d S r,   r
   r7   r
   r
   r   Útest_graph_no_unknown_vertices¤   s    z3UndirectedGraphTests.test_graph_no_unknown_vertices)Ú__name__Ú
__module__Ú__qualname__r   r/   r2   r3   r4   r5   r6   r8   r9   r:   Ú__classcell__r
   r
   r*   r   r   7   s    
r   )Ú__doc__ZsambaZsamba.testsZsamba.kcc.graph_utilsr   r   r   r   r   r   r   r   r   ZtestsZTestCaser   r
   r
   r
   r   Ú<module>   s    