
    Vh7                         d dl Z  e j                  d        e j                  d       d dlZd dlmZ  G d d      Z G d d      Zy)	    Nnumpyscipy)node_classificationc                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestHarmonicFunctionc                     t        j                  d      }d}d|j                  d   |<   d|j                  d   |<   t        j                  ||      }|d   dk(  sJ |d   dk(  sJ |d	   dk(  sJ |d   dk(  sJ y 
N   labelAr   B   
label_name      nx
path_graphnodesr   harmonic_functionselfGr   	predicteds       b/home/dcms/DCMS/lib/python3.12/site-packages/networkx/algorithms/tests/test_node_classification.pytest_path_graphz$TestHarmonicFunction.test_path_graph   s    MM!
!$
:!$
:'99!
S	|s"""|s"""|s"""|s"""    c                     t        j                  t        j                        5  t        j                  d      }t        j                  |       d d d        y # 1 sw Y   y xY wNr
   )pytestraisesr   NetworkXErrorr   r   r   r   r   s     r   test_no_labelsz#TestHarmonicFunction.test_no_labels   sE    ]]2++, 	5a A11!4	5 	5 	5   +AA!c                     t        j                  t        j                        5  t        j                         }t        j                  |       d d d        y # 1 sw Y   y xY wN)r!   r"   r   r#   Graphr   r   r$   s     r   test_no_nodesz"TestHarmonicFunction.test_no_nodes   sB    ]]2++, 	5
A11!4	5 	5 	5   *AA c                 
   t        j                  t        j                        5  t        j                         }|j                  d       |j                  d       t        j                  |       d d d        y # 1 sw Y   y xY wNr   r   )r!   r"   r   r#   r)   add_noder   r   r$   s     r   test_no_edgesz"TestHarmonicFunction.test_no_edges    sX    ]]2++, 	5
AJJqMJJqM11!4		5 	5 	5   AA99Bc                 ~   t        j                  t        j                        5  t        j                         }|j                  dd       |j                  dd       |j                  dd       d}d|j                  d   |<   d|j                  d   |<   t        j                  |       d d d        y # 1 sw Y   y xY wNr   r   r   r   r   r   r   	r!   r"   r   NetworkXNotImplementedDiGraphadd_edger   r   r   r   r   r   s      r   test_digraphz!TestHarmonicFunction.test_digraph'       ]]2445 	5

AJJq!JJq!JJq! J%(AGGAJz"%(AGGAJz"11!4	5 	5 	5   BB33B<c                     t        j                  d      }d}d|j                  d   |<   t        j                  ||      }|d   dk(  sJ |d   dk(  sJ |d   dk(  sJ |d   dk(  sJ y 	Nr
   r   r   r   r   r   r   r   r   r   s       r   test_one_labeled_nodez*TestHarmonicFunction.test_one_labeled_node2   s    MM!
!$
:'99!
S	|s"""|s"""|s"""|s"""r   c                     t        j                         }d}t        j                  ||      }t	        t        |            D ]  }||   |j                  |   |   k(  rJ  y )Nclubr   )r   karate_club_graphr   r   rangelenr   r   r   r   r   is        r   test_nodes_all_labeledz+TestHarmonicFunction.test_nodes_all_labeled<   s]      "
'99!
S	s1v 	:AQ<1771:j#9999	:r   c                    t        j                         }d}h d}|D ]  }|j                  |   |=  t        j                  ||      }t        t        t        |                  |z
  }|D ]  }||   |j                  |   |   k(  rJ  y )Nr?   >   r   r   r   r   r
            r   )r   r@   r   r   r   setrA   rB   )r   r   r   label_removedrD   r   label_not_removeds          r   "test_labeled_nodes_are_not_changedz7TestHarmonicFunction.test_labeled_nodes_are_not_changedC   s      "
0 	'A
:&	''99!
S	c!f.>" 	:AQ<1771:j#9999	:r   N)__name__
__module____qualname__r   r%   r*   r/   r8   r=   rE   rM    r   r   r   r   
   s*    	#5
5
5	5#:	:r   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestLocalAndGlobalConsistencyc                     t        j                  d      }d}d|j                  d   |<   d|j                  d   |<   t        j                  ||      }|d   dk(  sJ |d   dk(  sJ |d	   dk(  sJ |d   dk(  sJ y r	   r   r   r   r   local_and_global_consistencyr   s       r   r   z-TestLocalAndGlobalConsistency.test_path_graphP   s    MM!
!$
:!$
:'DD*
	 |s"""|s"""|s"""|s"""r   c                     t        j                  t        j                        5  t        j                  d      }t        j                  |       d d d        y # 1 sw Y   y xY wr    )r!   r"   r   r#   r   r   rV   r$   s     r   r%   z,TestLocalAndGlobalConsistency.test_no_labels]   sI    ]]2++, 	@a A<<Q?	@ 	@ 	@r&   c                     t        j                  t        j                        5  t        j                         }t        j                  |       d d d        y # 1 sw Y   y xY wr(   )r!   r"   r   r#   r)   r   rV   r$   s     r   r*   z+TestLocalAndGlobalConsistency.test_no_nodesb   sF    ]]2++, 	@
A<<Q?	@ 	@ 	@r+   c                 
   t        j                  t        j                        5  t        j                         }|j                  d       |j                  d       t        j                  |       d d d        y # 1 sw Y   y xY wr-   )r!   r"   r   r#   r)   r.   r   rV   r$   s     r   r/   z+TestLocalAndGlobalConsistency.test_no_edgesg   s\    ]]2++, 	@
AJJqMJJqM<<Q?		@ 	@ 	@r0   c                 ~   t        j                  t        j                        5  t        j                         }|j                  dd       |j                  dd       |j                  dd       d}d|j                  d   |<   d|j                  d   |<   t        j                  |       d d d        y # 1 sw Y   y xY wr2   r3   r7   s      r   r8   z*TestLocalAndGlobalConsistency.test_digraphn   r9   r:   c                     t        j                  d      }d}d|j                  d   |<   t        j                  ||      }|d   dk(  sJ |d   dk(  sJ |d   dk(  sJ |d   dk(  sJ y r<   rU   r   s       r   r=   z3TestLocalAndGlobalConsistency.test_one_labeled_nodey   s    MM!
!$
:'DD*
	 |s"""|s"""|s"""|s"""r   c                     t        j                         }d}t        j                  |d|      }t	        t        |            D ]  }||   |j                  |   |   k(  rJ  y )Nr?   r   )alphar   )r   r@   r   rV   rA   rB   r   rC   s        r   rE   z4TestLocalAndGlobalConsistency.test_nodes_all_labeled   sd      "
'DDQ:
	 s1v 	:AQ<1771:j#9999	:r   N)
rN   rO   rP   r   r%   r*   r/   r8   r=   rE   rQ   r   r   rS   rS   O   s(    #@
@
@	5
#:r   rS   )r!   importorskipnetworkxr   networkx.algorithmsr   r   rS   rQ   r   r   <module>ra      sE       G    G   3B: B:J=: =:r   