§
    mQ»j  ã            
       óh  — 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	ej
                             de	j
                             e	j
                             e	j
                             e¦  «        d¦  «        ¦  «        ¦  «         ddlmZmZ  G d„ dej        ¦  «        Zedk    r ej        ¦   «          dS dS )z·
Unit tests for Spatial Grid (AOI - Area of Interest) in FreeExile World Cluster.
Verifies entity cell placement, proximity queries, neighbor cell broadcasts, and boundary crossings.
é    Nz../../server)ÚSpatialGridÚEntityc                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestSpatialGridc                 ó0   — t          d¬¦  «        | _        d S )Ng      P@)Ú	cell_size)r   Úgrid)Úselfs    ú5C:\Projects\FreeExile\tests\unit\test_spatial_grid.pyÚsetUpzTestSpatialGrid.setUp   s   € å¨$Ð/Ñ/Ô/ˆŒ	ˆ	ˆ	ó    c                 ó  — t          ddd¬¦  «        }| j                             |¦  «         | j                             dd¦  «        }|                      |d¦  «         |                      d| j        j        d         ¦  «         dS )z5Entity placed at (100, 100) should be in cell (1, 1).é   ç      Y@©Ú	entity_idÚxÚy©r   r   N)r   r	   Ú
add_entityÚget_cell_coordsÚassertEqualÚassertInÚcells)r
   Úe1Úcell_coordss      r   Ú*test_entity_registration_and_cell_indexingz:TestSpatialGrid.test_entity_registration_and_cell_indexing   s|   € å˜a 5¨EÐ2Ñ2Ô2ˆØŒ	×Ò˜RÑ Ô Ð à”i×/Ò/°°uÑ=Ô=ˆØ×Ò˜ fÑ-Ô-Ð-Ø�Š�a˜œœ¨Ô0Ñ1Ô1Ð1Ð1Ð1r   c                 óà  — t          ddd¬¦  «        }t          ddd¬¦  «        }t          ddd¬¦  «        }| j                             |¦  «         | j                             |¦  «         | j                             |¦  «         | j                             |j        |j        d¬¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         d	S )
z]Player at (100, 100) should see neighbor at (120, 120), but not distant entity at (500, 500).r   r   r   é   g      ^@é   g     @@)Úradius_cellsN)r   r	   r   Úget_entities_in_aoir   r   r   ÚassertNotIn)r
   ÚplayerÚnearby_enemyÚdistant_enemyÚvisible_idss        r   Útest_aoi_proximity_queryz(TestSpatialGrid.test_aoi_proximity_query   så   € å ! u°Ð6Ñ6Ô6ˆÝ¨¨U°eÐ<Ñ<Ô<ˆÝ¨¨e°uÐ=Ñ=Ô=ˆàŒ	×Ò˜VÑ$Ô$Ð$ØŒ	×Ò˜\Ñ*Ô*Ð*ØŒ	×Ò˜]Ñ+Ô+Ð+à”i×3Ò3°F´H¸f¼hÐUVÐ3ÑWÔWˆØ�Š�a˜Ñ%Ô%Ð%Ø�Š�a˜Ñ%Ô%Ð%Ø×Ò˜˜KÑ(Ô(Ð(Ð(Ð(r   c                 ó®  — t          ddd¬¦  «        }| j                             |¦  «         |                      d| j        j        d         ¦  «         | j                             |dd¦  «         |                      d| j        j                             dt          ¦   «         ¦  «        ¦  «         |                      d| j        j        d         ¦  «         dS )z^Entity moving from (60, 60) [cell 0,0] to (70, 70) [cell 1,1] updates cell membership cleanly.é
   g      N@r   )r   r   g     €Q@r   N)	r   r	   r   r   r   Úupdate_entity_positionr#   ÚgetÚset)r
   Úes     r   Útest_entity_boundary_crossingz-TestSpatialGrid.test_entity_boundary_crossing,   s¶   € å˜R 4¨4Ð0Ñ0Ô0ˆØŒ	×Ò˜QÑÔÐØ�Š�b˜$œ)œ/¨&Ô1Ñ2Ô2Ð2ð 	Œ	×(Ò(¨¨D°$Ñ7Ô7Ð7Ø×Ò˜˜TœYœ_×0Ò0°½¹¼Ñ?Ô?Ñ@Ô@Ð@Ø�Š�b˜$œ)œ/¨&Ô1Ñ2Ô2Ð2Ð2Ð2r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r(   r/   © r   r   r   r      sP   € € € € € ð0ð 0ð 0ð2ð 2ð 2ð)ð )ð )ð	3ð 	3ð 	3ð 	3ð 	3r   r   Ú__main__)Ú__doc__ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arÚunittestÚsysÚosÚpathÚinsertÚabspathÚjoinÚdirnameÚ__file__Úworld.spatial_gridr   r   ÚTestCaser   r0   Úmainr3   r   r   ú<module>rH      sô   ððð ð
 € € € € € € € € € € € € €€€€Ø 
€
€
€
Ø 	€	€	€	à „‡‚��2”7—?’? 2¤7§<¢<°´·²ÀÑ0IÔ0IÈ>Ñ#ZÔ#ZÑ[Ô[Ñ \Ô \Ð \à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2ð&3ð &3ð &3ð &3ð &3�hÔ'ñ &3ô &3ð &3ðR ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   