o
    3ήc/                     @   s   d dl Z d dlZd dlm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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d)d* ZdS )+    N)edges_equalc                  C   s   t  } | jddd | jddd | jdddd d| jd< |  }d	|jd< d
|jd
< d|jd d< t j| |dd}t| h dksHJ |D ]}|\}}|j| t	|jt
| ks`J qJ|jd
 d
ksjJ |jd d	kssJ d S )Nr      x      sizegnamehattr   r   r
   r   rename>   g0g1h0h1)nxGraphadd_nodeadd_edgegraphcopynodesunionsetevalint)r
   r   ghnr   node r$   V/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/operators/tests/test_binary.pytest_union_attributes   s    


"r&   c                  C   s   t  } t  }| g d | dd | dd |g d |dd |dd t | |}t| h dks@J t| dgksKJ d S )Nr         r   r   r(   r)   r      r   r(   r)   r   r(   r)   	r   r   add_nodes_fromr   intersectionr   r   sortededgesGHIr$   r$   r%   test_intersection   s   r5   c                  C   s   t  } t  }| g d | dd | dd |g d |dd |dd |dd t | |}t| h d	ksFJ t| d
gksQJ d S )N)r   r(   r)   r   r   r   r(   r)   )r   r(   r)   r   r      r   r   r6   r*   r+   r,   r1   r$   r$   r%   %test_intersection_node_sets_different+   s   r7   c                  C   s   t  } | jddd | jddd | jdddd d| jd< |  }d	|jd< d
|jd
< d|jd d< t | |}t| t|  ksHJ t| t| ksVJ t	|
 t	| 
 ksdJ d S Nr   r   r   r   r   r   r
   r   r   r   r   r   )r   r   r   r   r   r   r   r.   r   r/   r0   r
   r   r!   r$   r$   r%   test_intersection_attributes:   s   


 r:   c                  C   s   t  } | jddd | jddd | jddd | jdddd d	| jd
< |  }d|jd
< d|jd< d|jd d< |d t | |}t	| t	| ksTJ t
| t
|  ksbJ d S )Nr   r   r   r   r   r(   r)   r   r
   r   r   r   r   r   )r   r   r   r   r   r   r   remove_noder.   r   r/   r0   r9   r$   r$   r%   0test_intersection_attributes_node_sets_differentL   s   



 r<   c                  C   s   t  } | jdddd | jdddd | jdddd t  }|jdddd |jdddd t | |}t| t|  ksDJ t| t| ksRJ t| dgks]J t|jddd	gksjJ d S 
Nr   r   keyr(   r)   r   r   Tkeys)r   r   r   r   
MultiGraphr   r.   r   r   r/   r0   r9   r$   r$   r%   'test_intersection_multigraph_attributes_   s   rE   c                  C   s   t  } | jdddd | jdddd | jdddd | jdddd | jdddd t  }|jdddd |jdddd t | |}t| t| ksTJ t| dgks_J t|jddd	gkslJ d S r=   rC   r9   r$   r$   r%   :test_intersection_multigraph_attributes_node_set_differentn   s   rF   c                  C   s  t  } t  }| g d | dd | dd |g d |dd |dd t | |}t| h dks@J t| dgksKJ t || }t| h dks]J t| dgkshJ t 	| |}t| h dkszJ t| ddgksJ d S )	Nr'   r   r(   r)   r   r*   )r   r(   r)   r   )
r   r   r-   r   
differencer   r   r/   r0   symmetric_differencer2   r3   Dr$   r$   r%   test_difference~   s"   rL   c                  C   s  t  } t  }| g d |g d | dd |dd | dd t | |}t| h dks:J t| dgksEJ t || }t| h dksWJ t| g ksaJ |dd t || }t| h dksyJ t| dgksJ d S )	Nr'   r   r(   r)   r*   r+   r   rG   )	r   r   r-   r   rH   r   r   r/   r0   rJ   r$   r$   r%   test_difference2   s"   rM   c                  C   s   t  } | jddd | jddd | jdddd d| jd< |  }d	|jd< d
|jd
< d|jd d< t | |}t| t|  ksHJ t| t| ksVJ t	|
 g ks`J d S r8   )r   r   r   r   r   r   r   rH   r   r/   r0   r9   r$   r$   r%   test_difference_attributes   s   


rN   c                  C   s   t  } | jdddd | jdddd | jdddd t  }|jdddd |jdddd t | |}t| t|  ksDJ t| t| ksRJ t| ddgks^J t|jddd	d
gkslJ d S )Nr   r   r>   r(   r)   r@   TrA   r   r   r   r   r   r(   )r   rD   r   rH   r   r   r/   r0   r9   r$   r$   r%   %test_difference_multigraph_attributes   s    rQ   c                  C   s@   t d} t d}tt jt j| | tt jt j| | d S )Nr   r)   )r   
path_graphpytestraisesNetworkXErrorrH   rI   r2   r3   r$   r$   r%   test_difference_raise   s   

rW   c                  C   s   t  } | jdddd | jdddd | jdddd t  }|jdddd |jdddd t | |}t| t|  ksDJ t| t| ksRJ t| ddg ks_J tdd |jd	d
D g dg dg dgksyJ d S )Nr   r   r>   r(   r)   r@   c                 s   s    | ]}t |V  qd S N)r/   ).0er$   r$   r%   	<genexpr>   s    z7test_symmetric_difference_multigraph.<locals>.<genexpr>TrA   rO   rP   )r   r   r)   )r   rD   r   rI   r   r   r/   r0   r9   r$   r$   r%   $test_symmetric_difference_multigraph   s    r\   c            
      C   sp  t d} t d}t  }|dd |dd |dd t  }|dd |dd |dd	 t ||}t ||}t| | sMJ |	dd
rUJ t
t jt j| | t j||dd}t| g dkssJ t j||dd}t| g dksJ |	ddrJ t ||}t| | sJ t j||dd}t| g dksJ t|dg ksJ t|dg dksJ t|dksJ t |dksJ t ||}t|dksJ t |dksJ t ||}t| g dksJ t  }t  }|d
dd
ifg |d
dd
ifg t ||}	|	jd
d
d
diks6J d S )Nr)   ABCrK   1234r   )r3   G1r   )G1AG1BG1CG1DH1H2H3H4HAHBHCHD)r3    )r`   ra   rb   rc   ri   rj   rk   rl   rm   rn   ro   rp   NBNA)rq   r   )r`   ra   rb   rc   copy1copy2copy3copy4rw   rt   )ru   rv   rw      r6         )r   r   r(   r)   r   r   r6   r   rx   	   
      a1b1)r~   r   )r   complete_graphrR   DiGraphr   r   composer   r0   has_edgerS   rT   rU   r/   r   	neighborslennumber_of_edgesdisjoint_unionr   r-   )
K3P3rd   G2r2   r3   ri   rj   ERr$   r$   r%   test_union_and_compose   sN   

r   c                  C   s   t  } | jdddd | jdddd t  }|jdddd |jdddd t | |}t|t| t|B ks<J t|jddt| jddt|jddB ksVJ d S 	Nr   r(   r   r>   r)   r   TrA   )r   rD   r   r   r   r0   r2   r3   GHr$   r$   r%   test_union_multigraph8     8r   c                  C   s   t  } | jdddd | jdddd t  }|jdddd |jdddd t | |}t|t| t|B ks<J t|jddt| jddt|jddB ksVJ d S )Nr   r   r>   r(   r)   TrA   )r   rD   r   r   r   r0   r   r$   r$   r%   test_disjoint_union_multigraphD  r   r   c                  C   s  t  } | jdddd | jdddd t  }|jdddd |jdddd t | |}t|t| t|B ks<J t|jddt| jddt|jddB ksVJ |jdddd t | |}t|t| t|B ksrJ t|jddt| jddt|jddB ksJ d S r   )r   rD   r   r   r   r0   r   r$   r$   r%   test_compose_multigraphP  s   48r   c                  C   s  t  } | d | dd t  }|dd t | |}t|t| t|B ks-J t|t| t| ks;J t| t|  t|  t| t|  ksWJ t j| |dd}t|h dksiJ t|t| t| kswJ t| t|  t|  t| t|  ksJ t  } | d	 | d
d t  }|dd t j| |dd}t|h dksJ t|t| t| ksJ t| t|  t|  t| t|  ksJ t  } | d | dd t  }|dd t | |}t|t| t|B ksJ t|t| t| ks%J t| t|  t|  t| t| d  ksDJ t j| |dd}t|h dksWJ t|t| t| ksfJ t| t|  t|  t| t| d  ksJ d S )Nr   r   r(   r)   r   r   r   >   r   r   g2h3h4abcdrZ   >   gagbgchdhe)	r   r   r   r   	full_joinr   r   r0   r   r2   r3   Ur$   r$   r%   test_full_join_graph`  sF   
88
8
>Br   c                  C   s\  t  } | d | dd t  }|dd t | |}t|t| t|B ks-J t|t| t| ks;J t| t|  t|  t| t|  ksWJ t j| |dd}t|h dksiJ t|t| t| kswJ t| t|  t|  t| t|  ksJ t  } | d | dd t  }|dd t | |}t|t| t|B ksJ t|t| t| ksJ t| t|  t|  t| t| d  ksJ t j| |dd}t|h dksJ t|t| t| ksJ t| t|  t|  t| t| d  ks,J d S )	Nr   r   r(   r)   r   r   r   >   r   r   r   r   r   )	r   rD   r   r   r   r   r   r0   MultiDiGraphr   r$   r$   r%   test_full_join_multigraph  s4   
88
<Br   c                  C   s   t  } t  }tt jt j| | tt jt j| | tt jt j| | tt jt j	| | tt jt j
| | tt jt j| | d S rX   )r   r   rD   rS   rT   rU   r   r   r.   rH   rI   r   rV   r$   r$   r%   test_mixed_type_union  s   r   )rS   networkxr   networkx.utilsr   r&   r5   r7   r:   r<   rE   rF   rL   rM   rN   rQ   rW   r\   r   r   r   r   r   r   r   r$   r$   r$   r%   <module>   s.    W2&