§
    g&¦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	Z	ddl
Z
ddlmZmZ ej                             dej                             ej                             ej                             e¦  «        d¦  «        ¦  «        ¦  «         ddlmZ ddlmZ  G d„ de
j        ¦  «        Zed	k    r e
j        ¦   «          dS dS )
zï
Unit tests for TASK-IMPL-PYTHON-IPC-GUI
- CoreShmBridge threading lock on SPSC command ring buffer
- Non-blocking sound triggers in GUI
- Max 1,000 lines limit in Control Center log textbox
- attach_to_default_desktop safe handle cleanup
é    N)Ú	MagicMockÚpatchz..)ÚCoreShmBridge)Úattach_to_default_desktopc                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestPythonIpcGuiNonblockingc           	      ó0  — t          ¦   «         }|                      t          |d¦  «        ¦  «         |                      t          |j        t          t          j        ¦   «         ¦  «        ¦  «        ¦  «         |                      | 	                    ¦   «         ¦  «         |                      | 
                    ¦   «         ¦  «         |                      |                     ¦   «         ¦  «         |                      |                     dd¦  «        ¦  «         d S )NÚ	_cmd_locké   r   )r   Ú
assertTrueÚhasattrÚ
isinstancer
   ÚtypeÚ	threadingÚLockÚassertFalseÚsend_panic_stopÚsend_recalibrate_xyzÚsend_trigger_auto_loginÚsend_trigger_world_map_travel)ÚselfÚbridges     ú6C:\Projects\AutoPOE2\tests\test_ipc_gui_nonblocking.pyÚtest_core_shm_bridge_cmd_lockz9TestPythonIpcGuiNonblocking.test_core_shm_bridge_cmd_lock   sâ   € Ý‘”ˆØ�Š� ¨Ñ4Ô4Ñ5Ô5Ð5à�Š�
 6Ô#3µT½)¼.Ñ:JÔ:JÑ5KÔ5KÑLÔLÑMÔMÐMð 	×Ò˜×/Ò/Ñ1Ô1Ñ2Ô2Ð2Ø×Ò˜×4Ò4Ñ6Ô6Ñ7Ô7Ð7Ø×Ò˜×7Ò7Ñ9Ô9Ñ:Ô:Ð:Ø×Ò˜×=Ò=¸aÀÑCÔCÑDÔDÐDÐDÐDó    c                 óÄ  — t          ¦   «         }t          d¦  «        }||_        t          ¦   «         }||_        |                     ¦   «         }|                      |¦  «         |                      |j        j	        d¦  «         | 
                    ¦   «         }|                      |¦  «         |                      |j        j	        d¦  «         |                     ¦   «         }|                      |¦  «         |                      |j        j	        d¦  «         |                     dd¦  «        }|                      |¦  «         |                      |j        j	        d¦  «         d S )Ni  @ r   é   é   r   é   )r   Ú	bytearrayÚ_shmr   r
   r   r   ÚassertEqualÚ	__enter__Ú
call_countr   r   r   )r   r   Úfake_shmÚ	mock_lockÚres1Úres2Úres3Úres4s           r   Ú%test_core_shm_bridge_write_under_lockzATestPythonIpcGuiNonblocking.test_core_shm_bridge_write_under_lock"   s6  € Ý‘”ˆå˜_Ñ-Ô-ˆØˆŒå‘K”Kˆ	Ø$ˆÔà×%Ò%Ñ'Ô'ˆØ�Š˜ÑÔÐØ×Ò˜Ô,Ô7¸Ñ;Ô;Ð;à×*Ò*Ñ,Ô,ˆØ�Š˜ÑÔÐØ×Ò˜Ô,Ô7¸Ñ;Ô;Ð;à×-Ò-Ñ/Ô/ˆØ�Š˜ÑÔÐØ×Ò˜Ô,Ô7¸Ñ;Ô;Ð;à×3Ò3°A°qÑ9Ô9ˆØ�Š˜ÑÔÐØ×Ò˜Ô,Ô7¸Ñ;Ô;Ð;Ð;Ð;r   c                 óX   — t          ¦   «         }|                      |d up|d u ¦  «         d S )N)r   r   )r   Úress     r   Ú+test_attach_to_default_desktop_safe_cleanupzGTestPythonIpcGuiNonblocking.test_attach_to_default_desktop_safe_cleanup;   s2   € å'Ñ)Ô)ˆà�Š˜ 4˜Ð6¨3°$¨;Ñ7Ô7Ð7Ð7Ð7r   c                 óú  — ddl m}  |¦   «         }	 |                     ¦   «          |                     ¦   «          t	          d¦  «        D ]}|                     d|› �¦  «         Œ|                     ¦   «          t          |j                             d¦  «         	                    d¦  «        d         ¦  «        }|  
                    |d¦  «         |                     ¦   «          d S # |                     ¦   «          w xY w)Nr   ©ÚControlCenterAppi  zLine zend-1cú.ié  )Ú!src.assistant_tool.control_centerr1   ÚupdateÚ
_clear_logÚrangeÚ_append_logÚintÚlog_textboxÚindexÚsplitÚassertLessEqualÚ
on_closing)r   r1   ÚappÚiÚ	num_liness        r   Útest_control_center_log_limitz9TestPythonIpcGuiNonblocking.test_control_center_log_limitA   sõ   € ØFÐFÐFÐFÐFÐFØÐÑ Ô ˆð	Ø�JŠJ‰LŒLˆLà�NŠNÑÔÐõ ˜4‘[”[ð -ð -�Ø—’ ¨  Ñ,Ô,Ð,Ð,à�JŠJ‰LŒLˆLå˜CœO×1Ò1°(Ñ;Ô;×AÒAÀ#ÑFÔFÀqÔIÑJÔJˆIØ× Ò  ¨DÑ1Ô1Ð1à�NŠNÑÔÐÐÐøˆC�NŠNÑÔÐÐøøøs   ’B<C$ Ã$C:c                 ó,  — ddl m}  |¦   «         }	 t          d¦  «        5 }|                     ¦   «          |                      |j        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «          d S # |                     ¦   «          w xY w)Nr   r0   z,src.assistant_tool.control_center.beep_panic)r3   r1   r   Ú_on_panic_stop_hotkeyr   Úcalledr=   )r   r1   r>   Ú	mock_beeps       r   Útest_gui_nonblocking_beepz5TestPythonIpcGuiNonblocking.test_gui_nonblocking_beepT   sÝ   € ØFÐFÐFÐFÐFÐFØÐÑ Ô ˆð	ÝÐEÑFÔFð 2È)Ø×)Ò)Ñ+Ô+Ð+à—’ 	Ô 0Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð
 �NŠNÑÔÐÐÐøˆC�NŠNÑÔÐÐøøøs.   ’A= ¡/AÁA= ÁA Á A= Á#A Á$A= Á=Bc                 ó   — ddl m} ddlm} ddlm} ddlm}  |d¦  «        } |d¦  «        } ||¦  «        } ||||¬¦  «        }	 t          d	¦  «        5 }	| 	                    d
dd¦  «         |  
                    |	j        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «          d S # |                     ¦   «          w xY w)Nr   )ÚGoldTracker)Ú
LogWatcher)ÚMarketAdvisor)Ú
OverlayHUDiPÃ  zdummy_log.txt)Úgold_trackerÚlog_watcherÚmarket_advisorz+src.assistant_tool.overlay_gui.enqueue_beepé
   éd   g      $@)Úsrc.assistant_tool.gold_trackerrH   Úsrc.assistant_tool.log_watcherrI   Ú!src.assistant_tool.market_advisorrJ   Úsrc.assistant_tool.overlay_guirK   r   Ú_on_low_hp_alertr   rD   Údestroy)
r   rH   rI   rJ   rK   ÚgtÚlwÚmaÚhudrE   s
             r   Ú!test_overlay_gui_nonblocking_beepz=TestPythonIpcGuiNonblocking.test_overlay_gui_nonblocking_beep_   sE  € Ø?Ð?Ð?Ð?Ð?Ð?Ø=Ð=Ð=Ð=Ð=Ð=ØCÐCÐCÐCÐCÐCØ=Ð=Ð=Ð=Ð=Ð=àˆ[˜ÑÔˆØˆZ˜Ñ(Ô(ˆØˆ]˜2ÑÔˆàˆj b°bÈÐLÑLÔLˆð	ÝÐDÑEÔEð 2ÈØ×$Ò$ R¨¨dÑ3Ô3Ð3Ø—’ 	Ô 0Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð �KŠK‰MŒMˆMˆMˆMøˆC�KŠK‰MŒMˆMˆMøøøs0   Á	B7 Á2BÂ
B7 ÂBÂB7 ÂBÂB7 Â7CN)	Ú__name__Ú
__module__Ú__qualname__r   r+   r.   rA   rF   r[   © r   r   r   r      sq   € € € € € ð
Eð 
Eð 
Eð<ð <ð <ð28ð 8ð 8ðð ð ð&	ð 	ð 	ðð ð ð ð r   r   Ú__main__)Ú__doc__ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arÚosÚsysr   ÚunittestÚunittest.mockr   r   ÚpathÚinsertÚabspathÚjoinÚdirnameÚ__file__Ú"src.assistant_tool.core_shm_bridger   Ú"src.assistant_tool.screen_capturerr   ÚTestCaser   r\   Úmainr_   r   r   ú<module>rv      s,  ððð ð € € € € € € € € € € € € €	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à „‡‚��2”7—?’? 2¤7§<¢<°´·²ÀÑ0IÔ0IÈ4Ñ#PÔ#PÑQÔQÑ RÔ RÐ Rà <Ð <Ð <Ð <Ð <Ð <Ø HÐ HÐ HÐ HÐ HÐ HðZð Zð Zð Zð Z (Ô"3ñ Zô Zð Zðz ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   