ó
    ™“,jS&  ã                   ó<   • S SK r S SKr " S S5      r " S S5      rg)é    Nc                   óÄ  • \ rS rSr\R
                  R                  S\R                  " 5       \R                  " 5       /5      S 5       r
S rS r\R
                  R                  S\R                  \R                  /5      \R
                  R                  S/ SQ5      S	 5       5       rS
 r\R
                  R                  SS// SQS4/ SQS4/5      S 5       rS rS rSrg)ÚTestImmediateDominatorsé   ÚGc                 ó¬   • [         R                  " [        R                  SS9   [        R                  " US5        SSS5        g! , (       d  f       g= f)z?Check that `immediate_dominators` raises for undirected graphs.únot implemented for undirected©Úmatchr   N)ÚpytestÚraisesÚnxÚNetworkXNotImplementedÚimmediate_dominators©Úselfr   s     Ú¶C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\networkx/algorithms/tests/test_dominance.pyÚtest_raises_undirectedÚ.TestImmediateDominators.test_raises_undirected   s>   € ô �]Š]Ü×%Ñ%Ð-Nó
ô ×#Ò# A qÔ)÷
÷ 
ö 
úó   ¤AÁ
Ac                 óò   • [         R                  " S[         R                  S9n[        R                  " [         R
                  SS9   [         R                  " US5        SSS5        g! , (       d  f       g= f)zJCheck that `immediate_dominators` raises when `start` is not in the graph.é   ©Úcreate_usingúnot in Gr	   N)r   Úempty_graphÚDiGraphr   r   ÚNetworkXErrorr   r   s     r   Útest_raises_nodeÚ(TestImmediateDominators.test_raises_node   sG   € ä�NŠN˜1¬2¯:©:Ñ6ˆÜ�]Š]œ2×+Ñ+°;Ó?Ü×#Ò# A qÔ)÷ @×?Ö?úó   ÁA(Á(
A6c                 óè   • [         R                  " 5       nUR                  S5        [         R                  " US5      0 :X  d   eUR	                  SS5        [         R                  " US5      0 :X  d   eg ©Nr   )r   r   Úadd_noder   Úadd_edger   s     r   Útest_singletonÚ&TestImmediateDominators.test_singleton   s\   € Ü�JŠJ‹LˆØ	�
‰
�1ŒÜ×&Ò& q¨!Ó,°Ó2Ð2Ð2Ø	�
‰
�1�aÔÜ×&Ò& q¨!Ó,°Ó2Ð2Ñ2ó    ÚgenÚn©é   é
   é   c                 ó¼   • U" U[         R                  " 5       S9n[         R                  " US5      nU[        SU5       Vs0 s H  oUUS-
  _M
     sn:X  d   egs  snf )zBCheck `immediate_dominators` is correct for path and cycle graphs.r   r   r   N)r   r   r   Úrange)r   r(   r)   r   ÚidomÚis         r   Útest_path_and_cycleÚ+TestImmediateDominators.test_path_and_cycle   sT   € ñ �¤§
¢
£Ñ-ˆÜ×&Ò& q¨!Ó,ˆØ¬%°°1¬+Ó6ª+ Q˜1˜q™5š©+Ñ6Ó6Ð6Ñ6ùÒ6s   ÁAc                 óÜ   • Sn[         R                  " U[         R                  " 5       S9n[         R                  " US5      nU[	        SU5       Vs0 s H  oDUS-
  _M
     sn:X  d   eg s  snf )Nr+   r   r   é   )r   Ú
path_graphr   r   r/   )r   r)   r   r0   r1   s        r   Útest_unreachableÚ(TestImmediateDominators.test_unreachable$   s[   € ØˆÜ�MŠM˜!¬"¯*ª*«,Ñ7ˆÜ×&Ò& q¨!Ó,ˆØ¬%°°1¬+Ó6ª+ Q˜1˜q™5š©+Ñ6Ó6Ð6Ñ6ùÒ6s   ÁA)ÚedgelistÚstart©©r   r5   ©r5   r   ©é   r5   )é   r   )r+   r?   )r+   r@   r+   ©	r<   r=   ©r5   r?   r>   )r@   r5   )r@   r?   )r+   r   ©r   r@   )r   r+   c                 ó¨   • [         R                  " U5      n[         R                  " X25      nU[        R	                  [        SU5      U5      :X  d   eg)zµ
Check `immediate_dominators` on irreducible reference graphs.

Graphs taken from figures 2 and 4 of "A simple, fast dominance algorithm." (2006).
https://hdl.handle.net/1911/96345
r   N)r   r   r   ÚdictÚfromkeysr/   )r   r9   r:   r   r0   s        r   Útest_irreducibleÚ(TestImmediateDominators.test_irreducible*   sA   € ô6 �JŠJ�xÓ ˆÜ×&Ò& qÓ0ˆØ”t—}‘}¤U¨1¨e£_°eÓ<Ó<Ð<Ñ<r'   c                 óæ   • / SQn[         R                  " U5      n[         R                  " US5      nU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	.:X  d   eg )
N©r<   rB   )r5   r@   )r5   r   )r?   r+   ©r@   r+   )r+   r5   r   r5   )r5   r?   r@   r+   r   F©Úcopyr   r+   ©r   r5   r?   r@   r+   ©r   r   r   Úreverse©r   Úedgesr   Úresults       r   Útest_domrel_pngÚ'TestImmediateDominators.test_domrel_pngI   sv   € âHˆÜ�JŠJ�uÓˆÜ×(Ò(¨¨AÓ.ˆØ˜Q 1¨¨q°QÑ7Ó7Ð7Ð7ä×(Ò(¨¯©¸¨Ð)>ÀÓBˆØ˜Q 1¨¨q°QÑ7Ó7Ð7Ñ7r'   c           	      óî   • / SQn[         R                  " U5      n[         R                  " US5      nU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.:X  d   eg )N©	)r   r   r<   )r   r?   )r5   é   )r?   r@   rK   )r@   r   )r+   rX   rC   r   r   r?   r@   )r   r5   r?   r@   r+   r   rX   FrL   rX   r+   )r   r   r5   r?   r@   r+   r   rO   rQ   s       r   Útest_boost_exampleÚ*TestImmediateDominators.test_boost_exampleS   s�   € ò YˆÜ�JŠJ�uÓˆÜ×(Ò(¨¨AÓ.ˆØ˜Q 1¨¨q°Q¸1ÀÑCÓCÐCÐCä×(Ò(¨¯©¸¨Ð)>ÀÓBˆØ˜Q 1¨¨q°Q¸1ÀÑCÓCÐCÑCr'   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   ÚmarkÚparametrizer   ÚGraphÚ
MultiGraphr   r   r%   r6   Úcycle_graphr2   r7   rG   rT   rY   Ú__static_attributes__r[   r'   r   r   r      sä   † Ø‡[�[×Ñ˜S 2§8¢8£:¨r¯}ª}«Ð"?Ó@ñ*ó Að*ò*ò3ð ‡[�[×Ñ˜U R§]¡]°B·N±NÐ$CÓDØ‡[�[×Ñ˜S¢+Ó.ñ7ó /ó Eð7ò7ð ‡[�[×ÑØ	�WÐâ=¸qÐAò
ð ðð	
óñ(	=ó)ð(	=ò8õ	Dr'   r   c                   ó   • \ rS rSr\R
                  R                  S\R                  " 5       \R                  " 5       /5      S 5       r
S rS r\R
                  R                  S\R                  \" 5       4\R                  S14/5      \R
                  R                  S/ S	Q5      S
 5       5       rS rS rS rS rS rS rS rS rS rSrg)ÚTestDominanceFrontiersé_   r   c                 ó¬   • [         R                  " [        R                  SS9   [        R                  " US5        SSS5        g! , (       d  f       g= f)z>Check that `dominance_frontiers` raises for undirected graphs.r   r	   r   N)r   r   r   r   Údominance_frontiersr   s     r   r   Ú-TestDominanceFrontiers.test_raises_undirected`   s>   € ô �]Š]Ü×%Ñ%Ð-Nó
ô ×"Ò" 1 aÔ(÷
÷ 
ö 
úr   c                 óò   • [         R                  " S[         R                  S9n[        R                  " [         R
                  SS9   [         R                  " US5        SSS5        g! , (       d  f       g= f)zICheck that `dominance_frontiers` raises when `start` is not in the graph.r   r   r   r	   N)r   r   r   r   r   r   rj   r   s     r   r   Ú'TestDominanceFrontiers.test_raises_nodeh   sG   € ä�NŠN˜1¬2¯:©:Ñ6ˆÜ�]Š]œ2×+Ñ+°;Ó?Ü×"Ò" 1 aÔ(÷ @×?Ö?úr    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S10:X  d   eg r"   )r   r   r#   rj   Úsetr$   r   s     r   r%   Ú%TestDominanceFrontiers.test_singletonn   sh   € Ü�JŠJ‹LˆØ	�
‰
�1ŒÜ×%Ò% a¨Ó+°´3³5¨zÓ9Ð9Ð9Ø	�
‰
�1�aÔÜ×%Ò% a¨Ó+°°A°3¨xÓ7Ð7Ñ7r'   zgen, dfr   r)   r*   c                 ó¬   • U" U[         R                  " 5       S9n[         R                  " US5      [        R	                  [        U5      U5      :X  d   eg)zFCheck that `dominance_frontiers` is correct for path and cycle graphs.r   r   N)r   r   rj   rE   rF   r/   )r   r(   Údfr)   r   s        r   r2   Ú*TestDominanceFrontiers.test_path_and_cycleu   s@   € ñ �¤§
¢
£Ñ-ˆÜ×%Ò% a¨Ó+¬t¯}©}¼UÀ1»XÀrÓ/JÓJÐJÑJr'   c                 óÞ   • Sn[         R                  " U[         R                  " 5       S9n[         R                  " US5      [        R                  [        SU5      [        5       5      :X  d   eg )Nr+   r   r   )r   r6   r   rj   rE   rF   r/   ro   )r   r)   r   s      r   r7   Ú'TestDominanceFrontiers.test_unreachable|   sK   € ØˆÜ�MŠM˜!¬"¯*ª*«,Ñ7ˆÜ×%Ò% a¨Ó+¬t¯}©}¼UÀ1Àa»[Ì#Ë%Ó/PÓPÐPÑPr'   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)zn
Graph taken from figure 2 of "A simple, fast dominance algorithm." (2006).
https://hdl.handle.net/1911/96345
r;   r+   r5   r   rN   N©r   r   rj   ro   ©r   rR   r   s      r   Útest_irreducible1Ú(TestDominanceFrontiers.test_irreducible1�   sU   € ò
 AˆÜ�JŠJ�uÓˆÜ×%Ò% 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)zn
Graph taken from figure 4 of "A simple, fast dominance algorithm." (2006).
https://hdl.handle.net/1911/96345
rA   r   r5   r   r?   ©r   r5   r?   r@   r+   r   Nrw   rx   s      r   Útest_irreducible2Ú(TestDominanceFrontiers.test_irreducible2�   s^   € ò
 YˆÜ�JŠJ�uÓˆÜ×%Ò% a¨Ó+ØˆsØ�1ˆvØˆsØ�1ˆvØˆ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 )	NrJ   r   r5   r+   r|   FrL   r   ©r   r   rj   ro   rP   rQ   s       r   rT   Ú&TestDominanceFrontiers.test_domrel_png    s�   € âHˆÜ�JŠJ�uÓˆÜ×%Ò% a¨Ó+Ü‹uØˆsØˆsØˆsØˆsÜ‹uñ0
ó 
ð 	
ð 
ô ×'Ò'¨¯	©	°u¨	Ð(=¸qÓAˆØœS›U¨ s°¨s¸°sÀ¸sÄsÃuÑ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 )	NrW   r   rX   r@   )r   r   r5   r?   r@   r+   r   rX   FrL   r   r€   )r   rR   r   rS   Úexpecteds        r   rY   Ú)TestDominanceFrontiers.test_boost_example°   sÄ   € ò YˆÜ�JŠJ�uÓˆÜ×%Ò% a¨Ó+Ü‹uÜ‹uØˆsØˆsØ�1ˆvØˆsØˆsÜ‹uñ	0
ó 	
ð 		
ð 	
ô ×'Ò'¨¯	©	°u¨	Ð(=¸qÓAˆä‹uÜ‹uØˆsØˆsØ�1ˆvØˆ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_fromrj   ro   ©r   Úgrr   s      r   Útest_discard_issueÚ)TestDominanceFrontiers.test_discard_issueÍ   sx   € ä�JŠJ‹LˆØ	×Ñòô	
ô ×#Ò# A tÓ,ˆØÜ“%Ø�&Ø�&Ø�&Ü“%Ø�&Ø�&Ø�&Ø�&ñ

ó 

ð 
	
ñ 

r'   c                 ó®   • [         R                  " 5       nUR                  / SQ5        [         R                  " US5      nUS1S1[	        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   € Ü�JŠJ‹LˆØ	×ÑÒ=Ô>Ü×#Ò# A sÓ+ˆØ˜C˜5¨ u´3³5Ñ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’   rj   )r   r”   rR   s      r   Útest_missing_immediate_domsÚ2TestDominanceFrontiers.test_missing_immediate_domsò   s6   € ä�JŠJ‹Lˆò
ˆð$ 	
×Ñ˜Ôô 	×Ò˜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”   rR   rr   Úanswerr)   s         r   Útest_loops_largerÚ(TestDominanceFrontiers.test_loops_larger  s‹   € ô �JŠJ‹Lˆò
ˆð 	
×Ñ˜ÔÜ×#Ò# A wÓ/ˆä“UØ�Ø˜#�Ú#Ú(Ú#Ø˜#�Ü“Eñ	
ˆó ˆAÜ�r‘u“:¤ V¡Y£Õ/Ð/Ð/ò r'   r[   N)r\   r]   r^   r_   r   r`   ra   r   rb   rc   r   r   r%   r6   ro   rd   r2   r7   ry   r}   rT   rY   r•   r›   r¡   r¬   re   r[   r'   r   rg   rg   _   sÎ   † Ø‡[�[×Ñ˜S 2§8¢8£:¨r¯}ª}«Ð"?Ó@ñ)ó Að)ò)ò8ð ‡[�[×Ñ˜Y¨"¯-©-¹»Ð)?À"Ç.Á.ÐSTÐRUÐAVÐ(WÓXØ‡[�[×Ñ˜S¢+Ó.ñKó /ó YðKò
Qò

ò
ò Nò "ò:
ò>:ò-õ40r'   rg   )r   Únetworkxr   r   rg   r[   r'   r   Ú<module>r¯      s&   ðÛ ã ÷VDñ VD÷rL0ò L0r'   