o
    3ήcV                     @   sz   d Z ddlZddlZG dd dZdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zededede	de
dediZdS )z#Maximum weight clique test suite.

    Nc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestMaximumWeightCliquec                 C   s:   dd }t  D ]\}\}}|||d |||d  qd S )Nc                 S   s0   |  }t j||\}}t|||||sJ d S N)nx
algorithmsmax_weight_cliqueverify_clique)
graph_funcexpected_weightweight_accessorgraphcliqueweight r   W/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/tests/test_max_weight_clique.pycheck_basic_case   s
   
zBTestMaximumWeightClique.test_basic_cases.<locals>.check_basic_caser   )
TEST_CASESitems)selfr   r   r	   expected_sizer   r   r   test_basic_cases   s
   z(TestMaximumWeightClique.test_basic_casesc                 C   sD   t  }tt tj|d W d    d S 1 sw   Y  d S )Nznon-existent-key)two_node_graphpytestraisesKeyErrorr   r   r   r   r   r   r   r   test_key_error   s   "z&TestMaximumWeightClique.test_key_errorc                 C   sP   t  }d|jd d< tt tj| W d    d S 1 s!w   Y  d S )Ng      ?   r   )r   nodesr   r   
ValueErrorr   r   r   r   r   r   r    test_error_on_non_integer_weight   s
   "z8TestMaximumWeightClique.test_error_on_non_integer_weightc                 C   s   t  }|dd |dd tj|d\}}t|||dds"J t }|dd tj|d\}}t|||dds>J d S )N   r   r         )r   add_edger   r   r   r   three_node_independent_set)r   r   r   r   r   r   r   test_unaffected_by_self_loops"   s   z5TestMaximumWeightClique.test_unaffected_by_self_loopsc                 C   sp   t  }|tdd tddD ]}|d |j| d< q|g d t j|\}}t|||dds6J d S )Nr       r   ))r       )r       )r       )r       )r       )r       )r    r"   )r       )r       )r       )r       )r    r!   r      )r      )r      )r      )r   	   )r   
   )r      )r      )r   r+   )r      )r      )r   r-   )r      )r2   r6   )r2   r)   )r2   r:   )r2   r;   )r2   r-   )r2      )r2   r<   )r2   r/   )r2   r0   r3   r4   )r3      )r3   r5   )r3   r:   )r3   r;   )r3   r-   )r3   r.   )r3   r/   )r3   r!   r4   r?   )r4   r5   )r4   r6   )r4   r(   )r4   r8   )r4   r)   )r4   r*   )r4   r"   )r4   r:   )r4   r;   )r4      )r4   r/   )r4   r0   )r?      )r?   r5   )r?   r(   )r?   r9   )r?   r+   )r?   r,   )r?   r=   )r?   r.   )r?   r<   )r?   r/   )r?   r0   )rB   r'   )rB   r8   )rB   r)   )rB   r*   )rB   r9   )rB   r"   )rB   rA   )rB   r<   )rB   r0   )rB   r!   )r5   r7   )r5   r)   )r5   r*   )r5   r+   )r5   r"   )r5   r;   )r5   r=   )r5   r.   )r5   r<   )r5   r/   )r5   r!   )r6      )r6   r'   )r6   r(   )r6   r8   )r6   r)   )r6   r*   )r6   r,   )r6   r"   )r6   r:   )r6   r=   )r6   r!   )r7   r'   )r7   r)   )r7   r+   )r7   r,   )r7   r"   )r7   r;   )r7   r-   )r7   r=   )r7   r.   )r7   r<   )r7   r0   )r7   r!   )rC   r(   )rC   r)   )rC   r*   )rC   r9   )rC   r+   )rC   r,   )rC   r"   )rC   r;   )rC   r0   )rC   r!   )r'   r8   )r'   r9   )r'   r+   )r'   r,   )r'   r"   )r'   r:   )r'   r-   )r'   rA   )r'   r.   )r'   r!   )r(   r"   )r(   r;   )r(   r-   )r(   r=   )r(   r!   )r8   r*   )r8   r"   )r8   r:   )r8   r;   )r8   r-   )r8   rA   )r8   r.   )r8   r<   )r8   r0   )r8   r!   )r)   r9   )r)   r+   )r)   r"   )r)   r:   )r)   r.   )r)   r<   )r)   r/   )r*   r9   )r*   r+   )r*   r,   )r*   r"   )r*   r:   )r*   r0   )r*   r!   )r9   r+   )r9   r:   )r9   r;   )r9   rA   )r9   r<   )r9   r/   )r9   r!   )r+   r,   )r+   r"   )r+   r:   )r+   r;   )r+   r-   )r+   r=   )r,   r"   )r,   r;   )r,   r-   )r,   r=   )r,   rA   )r,   r<   )r,   r!   )r"   r:   )r"   r-   )r"   r=   )r"   r.   )r"   r/   )r"   r0   )r:   r-   )r:   r.   )r:   r<   )r:   r0   )r;   r=   )r;   rA   )r;   r.   )r;   r0   )r-   rA   )r-   r!   )r=   rA   )r=   r.   )rA   r<   )rA   r0   )r.   r<   )r.   r/   )r.   r!   )r/   r0   )r0   r!   o   )	r   Graphadd_nodes_fromranger   add_edges_fromr   r   r   )r   Gir   r   r   r   r   test_30_node_prob-   s   %z)TestMaximumWeightClique.test_30_node_probN)__name__
__module____qualname__r   r   r   r%   rK   r   r   r   r   r   
   s    r   c                    sv   |D ]}|D ]}||krq  ||s  dS qq|d u r"t|}nt fdd|D }||kr3dS ||kr9dS dS )NFc                 3   s    | ]
} j | d  V  qdS )r   N)r   ).0vr   r   r   	<genexpr>j   s    z verify_clique.<locals>.<genexpr>T)has_edgelensum)r   r   reported_clique_weightexpected_clique_weightr
   node1node2clique_weightr   rQ   r   r   ]   s    
r   c                   C   s   t  S r   )r   rE   r   r   r   r   empty_graphw   s   r[   c                  C   s&   t  } | dg d| jd d< | S )Nr    r7   r   r   rE   rF   r   rQ   r   r   r   one_node_graph{   s   r]   c                  C   sB   t  } | ddg | dg d| jd d< d| jd d< | S )Nr    r   r    r   r7   r   r"   r   rE   rF   rH   r   rQ   r   r   r   r      s   r   c                  C   sR   t  } | g d | g d d| jd d< d| jd d< d| jd	 d< | S )
Nr    r   r2   )r^   )r    r2   r1   r7   r    r   r"   r   r4   r2   r_   rQ   r   r   r   three_node_clique   s   ra   c                  C   sD   t  } | g d d| jd d< d| jd d< d| jd d< | S )	Nr`   r7   r    r   r"   r   r4   r2   r\   rQ   r   r   r   r$      s   r$   c                  C   sn   t  } | g d d| jd d< d| jd d< d| jd d< d	| jd
 d< d| jd d< d| jd d< | S )N)r^   r1   r>   r@   r7   r    r   r"   r   r4   r2   d   r3      2   r?   )r   rE   rH   r   rQ   r   r   r   disconnected   s   re   )r   r   )r7   r    )r!   r   )#   r2   )r"   r    )i,  r   )__doc__r   networkxr   r   r   r[   r]   r   ra   r$   re   r   r   r   r   r   <module>   s$    S	
	