§
    ñ·¦j  ã                   óœ   — d Z ddlZddlmc mZ ddlZddlZddl	m
Z
mZmZmZmZmZmZmZmZ d„ Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ ZdS )ur  
Unit Tests for Atlas Node Selector & Precursor Tower Orchestrator (Doc 56)
==========================================================================
Kiá»ƒm thá»­ cÃ¡c báº¥t biáº¿n kiáº¿n trÃºc:
- INV-ATLAS-01: Safe Hideout Execution
- INV-ATLAS-02: Verified Node Target & Hover Confirmation
- INV-ATLAS-03: Zero Hot-Path Blocking
- INV-ATLAS-04: Zero Wishful Thinking
é    N)	Ú	AtlasNodeÚPrecursorTowerÚAtlasPerceptionEngineÚAtlasStrategyPlannerÚAtlasStrategyConfigÚAtlasNodeSelectorÚATLAS_FLAG_REQUIRE_HOVER_VERIFYÚ!ATLAS_FLAG_SOCKET_PRECURSOR_TOWERÚ#ATLAS_FLAG_AUTO_PROCEED_TO_WAYSTONEc                  óî  — t          dd¬¦  «        } | j        }d}d}d}d} |||||¦  «        }d}||u }|�s	t          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd	t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }	dd|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚d x}x}x}x}x}x}x}}| j        }d}d}d}d} |||||¦  «        }d}||u }|�s	t          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd	t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }	dd|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚d x}x}x}x}x}x}x}}|  
                    dddd¦  «        \  }}d}||k    }|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}d}||k    }|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}d S )Ng      ž@g     à�@)Ú	ref_widthÚ
ref_heightç      Ž@g     à€@T©Úis)zs%(py12)s
{%(py12)s = %(py2)s
{%(py2)s = %(py0)s.is_in_viewport
}(%(py4)s, %(py6)s, %(py8)s, %(py10)s)
} is %(py15)sÚengine)Úpy0Úpy2Úpy4Úpy6Úpy8Úpy10Úpy12Úpy15zassert %(py17)sÚpy17ç      I@Fç      ¤@ç     €–@g      ”@©ú==)z%(py0)s == %(py3)sÚsx©r   Úpy3úassert %(py5)sÚpy5g     €†@Úsy)r   Úis_in_viewportÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚscale_point)r   Ú@py_assert1Ú@py_assert3Ú@py_assert5Ú@py_assert7Ú@py_assert9Ú@py_assert11Ú@py_assert14Ú@py_assert13Ú@py_format16Ú@py_format18r!   r&   Ú@py_assert2Ú@py_format4Ú@py_format6s                   ú1C:\Projects\AutoPOE2\tests\test_atlas_selector.pyÚ!test_atlas_perception_roi_scalingr?      sŸ  € Ý"¨VÀÐGÑGÔG€FàÔ ÐF ÐF¨ÐF¨vÐF°vÐFÐ Ð  ¨¨v°vÑ>Ô>ÐFÀ$ÐFÐ>À$ÐFÐFÐFÑFÕFÔFÐFÐFÐFÐFÐ>À$ÐFÑFÔFÐFÕFÔFÑFÔFÐFÐFÕFÔFˆ6ÑFÔFÐFÕFÔFˆ6ÑFÔFÐFÐFÕFÔFÐ ÑFÔFÕFÔF ÑFÔFÕFÔF¨ÑFÔFÕFÔF¨vÑFÔFÕFÔF°vÑFÔFÕFÔFÐ>ÑFÔFÕFÔFÀ$ÑFÔFÐFÐFÑFÐFÐFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFð Ô ÐE ÐE tÐE¨VÐE°VÐEÐ Ð   t¨V°VÑ<Ô<ÐEÀÐEÐ<ÀÐEÐEÐEÑEÕEÔEÐEÐEÐEÐEÐ<ÀÐEÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔEˆ6ÑEÔEÐEÕEÔEˆ6ÑEÔEÐEÐEÕEÔEÐ ÑEÔEÕEÔE ÑEÔEÕEÔE tÑEÔEÕEÔE¨VÑEÔEÕEÔE°VÑEÔEÕEÔEÐ<ÑEÔEÕEÔEÀÑEÔEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEð ×Ò  u¨f°fÑ=Ô=�F€BˆØÐˆ2�Š<ÐÐÐÕÔÐÐÐÐˆ2�ÐÑÔÐÕÔÑÔÐÐÕÔˆ2ÑÔÐÕÔˆ2ÑÔÐÐÕÔ�ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ2�Š;ÐÐÐÕÔÐÐÐÐˆ2�ÐÑÔÐÕÔÑÔÐÐÕÔˆ2ÑÔÐÕÔˆ2ÑÔÐÐÕÔ�ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐó    c            
      ób  — t          dddg d¢ddg¬¦  «        } t          | ¬¦  «        }t          d	dd
dd¬¦  «        t          ddddd¬¦  «        t          dddd
d¬¦  «        t          ddddd¬¦  «        g}|                     |¦  «        }d }||u}|s—t	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}}d}|j        }	||	v }|sªt	          j        d|fd||	f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |	¦  «        d œz  }d!d"|iz  }
t          t	          j        |
¦  «        ¦  «        ‚d x}x}}	|j        }d}	||	k    }|sªt	          j        d#|fd$||	f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |	¦  «        d%œz  }d!d"|iz  }
t          t	          j        |
¦  «        ¦  «        ‚d x}x}}	d S )&NÚfarm_whitelisté   é   )ÚDesertedÚFortressÚCreekúVaal PyramidÚMaze©ÚmodeÚmin_tierÚmax_tierÚpreferred_mapsÚignored_maps©Úconfigz	Creek Mapç     À‚@ç      y@T©ÚnameÚtierÚscreen_xÚscreen_yÚbonus_completedúDeserted Mapé   ç     à…@ç     @@FúVaal Pyramid Mapç      ‰@zRandom Normal Mapg      Œ@©úis not©z%(py0)s is not %(py3)sÚbestr"   r$   r%   rE   ©Úin)z,%(py1)s in %(py5)s
{%(py5)s = %(py3)s.name
})Úpy1r#   r%   úassert %(py7)sÚpy7r   )z,%(py2)s
{%(py2)s = %(py0)s.tier
} == %(py5)s©r   r   r%   )r   r   r   Úselect_best_noder(   r)   r*   r+   r,   r-   r.   r/   rU   rV   )ÚcfgÚplannerÚ
candidatesrc   r;   r1   r<   r=   Ú@py_assert0Ú@py_assert4Ú@py_format8r2   s               r>   Ú'test_atlas_strategy_whitelist_selectionrq   (   s?  € Ý
ØØØØ8Ð8Ð8Ø$ fÐ-ðñ ô €Cõ #¨#Ð.Ñ.Ô.€Gõ 	�{¨°eÀeÐ]aÐbÑbÔbÝ�~¨B¸ÈÐ`eÐfÑfÔfÝÐ)°¸UÈUÐdiÐjÑjÔjÝÐ*°¸eÈeÐeiÐjÑjÔjð	€Jð ×#Ò# JÑ/Ô/€DØÐˆ4�tÐÐÐÐÕÔÐÐÐÐˆ4�tÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�tÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐàÐ"˜œÐ"ˆ:˜Ð"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ:˜Ð"Ñ"Ô"Õ"Ô"ˆ:Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"˜Ñ"Ô"Ð"Õ"Ô"˜Ñ"Ô"Ð"Ð"Õ"Ô"˜Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØŒ9Ð˜Ðˆ9˜Š?ÐÐÐÕÔÐÐÐÐˆ9˜ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔˆ9ÑÔÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐr@   c                  ó  — t          ddddgdg¬¦  «        } t          | ¬¦  «        }t          dd	d
d¬¦  «        g}|                     |¦  «        }d }||u }|s¬t	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }t	          j
        d¦  «        dz   d|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}}d S )NrB   rC   rD   rE   rH   rJ   rP   r^   r[   r_   rR   ©rU   rV   rW   rX   r   )z%(py0)s is %(py3)src   r"   u?   Map trong danh sÃ¡ch Ä‘en báº¯t buá»™c pháº£i bá»‹ loáº¡i bá»�!z
>assert %(py5)sr%   )r   r   r   rj   r(   r)   r*   r+   r,   r-   Ú_format_assertmsgr.   r/   )rk   rl   rm   rc   r;   r1   r<   r=   s           r>   Ú'test_atlas_strategy_blacklist_rejectionru   @   sH  € Ý
ØØØØ"�|Ø$Ð%ðñ ô €Cõ #¨#Ð.Ñ.Ô.€Gõ 	Ð)°¸UÈUÐSÑSÔSð€Jð ×#Ò# JÑ/Ô/€DØÐZˆ4�4ˆ<ÐZÐZÐZÕZÔZÐZÐZÐZÐZˆ4�4ÐZÑZÔZÐZÕZÔZÑZÔZÐZÐZÕZÔZˆ4ÑZÔZÐZÕZÔZˆ4ÑZÔZÐZÐZÕZÔZ�4ÑZÔZÐZÐZÑZÐZÕZÔZÐZÑZÔZÐZÑZÐZÐZÐZÑZÐZÕZÕZÔZÐZÑZÔZÑZÔZÐZÐZÐZÐZÐZÐZÐZr@   c                  ó  — t          ddddddg¬¦  «        } t          | ¬¦  «        }t          d	d
ddd¬¦  «        t          dd
ddd¬¦  «        g}|                     |¦  «        }d }||u}|s—t	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}}|j        }d}||k    }	|	sªt	          j        d|	fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }
t          t	          j        |
¦  «        ¦  «        ‚d x}x}	}|j        }d}||u }	|	sªt	          j        d|	fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }
t          t	          j        |
¦  «        ¦  «        ‚d x}x}	}d S )NÚ
bonus_rushrC   rD   TrE   rF   )rK   rL   rM   Úprioritize_uncompleted_bonusrN   rP   rZ   r[   r\   r]   rT   zFortress Mapg     p‡@g     0�@Fr`   rb   rc   r"   r$   r%   r   )z,%(py2)s
{%(py2)s = %(py0)s.name
} == %(py5)sri   rg   rh   r   )z7%(py2)s
{%(py2)s = %(py0)s.bonus_completed
} is %(py5)s)r   r   r   rj   r(   r)   r*   r+   r,   r-   r.   r/   rU   rY   )rk   rl   rm   rc   r;   r1   r<   r=   ro   r2   rp   s              r>   Útest_atlas_strategy_bonus_rushry   S   s  € Ý
ØØØØ%)Ø" JÐ/ðñ ô €Cõ #¨#Ð.Ñ.Ô.€Gõ 	�~¨B¸ÈÐ`dÐeÑeÔeÝ�~¨B¸ÈÐ`eÐfÑfÔfð€Jð
 ×#Ò# JÑ/Ô/€DØÐˆ4�tÐÐÐÐÕÔÐÐÐÐˆ4�tÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�tÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐàŒ9Ð&˜Ð&ˆ9˜Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ9˜Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ4Ñ&Ô&Ð&Õ&Ô&ˆ4Ñ&Ô&Ð&Ð&Õ&Ô&ˆ9Ñ&Ô&Õ&Ô&˜Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔÐ( 5Ð(Ð 5Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(r@   c                  óö  — t          ¦   «         } t          dddd¬¦  «        g}|                      |dd¬¦  «        }|d	         }d
}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                      |dd¬¦  «        }|d	         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }|j        }d}	||	k    }
|
st          j        d|
fd||	f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}
}	d S )NrZ   r[   r\   r]   rs   rG   é   ©Úcandidate_nodesÚ	area_nameÚmonster_countÚsuccessFr   ©z%(py1)s is %(py4)s©rf   r   úassert %(py6)sr   zINV-ATLAS-01Úerrorrd   ©z%(py1)s in %(py4)súShoreline Hideoutr   TÚselected_noder   ©z,%(py3)s
{%(py3)s = %(py1)s.name
} == %(py6)s©rf   r#   r   úassert %(py8)sr   ©	r   r   Úplan_and_executer(   r)   r-   r.   r/   rU   )Úselectorrm   Ú
res_dangerrn   r2   r;   Ú@py_format5Ú@py_format7Úres_safer3   ro   Ú@py_format9s               r>   Ú(test_inv_atlas_01_safe_hideout_executionr“   i   s@  € Ý Ñ"Ô"€Hõ 	�~¨B¸ÈÐOÑOÔOð€Jð ×*Ò*Ø"ØØð +ñ ô €Jð
 �iÔ Ð) EÐ)Ð  EÐ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð  EÐ)Ñ)Ô)Õ)Ô)Ð Ñ)Ô)Õ)Ô) EÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÐ0˜Z¨Ô0Ð0ˆ>Ð0Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0ˆ>Ð0Ð0Ñ0Ô0Õ0Ô0ˆ>Ñ0Ô0Õ0Ô0Ð0Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ð ×(Ò(Ø"Ø%Øð )ñ ô €Hð
 �IÔÐ& $Ð&Ð $Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð $Ð&Ñ&Ô&Õ&Ô&ÐÑ&Ô&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø�OÔ$Ð;Ð$Ô)Ð;¨^Ð;Ð)¨^Ò;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð)¨^Ð;Ñ;Ô;Õ;Ô;Ð$Ñ;Ô;Õ;Ô;Ð)Ñ;Ô;Õ;Ô;¨^Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;r@   c                  ó¨  — t          ¦   «         } t          dddd¬¦  «        g}t          ddd¬	¦  «        }|                      |d
d|¬¦  «        }|d         }d}||u }|slt	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}d S )NrZ   r[   r\   r]   rs   r   g     Àw@é   ©rW   rX   Úempty_socketsr†   r   ©r}   r~   r   Úavailable_towerr€   Tr   r�   r‚   rƒ   r   Útower_socketed©	r   r   r   rŒ   r(   r)   r-   r.   r/   )	r�   rm   ÚtowerÚresrn   r2   r;   r�   r�   s	            r>   Ú test_precursor_tower_socket_flagrž   ‚   s»  € Ý Ñ"Ô"€Hå�~¨B¸ÈÐOÑOÔOð€Jõ  E°EÈÐKÑKÔK€Eà
×
#Ò
#Ø"Ø%ØØð	 $ñ ô €Cð ˆyŒ>Ð!˜TÐ!ˆ>˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ>˜TÐ!Ñ!Ô!Õ!Ô!ˆ>Ñ!Ô!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØÐÔ Ð( DÐ(Ð  DÐ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð  DÐ(Ñ(Ô(Õ(Ô(Ð Ñ(Ô(Õ(Ô( DÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(r@   c                  ó†  — t          ¦   «         } t          dddd¬¦  «        g}|                      |dd¬¦  «        }|d	         }d
}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }d }||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )NrZ   r[   g      Y@r   rs   r†   r   r|   r€   Fr   r�   r‚   rƒ   r   úINV-ATLAS-02r„   rd   r…   r‡   )r   r   rŒ   r(   r)   r-   r.   r/   )r�   Úinvalid_candidatesr�   rn   r2   r;   r�   r�   s           r>   Ú-test_inv_atlas_02_out_of_viewport_fail_closedr¢   “   sK  € Ý Ñ"Ô"€Hõ 	�~¨B¸ÈÐNÑNÔNðÐð ×
#Ò
#Ø*Ø%Øð $ñ ô €Cð
 ˆyŒ>Ð"˜UÐ"ˆ>˜UÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ>˜UÐ"Ñ"Ô"Õ"Ô"ˆ>Ñ"Ô"Õ"Ô"˜UÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÐ)˜S œ\Ð)ˆ>˜\Ð)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ>˜\Ð)Ñ)Ô)Õ)Ô)ˆ>Ñ)Ô)Õ)Ô)˜\Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØˆÔÐ' 4Ð'Ð 4Ð'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð 4Ð'Ñ'Ô'Õ'Ô'ÐÑ'Ô'Õ'Ô' 4Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'r@   c                  óú  — t          ¦   «         } t          dddd¬¦  «        g}|                      |ddd¬	¦  «        }|d
         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                      |ddd¬	¦  «        }|d
         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }|j        }d}	||	k    }
|
st          j        d|
fd||	f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}
}	d S )NrZ   r[   rS   r\   rs   r†   r   T)r}   r~   r   Ú	chat_openr€   Fr   r�   r‚   rƒ   r   r    r„   rd   r…   r‡   r   rˆ   r‰   rŠ   r   r‹   )r�   Úoccluded_candidatesÚres_chatrn   r2   r;   r�   r�   Ú
res_normalr3   ro   r’   s               r>   Ú'test_inv_atlas_02_occlusion_fail_closedr¨   ¤   sG  € Ý Ñ"Ô"€Hõ 	�~¨B¸ÈÐOÑOÔOðÐð
 ×(Ò(Ø+Ø%ØØð	 )ñ ô €Hð �IÔÐ' %Ð'Ð %Ð'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð %Ð'Ñ'Ô'Õ'Ô'ÐÑ'Ô'Õ'Ô' %Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÐ.˜X gÔ.Ð.ˆ>Ð.Ð.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.ˆ>Ð.Ð.Ñ.Ô.Õ.Ô.ˆ>Ñ.Ô.Õ.Ô.Ð.Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ð ×*Ò*Ø+Ø%ØØð	 +ñ ô €Jð �iÔ Ð( DÐ(Ð  DÐ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð  DÐ(Ñ(Ô(Õ(Ô(Ð Ñ(Ô(Õ(Ô( DÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø�oÔ&Ð=Ð&Ô+Ð=¨~Ð=Ð+¨~Ò=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð+¨~Ð=Ñ=Ô=Õ=Ô=Ð&Ñ=Ô=Õ=Ô=Ð+Ñ=Ô=Õ=Ô=¨~Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=r@   c                  ó¨  — t          ¦   «         } t          dddd¬¦  «        g}t          ddd¬¦  «        }|                      |d	d
|¬¦  «        }|d         }d}||u }|slt	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}d S )NrZ   r[   r\   r]   rs   r   é   r–   r†   r   r˜   r€   Tr   r�   r‚   rƒ   r   rš   Fr›   )	r�   rm   Ú	out_towerr�   rn   r2   r;   r�   r�   s	            r>   Ú/test_precursor_tower_outside_viewport_rejectionr¬   À   s»  € Ý Ñ"Ô"€Hå�~¨B¸ÈÐOÑOÔOð€Jõ ¨°tÈ1ÐMÑMÔM€Ià
×
#Ò
#Ø"Ø%ØØ!ð	 $ñ ô €Cð ˆyŒ>Ð!˜TÐ!ˆ>˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ>˜TÐ!Ñ!Ô!Õ!Ô!ˆ>Ñ!Ô!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!àÐÔ Ð) EÐ)Ð  EÐ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð  EÐ)Ñ)Ô)Õ)Ô)Ð Ñ)Ô)Õ)Ô) EÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)r@   c                  óÀ  — t          ¦   «         } t          dddd¬¦  «        }|                      |dddd	¬
¦  «        }|d         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }|j        }d}||k    }	|	st          j        d|	fd||f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}x}x}	}d S )NrZ   r[   g     ì“@g      „@rs   r†   r   r   r   )r~   r   Úscreen_wÚscreen_hr€   Tr   r�   r‚   rƒ   r   r‡   r   rˆ   r‰   rŠ   r   )	r   r   Úselect_noder(   r)   r-   r.   r/   rU   )r�   Únoder�   rn   r2   r;   r�   r�   r3   ro   r’   s              r>   Ú&test_atlas_selector_select_node_directr²   Ó   s·  € Ý Ñ"Ô"€HÝ˜.¨r¸FÈUÐSÑSÔS€DØ
×
Ò
˜tÐ/BÐRSÐ^dÐouÐ
Ñ
vÔ
v€CØˆyŒ>Ð!˜TÐ!ˆ>˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ>˜TÐ!Ñ!Ô!Õ!Ô!ˆ>Ñ!Ô!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØˆÔÐ6ÐÔ$Ð6¨Ð6Ð$¨Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð$¨Ð6Ñ6Ô6Õ6Ô6ÐÑ6Ô6Õ6Ô6Ð$Ñ6Ô6Õ6Ô6¨Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6r@   )Ú__doc__Úbuiltinsr*   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter(   ÚosÚpytestÚ&src.assistant_tool.atlas_node_selectorr   r   r   r   r   r   r	   r
   r   r?   rq   ru   ry   r“   rž   r¢   r¨   r¬   r²   © r@   r>   ú<module>r¼      sN  ððð ð € € € € € € € € € € € € €	€	€	€	Ø €€€ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ðð ð ðð ð ð0[ð [ð [ð&)ð )ð )ð,<ð <ð <ð2)ð )ð )ð"(ð (ð (ð">ð >ð >ð8*ð *ð *ð&7ð 7ð 7ð 7ð 7r@   