
    sh#                     <    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     |/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/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      [        R	                  [        SS5      S5      :X  d   eg)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   dictfromkeysr&   r   edgesr   s      r   test_irreducible1)TestImmediateDominators.test_irreducible1)   sD    
 AJJu&&q!,eAqk10MMMMr   c                     / SQn[         R                  " U5      n[         R                  " US5      nU[        R	                  [        SS5      S5      :X  d   eg)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   rC   r   results       r   test_irreducible2)TestImmediateDominators.test_irreducible22   sI     YJJu((A.uQ{A6666r   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:   rI   )r4   r>   )r4   r   )r=   r!   r>   r!   )r!   r4   r   r4   r   r4   r=   r>   r!   r   Fcopyr   r!   r	   r   r   reverserL   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   rK   )r=   r>   rR   )r>   r   )r!   rK   rJ   r   r   r=   r>   r   r   r4   r=   r>   r!   r   rK   FrT   rK   r!   rV   rL   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   rD   rN   rX   r]   __static_attributes__r_   r   r   r   r      s4    G7U
U

N	7>	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   ri   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   ri   r&   rl   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 ro   )r	   r/   r   ri   r&   rl   r(   s       r   r0   !TestDominanceFrontiers.test_cyclei   sR    NN12::<8%%a+%(/K(Q35(/KKKK/Krr   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   rp   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      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   ri   rl   rB   s      r   rD   (TestDominanceFrontiers.test_irreducible1t   sU    
 AJJu%%a+ssssu0
 
 	
 
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)rG   rH   r   r4   r   r=   rS   Nrx   rB   s      r   rN   (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 )	NrQ   r   r4   r!   rS   FrT   r   r	   r   ri   rl   rW   rL   s       r   rX   &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 )	Nr[   r   rK   r>   r\   FrT   r   r}   )r   rC   r   rM   expecteds        r   r]   )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_fromri   rl   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   ri   )r   r   rC   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   rC   r   answerr)   s         r   test_loops_larger(TestDominanceFrontiers.test_loops_larger   s     JJL
 	
##Aw/U##(##E	
 Aru:VY/// r   r_   N)r`   ra   rb   rc   r   r   r+   r0   r5   rD   rN   rX   r]   r   r   r   r   rd   r_   r   r   rf   rf   S   sH    F:L
L
Y

 N ":
>:-40r   rf   )r   networkxr	   r   rf   r_   r   r   <module>r      s&     JJ JJZK0 K0r   