
    h#                     <    S SK r S SKr " S S5      r " S S5      rg)    Nc                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)TestImmediateDominators   c                    [         R                  " 5       nUR                  S5        [        R                  " [         R
                  [         R                  US5        [         R                  " U5      n[        R                  " [         R
                  [         R                  US5        [         R                  " SS//5      n[        R                  " [         R                  [         R                  US5        g Nr      )
nxGraphadd_nodepytestraisesNetworkXNotImplementedimmediate_dominators
MultiGraphDiGraphNetworkXErrorselfGs     Z/var/www/html/env/lib/python3.13/site-packages/networkx/algorithms/tests/test_dominance.pytest_exceptions'TestImmediateDominators.test_exceptions   s    HHJ	

1b//1H1H!QOMM!b//1H1H!QOJJAx b&&(?(?AF    c                     [         R                  " 5       nUR                  S5        [         R                  " US5      SS0:X  d   eUR	                  SS5        [         R                  " US5      SS0:X  d   eg Nr   )r	   r   r   r   add_edger   s     r   test_singleton&TestImmediateDominators.test_singleton   sd    JJL	

1&&q!,A666	

1a&&q!,A666r   c           	          Sn[         R                  " U[         R                  " 5       S9n[         R                  " US5      [	        U5       Vs0 s H  o3[        US-
  S5      _M     sn:X  d   eg s  snf N   create_usingr   r   r	   
path_graphr   r   rangemaxr   nr   is       r   	test_path!TestImmediateDominators.test_path   s\    MM!"**,7&&q!,5QR80T8aCAqM1A80TTTT0T   A0c           	          Sn[         R                  " U[         R                  " 5       S9n[         R                  " US5      [	        U5       Vs0 s H  o3[        US-
  S5      _M     sn:X  d   eg s  snf r    )r	   cycle_graphr   r   r&   r'   r(   s       r   
test_cycle"TestImmediateDominators.test_cycle   s\    NN12::<8&&q!,5QR80T8aCAqM1A80TTTT0Tr-   c           
         SnUS:  d   e[         R                  " U[         R                  " 5       S9n[         R                  " X!S-  5      [	        US-  U5       Vs0 s H  o3[        US-
  US-  5      _M     sn:X  d   eg s  snf Nr!   r   r"      r$   r(   s       r   test_unreachable(TestImmediateDominators.test_unreachable!   s    1uuMM!"**,7&&qq&1+0a+;6
+;as1q5!q&!!+;6
 
 	
 
 6
s   Bc                     / SQn[         R                  " U5      n[         R                  " US5      [        SS5       Vs0 s H  o3S_M     sn:X  d   egs  snf )n
Graph taken from figure 2 of "A simple, fast dominance algorithm." (2006).
https://hdl.handle.net/1911/96345
r   r4   r4   r      r4   )   r   )r!   r=   )r!   r>   r!   r   r   Nr	   r   r   r&   )r   edgesr   r*   s       r   test_irreducible1)TestImmediateDominators.test_irreducible1)   sM    
 AJJu&&q!,uQ{0K{!A{0KKKK0Ks   Ac                     / SQn[         R                  " U5      n[         R                  " US5      nU[        SS5       Vs0 s H  oDS_M     sn:X  d   egs  snf )n
Graph taken from figure 4 of "A simple, fast dominance algorithm." (2006).
https://hdl.handle.net/1911/96345
	r:   r;   r4   r=   r<   )r>   r4   )r>   r=   )r!   r   r   r>   )r   r!   r   r      Nr?   )r   r@   r   resultr*   s        r   test_irreducible2)TestImmediateDominators.test_irreducible22   sR     YJJu((A.a41Q$44444s   Ac                     / SQn[         R                  " U5      n[         R                  " US5      nUSSSSSSS.:X  d   e[         R                  " UR                  SS9S5      nUSSSSSSS.:X  d   eg )	Nr:   rF   )r4   r>   )r4   r   )r=   r!   r>   r!   )r!   r4   r   r4   r   r4   r=   r>   r!   r   Fcopyr   r!   r	   r   r   reverser   r@   r   rI   s       r   test_domrel_png'TestImmediateDominators.test_domrel_png=   sz    HJJu((A.Q1qQ1====(()>BQ1qQ1====r   c           
          / SQn[         R                  " U5      n[         R                  " US5      nUSSSSSSSSS.:X  d   e[         R                  " UR                  SS9S	5      nUSS	S	SS
S	SS	S.:X  d   eg )N	)r   r   r:   )r   r=   )r4   rH   )r=   r>   rN   )r>   r   )r!   rH   rG   r   r   r=   r>   r   r   r4   r=   r>   r!   r   rH   FrP   rH   r!   rR   rT   s       r   test_boost_example*TestImmediateDominators.test_boost_exampleG   s     YJJu((A.Q1qQ1qIIII(()>BQ1qQ1qIIIIr    N)__name__
__module____qualname____firstlineno__r   r   r+   r0   r5   rA   rJ   rU   rZ   __static_attributes__r\   r   r   r   r      s4    G7U
U

L	5>	Jr   r   c                   b    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)TestDominanceFrontiersS   c                    [         R                  " 5       nUR                  S5        [        R                  " [         R
                  [         R                  US5        [         R                  " U5      n[        R                  " [         R
                  [         R                  US5        [         R                  " SS//5      n[        R                  " [         R                  [         R                  US5        g r   )
r	   r
   r   r   r   r   dominance_frontiersr   r   r   r   s     r   r   &TestDominanceFrontiers.test_exceptionsT   s    HHJ	

1b//1G1GANMM!b//1G1GANJJAx b&&(>(>1Er   c                    [         R                  " 5       nUR                  S5        [         R                  " US5      S[	        5       0:X  d   eUR                  SS5        [         R                  " US5      S[	        5       0:X  d   eg r   )r	   r   r   rf   setr   r   s     r   r   %TestDominanceFrontiers.test_singleton]   sh    JJL	

1%%a+35z999	

1a%%a+35z999r   c                     Sn[         R                  " U[         R                  " 5       S9n[         R                  " US5      [	        U5       Vs0 s H  o3[        5       _M     sn:X  d   eg s  snf Nr!   r"   r   r	   r%   r   rf   r&   ri   r(   s       r   r+    TestDominanceFrontiers.test_pathd   sR    MM!"**,7%%a+%(/K(Q35(/KKKK/K   A+c                     Sn[         R                  " U[         R                  " 5       S9n[         R                  " US5      [	        U5       Vs0 s H  o3[        5       _M     sn:X  d   eg s  snf rl   )r	   r/   r   rf   r&   ri   r(   s       r   r0   !TestDominanceFrontiers.test_cyclei   sR    NN12::<8%%a+%(/K(Q35(/KKKK/Kro   c                     SnUS:  d   e[         R                  " U[         R                  " 5       S9n[         R                  " X!S-  5      [	        US-  U5       Vs0 s H  o3[        5       _M     sn:X  d   eg s  snf r3   rm   r(   s       r   r5   'TestDominanceFrontiers.test_unreachablen   sj    1uuMM!"**,7%%aa0uQRSVUVGW4XGW!XGW4XXXX4Xs   A9c                     / SQn[         R                  " U5      n[        [         R                  " US5      R	                  5       5      S1S1S1S1[        5       S.:X  d   eg)r8   r9   r!   r4   r   )r   r4   r=   r>   r!   N)r	   r   dictrf   itemsri   r   r@   r   s      r   rA   (TestDominanceFrontiers.test_irreducible1t   sc    
 AJJuB**1a06689ssssu>
 
 	
 
r   c                     / SQn[         R                  " U5      n[         R                  " US5      S1SS1S1SS1S1[        5       S.:X  d   eg)rD   rE   r   r4   r   r=   rO   N)r	   r   rf   ri   rw   s      r   rJ   (TestDominanceFrontiers.test_irreducible2   s^    
 YJJu%%a+s1vs1vsu0
 
 	
 
r   c                 6   / SQn[         R                  " U5      n[         R                  " US5      [        5       S1S1S1S1[        5       S.:X  d   e[         R                  " UR	                  SS9S5      nU[        5       S1S1S1S1[        5       S.:X  d   eg )	NrM   r   r4   r!   rO   FrP   r   r	   r   rf   ri   rS   rT   s       r   rU   &TestDominanceFrontiers.test_domrel_png   s    HJJu%%a+ussssu0
 
 	
 
 ''		u	(=qASUsssssuMMMMr   c           
      h   / SQn[         R                  " U5      n[         R                  " US5      [        5       [        5       S1S1SS1S1S1[        5       S.:X  d   e[         R                  " UR	                  SS9S5      n[        5       [        5       S1S1SS1S1S1[        5       S.nX4:X  d   eg )	NrX   r   rH   r>   rY   FrP   r   r|   )r   r@   r   rI   expecteds        r   rZ   )TestDominanceFrontiers.test_boost_example   s     YJJu%%a+uuss1vssu	0
 	
 		
 	
 ''		u	(=qAuuss1vssu	
 !!!r   c                     [         R                  " 5       nUR                  / SQ5        [         R                  " US5      nU[	        5       S1S1S1[	        5       S1S1S1S1S.	:X  d   eg )N))b0b1r   b2r   b3)r   r   )r   b5)r   b6)r   b8)r   b7)r   r   )r   r   )r   b4r   r   r   r   )	r   r   r   r   r   r   r   r   r   r	   r   add_edges_fromrf   ri   r   gdfs      r   test_discard_issue)TestDominanceFrontiers.test_discard_issue   sx    JJL		
 ##At,%&&&%&&&&

 

 
	
 

r   c                     [         R                  " 5       nUR                  / SQ5        [         R                  " US5      nU[	        5       [	        5       [	        5       S.:X  d   eg )N))ab)r   c)r   r   r   )r   r   r   r   r   s      r   	test_loop TestDominanceFrontiers.test_loop   sI    JJL	=>##As+35su359999r   c                     [         R                  " 5       n/ SQnUR                  U5        [         R                  " US5        g )N))entry_1r   r   r   )r   exit)entry_2r   r   )r	   r   r   rf   )r   r   r@   s      r   test_missing_immediate_doms2TestDominanceFrontiers.test_missing_immediate_doms   s6    JJL
$ 	
 	q),r   c           	          [         R                  " 5       n/ SQnUR                  U5        [         R                  " US5      n[	        5       S1SS11 Sk1 Sk1 SkSS1[	        5       S.nU H!  n[	        X5   5      [	        XE   5      :X  a  M!   e   g )N))entryr   )r   1)r   2)r   3)r   4)r   5)r   6)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@   r   answerr)   s         r   test_loops_larger(TestDominanceFrontiers.test_loops_larger   s     JJL
 	
##Aw/U##(##E	
 Aru:VY/// r   r\   N)r]   r^   r_   r`   r   r   r+   r0   r5   rA   rJ   rU   rZ   r   r   r   r   ra   r\   r   r   rc   rc   S   sH    F:L
L
Y

 N ":
>:-40r   rc   )r   networkxr	   r   rc   r\   r   r   <module>r      s&     JJ JJZK0 K0r   