
    Vh                     F    d dl mZ d dlZd dlmZmZ d Zd Zd Z	d Z
d Zy)	    )chainN)edges_equalnodes_equalc                     t        j                  ||      }t        |j                               }d | D        }t        t	        j
                  |            }||k(  S )Nc              3   &   K   | ]	  \  }}|  y wN ).0treeroots      ^/home/dcms/DCMS/lib/python3.12/site-packages/networkx/algorithms/tree/tests/test_operations.py	<genexpr>z0_check_custom_label_attribute.<locals>.<genexpr>
   s     6JD$46s   )nxget_node_attributessetvaluesr   from_iterable)input_treesres_treelabel_attributeres_attr_dictres_attr_setinput_labelinput_label_sets          r   _check_custom_label_attributer      sQ    **8_EM}++-.L6+6K%--k:;O?**    c                  x    t        j                  g       } t        |       dk(  sJ | j                         dk(  sJ y)z=Joining the empty sequence results in the tree with one node.   r   N)r   
join_treeslennumber_of_edges)Ts    r   test_empty_sequencer#      s7    
bAq6Q;;!###r   c                  H   t        j                  d      } | dfg}t        j                  |d      }t        j                  d      }t	        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y)z7Joining just one tree yields a tree with one more node.r   r   custom_labelr      N)r   empty_graphr   
path_graphr   listr   edges)r"   treesactual_with_labelexpecteds       r   test_singler/      s    
qAVHEe^L}}QHtH~t,='>???tHNN,-t4E4K4K4M/NOOOr   c                     t        d      D  cg c]  } t        j                  dd      df }} t        j                  dd      }t        j                  |d      }t        j                  ||      sJ t        ||d      sJ t        j                  |      }t        j                  ||      sJ t        d |j                  d	      D              sJ y
c c} w )z)Joining multiple subtrees at a root node.r'      r      
old_labelsr&   c              3   (   K   | ]
  \  }}|   y wr   r	   )r
   _datas      r   r   ztest_basic.<locals>.<genexpr>+   s     MGAt4xMs   T)r6   N)ranger   full_rary_treer   is_isomorphicr   allnodes)ir,   r.   actualactual_without_labels        r   
test_basicr?       s    :?(CQb8,a0CEC  H-H]]5,?FFH---(EEE==/0(;;;M';'A'At'A'LMMMM Ds   Cc                  :   t        j                  d      } t        j                  d      }t        j                  | df|dfgd      }t        t	        dd            }t        |j                               |k(  sJ t        |j                  d            ddhk(  sJ y	)
z3Test the functionality of the first_label argument.r1   r'   r   
   )first_label         N)r   r)   r   r   r7   r;   	neighbors)T1T2r=   expected_nodess       r   test_first_labelrJ   .   s    	q	B	q	B]]RGb!W-2>Fr2'Nv||~.000v#$R000r   )	itertoolsr   networkxr   networkx.utilsr   r   r   r#   r/   r?   rJ   r	   r   r   <module>rN      s)      3+$PN1r   