§
    fó¡js  ã            
       ó¢  — d 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mZ d„ Zd„ Zd„ Zd„ Zd	„ Zed
k    r? e¦   «           e¦   «           e¦   «           e¦   «           e¦   «           ed¦  «         dS dS )u‘   
Unit test cho ModifierFilter & evaluate_modifiers (Map & Monster Modifiers)
100% Zero-Disk, Zero-Ban risk, tuÃ¢n thá»§ Rule 8, Rule 9, Rule 14.
é    Nz..)ÚModifierFilterÚ	ModReportÚModSeverityÚevaluate_modifiersc                  ó
  — t          d¦  «        } | j        dk    sJ ‚| j        du sJ ‚t          | j        ¦  «        dk    sJ ‚t          | j        ¦  «        dk    sJ ‚t          d¦  «        }|j        dk    sJ ‚|j        du sJ ‚dS )uI   Kiá»ƒm tra xá»­ lÃ½ vÄƒn báº£n trá»‘ng hoáº·c chá»‰ cÃ³ khoáº£ng tráº¯ng.Ú éd   Fr   z   
	  N)r   Úsafety_scoreÚis_brickÚlenÚred_modsÚ
green_mods)Úr1Úr2s     ú2C:\Projects\AutoPOE2\tests\test_modifier_filter.pyÚ$test_empty_and_blank_text_evaluationr      s¤   € å	˜BÑ	Ô	€BØŒ?˜cÒ!Ð!Ð!Ð!ØŒ;˜%ÐÐÐÐÝˆrŒ{ÑÔ˜qÒ Ð Ð Ð ÝˆrŒ}ÑÔ Ò"Ð"Ð"Ð"å	˜KÑ	(Ô	(€BØŒ?˜cÒ!Ð!Ð!Ð!ØŒ;˜%ÐÐÐÐÐÐó    c                  óž  — d} t          | ¦  «        }|j        du sJ ‚t          d„ |j        D ¦   «         ¦  «        sJ ‚|j        dk    sJ ‚d|j        v sJ ‚d}t          |¦  «        }|j        du sJ ‚t          d„ |j        D ¦   «         ¦  «        sJ ‚d}t          |¦  «        }|j        du sJ ‚t          d	„ |j        D ¦   «         ¦  «        sJ ‚d
S )uS   Kiá»ƒm tra nháº­n diá»‡n chÃ­nh xÃ¡c cÃ¡c Brick Mods (Reflect, No Leech, No Regen).z€Area contains 2 additional Harbingers
Monsters reflect 18% of Physical Damage
60% increased Quantity of Items found in this AreaTc              3   ó   K  — | ]}d |v V — Œ	dS )ÚReflectN© ©Ú.0Úms     r   ú	<genexpr>z1test_brick_modifiers_detection.<locals>.<genexpr>*   s&   è è € Ð6Ð6 !ˆy˜Aˆ~Ð6Ð6Ð6Ð6Ð6Ð6r   éA   ÚBRICKz*Players cannot Leech Life or Energy Shieldc              3   ó   K  — | ]}d |v V — Œ	dS )zNo LeechNr   r   s     r   r   z1test_brick_modifiers_detection.<locals>.<genexpr>2   ó&   è è € Ð9Ð9 1ˆz˜QˆÐ9Ð9Ð9Ð9Ð9Ð9r   z5Players cannot Regenerate Life, Mana or Energy Shieldc              3   ó   K  — | ]}d |v V — Œ	dS )zNo RegenNr   r   s     r   r   z1test_brick_modifiers_detection.<locals>.<genexpr>8   r   r   N)r   r   Úanyr   r
   Údanger_summary)Úmap_reflectÚr_refÚmap_no_leechÚr_leechÚmap_no_regenÚr_regens         r   Útest_brick_modifiers_detectionr)       s  € ð	=ð õ
 ˜{Ñ+Ô+€EØŒ>˜TÐ!Ð!Ð!Ð!ÝÐ6Ð6 u¤~Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6ØÔ Ò#Ð#Ð#Ð#Ø�eÔ*Ð*Ð*Ð*Ð*ð @€LÝ  Ñ.Ô.€GØÔ˜tÐ#Ð#Ð#Ð#ÝÐ9Ð9¨Ô(8Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9ð K€LÝ  Ñ.Ô.€GØÔ˜tÐ#Ð#Ð#Ð#ÝÐ9Ð9¨Ô(8Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9r   c                  ób  — d} t          | ¦  «        }|j        du sJ ‚t          |j        ¦  «        dk    sJ ‚t	          d„ |j        D ¦   «         ¦  «        sJ ‚t	          d„ |j        D ¦   «         ¦  «        sJ ‚t	          d„ |j        D ¦   «         ¦  «        sJ ‚|j        dk     sJ ‚d|j        v sJ ‚d	S )
uY   Kiá»ƒm tra nháº­n diá»‡n cÃ¡c mod nguy hiá»ƒm (-Max Res, Crit, Curse, Desecrated Ground).zË-12% to all maximum Resistances
Monsters deal 70% extra Damage as Cold
Monsters have 300% increased Critical Strike Chance
Area has patches of Desecrated Ground
Players are Cursed with Elemental WeaknessFé   c              3   ó   K  — | ]}d |v V — Œ	dS )z-Max ResNr   r   s     r   r   z5test_dangerous_modifiers_detection.<locals>.<genexpr>G   s&   è è € Ð3Ð3 1ˆz˜QˆÐ3Ð3Ð3Ð3Ð3Ð3r   c              3   ó   K  — | ]}d |v V — Œ	dS )zCrit / Extra DmgNr   r   s     r   r   z5test_dangerous_modifiers_detection.<locals>.<genexpr>H   s(   è è € Ð;Ð;¨1Ð! QÐ&Ð;Ð;Ð;Ð;Ð;Ð;r   c              3   ó   K  — | ]}d |v V — Œ	dS )zCorrupted Blood / CurseNr   r   s     r   r   z5test_dangerous_modifiers_detection.<locals>.<genexpr>I   s(   è è € ÐBÐB°!Ð(¨AÐ-ÐBÐBÐBÐBÐBÐBr   é2   u   NGUY HIá»‚MN)r   r   r   r   r!   r
   r"   )Údangerous_mapÚrs     r   Ú"test_dangerous_modifiers_detectionr2   ;   sã   € ð	5ð õ 	˜=Ñ)Ô)€AØŒ:˜ÐÐÐÐÝˆqŒz‰?Œ?˜aÒÐÐÐÝÐ3Ð3¨¬
Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3ÝÐ;Ð;°´
Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;ÝÐBÐB°q´zÐBÑBÔBÑBÔBÐBÐBÐBØŒ>˜BÒÐÐÐØ˜AÔ,Ð,Ð,Ð,Ð,Ð,Ð,r   c                  ó–  — d} t          | ¦  «        }|j        du sJ ‚t          |j        ¦  «        dk    sJ ‚t          |j        ¦  «        dk    sJ ‚t          d„ |j        D ¦   «         ¦  «        sJ ‚t          d„ |j        D ¦   «         ¦  «        sJ ‚t          d„ |j        D ¦   «         ¦  «        sJ ‚|j        dk    sJ ‚d	|j        v sJ ‚d
S )u@   Kiá»ƒm tra nháº­n diá»‡n mod XANH (Quantity, Rarity, Pack Size).zƒ85% increased Quantity of Items found in this Area
50% increased Rarity of Items found in this Area
32% increased Monster Pack SizeFr   é   c              3   ó   K  — | ]}d |v V — Œ	dS )ÚQuantityNr   r   s     r   r   z2test_reward_modifiers_detection.<locals>.<genexpr>Y   s&   è è € Ð5Ð5 1ˆz˜QˆÐ5Ð5Ð5Ð5Ð5Ð5r   c              3   ó   K  — | ]}d |v V — Œ	dS )ÚRarityNr   r   s     r   r   z2test_reward_modifiers_detection.<locals>.<genexpr>Z   s&   è è € Ð3Ð3 ˆx˜1ˆ}Ð3Ð3Ð3Ð3Ð3Ð3r   c              3   ó   K  — | ]}d |v V — Œ	dS )z	Pack SizeNr   r   s     r   r   z2test_reward_modifiers_detection.<locals>.<genexpr>[   s'   è è € Ð6Ð6 Aˆ{˜aÐÐ6Ð6Ð6Ð6Ð6Ð6r   r	   u   AN TOÃ€NN)r   r   r   r   r   r!   r
   r"   )Ú
reward_mapr1   s     r   Útest_reward_modifiers_detectionr;   N   sþ   € ð	*ð õ
 	˜:Ñ&Ô&€AØŒ:˜ÐÐÐÐÝˆqŒz‰?Œ?˜aÒÐÐÐÝˆqŒ|ÑÔ Ò!Ð!Ð!Ð!ÝÐ5Ð5¨¬Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5ÝÐ3Ð3 a¤lÐ3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3ÝÐ6Ð6¨¬Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6ØŒ>˜SÒ Ð Ð Ð Ø˜Ô)Ð)Ð)Ð)Ð)Ð)Ð)r   c                  ó(  — d} t          | ¦  «        }|j        du sJ ‚t          |j        ¦  «        dk    sJ ‚t          |j        ¦  «        dk    sJ ‚t          |j        ¦  «        dk    sJ ‚d|j        d         v sJ ‚d|j        cxk    rdk    sn J ‚d	S )
uG   Kiá»ƒm tra Map tá»•ng há»£p cÃ³ cáº£ mod Xanh vÃ  Ä�á»� (khÃ´ng Brick).z©30% increased Monster Pack Size
65% increased Quantity of Items found in this Area
Monsters deal 50% extra Damage as Lightning
Monsters have 20% increased Movement SpeedFé   é   zMovement Speedr   éP   é_   N)r   r   r   r   r   Úneutral_modsr
   )Ú	mixed_mapr1   s     r   Útest_mixed_map_evaluationrC   `   sÂ   € ð	5ð õ 	˜9Ñ%Ô%€AØŒ:˜ÐÐÐÐÝˆqŒ|ÑÔ Ò!Ð!Ð!Ð!ÝˆqŒz‰?Œ?˜aÒÐÐÐÝˆqŒ~ÑÔ !Ò#Ð#Ð#Ð#Ø˜qœ~¨aÔ0Ð0Ð0Ð0Ð0Ø�”Ð%Ð%Ò%Ð% 2Ò%Ð%Ð%Ð%Ð%Ð%Ð%Ð%r   Ú__main__u<   âœ… Táº¤T Cáº¢ TEST MODIFIER FILTER Ä�á»€U VÆ¯á»¢T QUA 100%!)Ú__doc__ÚosÚsysÚpathÚinsertÚabspathÚjoinÚdirnameÚ__file__Ú"src.assistant_tool.modifier_filterr   r   r   r   r   r)   r2   r;   rC   Ú__name__Úprintr   r   r   ú<module>rQ      sc  ððð ð
 
€	€	€	Ø 
€
€
€
à „‡‚��2”7—?’? 2¤7§<¢<°´·²ÀÑ0IÔ0IÈ4Ñ#PÔ#PÑQÔQÑ RÔ RÐ Rðð ð ð ð ð ð ð ð ð ð ð ð
 ð 
 ð 
 ð:ð :ð :ð6-ð -ð -ð&*ð *ð *ð$&ð &ð &ð" ˆzÒÐØ(Ð(Ñ*Ô*Ð*Ø"Ð"Ñ$Ô$Ð$Ø&Ð&Ñ(Ô(Ð(Ø#Ð#Ñ%Ô%Ð%ØÐÑÔÐØ	€EÐ
HÑIÔIÐIÐIÐIð Ðr   