§
    p¢jz  ã            
       ó�  — d Z ddlZddlmc mZ ddlZddlZddl	Z	ddl
Z
e	j                             dej                             ej                             ej                             e¦  «        d¦  «        ¦  «        ¦  «         ddlmZmZmZ ddlmZ ddlmZmZ  G d„ de
j        ¦  «        Zed	k    r e
j        ¦   «          dS dS )
aø  
AutoPOE2 - Unit Tests for Endgame Map Scenarios & Boss Rush (Context Year: 2026)
Verifies:
1. MapScenario IntEnum definitions & codes (BOSS_RUSH, ATLAS_QUEST_RUSH, FAST_CLEAR, FULL_CLEAR).
2. AutoQuester endgame map detection, scenario transitions, and priority objective resolution.
3. CoreShmBridge binary packaging for OpCode 95 (SET_MAP_SCENARIO).
4. CoreController CLI argument generation for --map-scenario and --auto-portal-exit.
5. AutonomousLifecycleManager endgame earning scenario switching.
é    Nz..)ÚAutoQuesterÚMapScenarioÚQuestObjective)ÚCoreController)ÚCoreShmBridgeÚMacroOpCodec                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestMapScenariosc                 ó,   — t          ¦   «         | _        d S )N)r   Úquester©Úselfs    ú0C:\Projects\AutoPOE2\tests\test_map_scenarios.pyÚsetUpzTestMapScenarios.setUp   s   € Ý"‘}”}ˆŒˆˆó    c                 ó.  — |                       t          j        j        d¦  «         |                       t          j        j        d¦  «         |                       t          j        j        d¦  «         |                       t          j        j        d¦  «         dS )z>Verify MapScenario enum integer values match C++ protocol.hpp.r   é   é   é   N)ÚassertEqualr   Ú	BOSS_RUSHÚvalueÚATLAS_QUEST_RUSHÚ
FAST_CLEARÚ
FULL_CLEARr   s    r   Útest_map_scenario_enum_valuesz.TestMapScenarios.test_map_scenario_enum_values   sx   € à×Ò�Ô.Ô4°aÑ8Ô8Ð8Ø×Ò�Ô5Ô;¸QÑ?Ô?Ð?Ø×Ò�Ô/Ô5°qÑ9Ô9Ð9Ø×Ò�Ô/Ô5°qÑ9Ô9Ð9Ð9Ð9r   c                 óŠ  — |                       | j                             d¦  «        ¦  «         |                       | j                             d¦  «        ¦  «         |                       | j                             d¦  «        ¦  «         |                       | j                             d¦  «        ¦  «         |                       | j                             d¦  «        ¦  «         |                      | j                             d¦  «        ¦  «         |                      | j                             d¦  «        ¦  «         |                      | j                             d¦  «        ¦  «         |                      | j                             d	¦  «        ¦  «         |                      | j                             d
¦  «        ¦  «         dS )zJVerify AutoQuester correctly detects endgame Atlas maps vs campaign zones.zAtlas Map - Arid LakezWaystone Map Tier 5zCitadel of the FlameszPinnacle SanctuaryzThe Sacred Crypt (Waystone)zThe RiverbankzThe Ogham FarmlandszVastiri OutskirtszSandswept MarshÚ N)Ú
assertTruer   Úis_endgame_mapÚassertFalser   s    r   Útest_endgame_map_detectionz+TestMapScenarios.test_endgame_map_detection#   sr  € ð 	�Š˜œ×3Ò3Ð4KÑLÔLÑMÔMÐMØ�Š˜œ×3Ò3Ð4IÑJÔJÑKÔKÐKØ�Š˜œ×3Ò3Ð4KÑLÔLÑMÔMÐMØ�Š˜œ×3Ò3Ð4HÑIÔIÑJÔJÐJØ�Š˜œ×3Ò3Ð4QÑRÔRÑSÔSÐSð 	×Ò˜œ×4Ò4°_ÑEÔEÑFÔFÐFØ×Ò˜œ×4Ò4Ð5JÑKÔKÑLÔLÐLØ×Ò˜œ×4Ò4Ð5HÑIÔIÑJÔJÐJØ×Ò˜œ×4Ò4Ð5FÑGÔGÑHÔHÐHØ×Ò˜œ×4Ò4°RÑ8Ô8Ñ9Ô9Ð9Ð9Ð9r   c                 óV  — | j                              t          j        ¦  «         |                      | j         j        t          j        ¦  «         | j                              dd¦  «        }|                      d|¦  «         | j                              t          j        ¦  «         |                      | j         j        t          j        ¦  «         | j                              dd¦  «        }|                      d|¦  «         | j                              t          j	        ¦  «         | j                              dd¦  «        }|                      d|¦  «         | j                              t          j
        ¦  «         | j                              dd¦  «        }|                      d|¦  «         dS )zHVerify switching scenarios updates internal state and HUD status banner.zAtlas Map - StrandéK   z	BOSS RUSHzATLAS QUEST RUSHz
FAST CLEARz
FULL CLEARN)r   Úset_map_scenarior   r   r   ÚscenarioÚget_status_bannerÚassertInr   r   r   )r   Úbanner_bossÚbanner_questÚbanner_fastÚbanner_fulls        r   Ú-test_map_scenario_switching_and_status_bannerz>TestMapScenarios.test_map_scenario_switching_and_status_banner3   sY  € àŒ×%Ò%¥kÔ&;Ñ<Ô<Ð<Ø×Ò˜œÔ.µÔ0EÑFÔFÐFØ”l×4Ò4Ð5IÈ2ÑNÔNˆØ�Š�k ;Ñ/Ô/Ð/àŒ×%Ò%¥kÔ&BÑCÔCÐCØ×Ò˜œÔ.µÔ0LÑMÔMÐMØ”|×5Ò5Ð6JÈBÑOÔOˆØ�ŠÐ(¨,Ñ7Ô7Ð7àŒ×%Ò%¥kÔ&<Ñ=Ô=Ð=Ø”l×4Ò4Ð5IÈ2ÑNÔNˆØ�Š�l KÑ0Ô0Ð0àŒ×%Ò%¥kÔ&<Ñ=Ô=Ð=Ø”l×4Ò4Ð5IÈ2ÑNÔNˆØ�Š�l KÑ0Ô0Ð0Ð0Ð0r   c                 ó(  — | j                              t          j        ¦  «         | j                              dd¬¦  «        }|                      d|j        ¦  «         |                      |j        d¦  «         |                      |j	        d¦  «         dS )zSVerify that in an endgame map, resolve_active_objective yields targeted Boss/Arena.zAtlas Map - MesaéP   )Úcurrent_area_nameÚ
area_levelÚBossr   ÚATLAS_POINTN)
r   r%   r   r   Úresolve_active_objectiver(   Útarget_namer   Úaction_typeÚreward)r   Úobjs     r   Ú!test_endgame_objective_resolutionz2TestMapScenarios.test_endgame_objective_resolutionG   sƒ   € àŒ×%Ò%¥kÔ&;Ñ<Ô<Ð<ØŒl×3Ò3ÐFXÐegÐ3ÑhÔhˆØ�Š�f˜cœoÑ.Ô.Ð.Ø×Ò˜œ¨+Ñ6Ô6Ð6Ø×Ò˜œ ]Ñ3Ô3Ð3Ð3Ð3r   c                 ó6  — t          ¦   «         }|                      t          j        j        d¦  «         t
          j        j        }d}t          |¦  «        }|rdnd}t          j	        dd||dddddd¦
  «
        }|                      t          |¦  «        d¦  «         t          j        d|¦  «        \	  }}}	}
}}}}}|                      |d¦  «         |                      |dd¬	¦  «         |                      |	dd¬	¦  «         |                      |
dd¬	¦  «         d
S )zKVerify CoreShmBridge binary serialization for OpCode 95 (SET_MAP_SCENARIO).é_   Tg      ð?g        z
=IfffIIIIIr   é$   é   )ÚplacesN)r   r   r   ÚSET_MAP_SCENARIOr   r   r   ÚfloatÚstructÚpackÚlenÚunpackÚassertAlmostEqual)r   ÚbridgeÚscenario_codeÚauto_portalÚ	payload_xÚ	payload_yÚpktÚopÚtxÚtyÚtzÚflÚr1Úr2Úr3Úr4s                   r   Útest_opcode_95_serializationz-TestMapScenarios.test_opcode_95_serializationO   s3  € å‘”ˆØ×Ò�Ô5Ô;¸RÑ@Ô@Ð@õ $Ô-Ô3ˆØˆÝ˜-Ñ(Ô(ˆ	Ø&Ð/�C�C¨Cˆ	õ ŒkØØØØØØØˆq�!�Qñ
ô 
ˆð 	×Ò�˜S™œ 2Ñ&Ô&Ð&õ .4¬]¸<ÈÑ-MÔ-MÑ*ˆˆB��B˜˜B  B¨Ø×Ò˜˜RÑ Ô Ð Ø×Ò˜r 3¨qÐÑ1Ô1Ð1Ø×Ò˜r 3¨qÐÑ1Ô1Ð1Ø×Ò˜r 3¨qÐÑ1Ô1Ð1Ð1Ð1r   c                 óò  — t          ¦   «         }dddddœ}|                     |¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         dd	dddœ}|                     |¦  «        }|                      d|¦  «         |                      d
|¦  «         |                      d|¦  «         |                      d|¦  «         dS )zIVerify CoreController properly generates CLI arguments for map scenarios.r   T)Úmap_scenarioÚauto_portal_after_bossÚ
auto_questÚauto_patrolz--map-scenarioÚ0z--boss-rushz--auto-portal-exitr   FÚ1z--atlas-questz--no-auto-portalN)r   Ú	build_cmdr(   )r   ÚctrlÚcfg_bossÚcmd_bossÚ	cfg_questÚ	cmd_quests         r   Ú(test_core_controller_cli_args_generationz9TestMapScenarios.test_core_controller_cli_args_generationt   s  € åÑÔˆð Ø&*ØØð	
ð 
ˆð —>’> (Ñ+Ô+ˆØ�ŠÐ&¨Ñ1Ô1Ð1Ø�Š�c˜8Ñ$Ô$Ð$Ø�Š�m XÑ.Ô.Ð.Ø�ŠÐ*¨HÑ5Ô5Ð5ð Ø&+ØØð	
ð 
ˆ	ð —N’N 9Ñ-Ô-ˆ	Ø�ŠÐ&¨	Ñ2Ô2Ð2Ø�Š�c˜9Ñ%Ô%Ð%Ø�Š�o yÑ1Ô1Ð1Ø�ŠÐ(¨)Ñ4Ô4Ð4Ð4Ð4r   N)
Ú__name__Ú
__module__Ú__qualname__r   r   r"   r-   r9   rU   rc   © r   r   r
   r
      s~   € € € € € ð%ð %ð %ð:ð :ð :ð:ð :ð :ð 1ð 1ð 1ð(4ð 4ð 4ð#2ð #2ð #2ðJ5ð 5ð 5ð 5ð 5r   r
   Ú__main__)Ú__doc__ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arÚosrA   ÚsysÚunittestÚpathÚinsertÚabspathÚjoinÚdirnameÚ__file__Úsrc.assistant_tool.auto_questerr   r   r   Ú"src.assistant_tool.core_controllerr   Ú"src.assistant_tool.core_shm_bridger   r   ÚTestCaser
   rd   Úmainrg   r   r   ú<module>r~      s7  ððð ð € € € € € € € € € € € € €	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€ð „‡‚��2”7—?’? 2¤7§<¢<°´·²ÀÑ0IÔ0IÈ4Ñ#PÔ#PÑQÔQÑ RÔ RÐ Rà TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ =Ð =Ð =Ð =Ð =Ð =Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ Iðx5ð x5ð x5ð x5ð x5�xÔ(ñ x5ô x5ð x5ðv ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   