§
    w.¬jÎ  ã                   óZ   — d Z ddlZddlmc mZ ddlZddlm	Z	m
Z
mZ  G d„ d¦  «        ZdS )a  Tests for Atlas Passive Tree Planner & 115-Point Max Profit Blueprint.
======================================================================
Kiem thu toan dien:
- Khoi tao cay noi tai Atlas chuan 115 diem.
- Phan ky 3 giai doan: Early Sustain (T1-5), Mid Quantity/Gold (T6-10), Endgame League Mechanics (T11-16).
- Tuan thu do thi phu thuoc DAG (Prerequisites) trong qua trinh phan bo tu dong.
- Reset cay va thong ke chi so tong hop.
- In bao cao dinh luong tuan thu Rule 5: [MO PHONG THUAT TOAN HEADLESS - KHONG PHAI LIVE GAME].
é    N)ÚAtlasPassiveNodeÚAtlasTreePlannerÚ	TreePhasec                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestAtlasTreePlannerc           
      óÎ  — t          ¦   «         }|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	}||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„ |j                             ¦   «         D ¦   «         }d„ |j                             ¦   «         D ¦   «         }d„ |j                             ¦   «         D ¦   «         }	t          |¦  «        }
d}|
|k    }|�st          j        d|fd|
|f¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        t          j        |¦  «        dœz  }t          j        dt          |¦  «        › �¦  «        dz   d|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}
x}}t          |¦  «        }
d}|
|k    }|�st          j        d|fd|
|f¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        t          j        |¦  «        dœz  }t          j        dt          |¦  «        › �¦  «        dz   d|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}
x}}t          |	¦  «        }
d}|
|k    }|�st          j        d|fd|
|f¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt	          j        ¦   «         v st          j        |	¦  «        rt          j        |	¦  «        ndt          j        |
¦  «        t          j        |¦  «        dœz  }t          j        dt          |	¦  «        › �¦  «        dz   d|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}
x}}t          d„ |j                             ¦   «         D ¦   «         ¦  «        }d}d}t!          ||¦  «        }t#          |¦  «        }||k    }|�s`t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndd t	          j        ¦   «         v st          j        t"          ¦  «        rt          j        t"          ¦  «        nd d!t	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nd!t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d"œz  }d#d$|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}x}}dS )%z3Kiem tra khoi tao 115 nodes noi tai voi du 3 phase.és   ©ú==)z3%(py2)s
{%(py2)s = %(py0)s.total_nodes
} == %(py5)sÚplanner©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7Nr   ©z7%(py2)s
{%(py2)s = %(py0)s.allocated_count
} == %(py5)sc                 ó<   — g | ]}|j         t          j        k    ¯|‘ŒS © )Úphaser   ÚPHASE_1_EARLY_SUSTAIN©Ú.0Úns     ú5C:\Projects\AutoPOE2\tests\test_atlas_tree_planner.pyú
<listcomp>zKTestAtlasTreePlanner.test_canonical_tree_initialization.<locals>.<listcomp>   s'   € ÐeÐeÐe˜!¸!¼'ÅYÔEdÒ:dÐ:d�AÐ:dÐ:dÐ:dó    c                 ó<   — g | ]}|j         t          j        k    ¯|‘ŒS r   )r   r   ÚPHASE_2_MID_QUANTITY_GOLDr   s     r   r   zKTestAtlasTreePlanner.test_canonical_tree_initialization.<locals>.<listcomp>   s'   € ÐiÐiÐi˜!¸!¼'ÅYÔEhÒ:hÐ:h�AÐ:hÐ:hÐ:hr   c                 ó<   — g | ]}|j         t          j        k    ¯|‘ŒS r   )r   r   ÚPHASE_3_ENDGAME_MAX_PROFITr   s     r   r   zKTestAtlasTreePlanner.test_canonical_tree_initialization.<locals>.<listcomp>   s'   € ÐjÐjÐj˜!¸!¼'ÅYÔEiÒ:iÐ:i�AÐ:iÐ:iÐ:ir   é#   ©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenÚp1_nodes©r   Úpy1Úpy3Úpy6z#Phase 1 phai co 35 nodes, thuc te: z
>assert %(py8)sÚpy8é(   Úp2_nodesz#Phase 2 phai co 40 nodes, thuc te: Úp3_nodesz#Phase 3 phai co 40 nodes, thuc te: c                 ó   — g | ]	}|j         ‘Œ
S r   )Úpriority_orderr   s     r   r   zKTestAtlasTreePlanner.test_canonical_tree_initialization.<locals>.<listcomp>$   s   € ÐOÐOÐO°!˜QÔ-ÐOÐOÐOr   é   ét   )zY%(py0)s == %(py11)s
{%(py11)s = %(py2)s(%(py9)s
{%(py9)s = %(py3)s(%(py5)s, %(py7)s)
})
}Ú
prioritiesÚlistÚrange)r   r   r(   r   r   Úpy9Úpy11zassert %(py13)sÚpy13)r   Útotal_nodesÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚallocated_countÚ_nodesÚvaluesr$   Ú_format_assertmsgÚsortedr4   r3   )Úselfr   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8r%   r,   r-   Ú@py_assert2Ú@py_assert5Ú@py_format7Ú@py_format9r2   Ú@py_assert6Ú@py_assert8Ú@py_assert10Ú@py_format12Ú@py_format14s                       r   Ú"test_canonical_tree_initializationz7TestAtlasTreePlanner.test_canonical_tree_initialization   s¬  € å"Ñ$Ô$ˆØÔ"Ð) cÐ)Ð" cÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð" cÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆwÑ)Ô)Ð)Õ)Ô)ˆwÑ)Ô)Ð)Ð)Õ)Ô)Ð"Ñ)Ô)Õ)Ô) cÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÔ&Ð+¨!Ð+Ð&¨!Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð&¨!Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Ð+Õ+Ô+Ð&Ñ+Ô+Õ+Ô+¨!Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ð fÐe˜wœ~×4Ò4Ñ6Ô6ÐeÑeÔeˆØiÐi˜wœ~×4Ò4Ñ6Ô6ÐiÑiÔiˆØjÐj˜wœ~×4Ò4Ñ6Ô6ÐjÑjÔjˆå�8‰}Œ}ÐY ÐYˆ} Ò"ÐYÐYÑYÕYÔYÐYÐYÐYÐYˆ} ÐYÑYÔYÐYÕYÔYÑYÔYÐYÐYÕYÔY�sÑYÔYÐYÕYÔY�sÑYÔYÐYÐYÐYÕYÔYÑYÔYÐYÐYÕYÔY�8ÑYÔYÐYÕYÔY�8ÑYÔYÐYÐYÕYÔYˆ}ÑYÔYÕYÔY ÑYÔYÐYÐYÑYÐYÕYÔYÐ$YÍ#ÈhÉ-Ì-Ð$YÐ$YÑYÔYÐYÑYÐYÐYÐYÑYÐYÕYÕYÔYÐYÑYÔYÑYÔYÐYÐYÐYÐYÐYÐYÐYÝ�8‰}Œ}ÐY ÐYˆ} Ò"ÐYÐYÑYÕYÔYÐYÐYÐYÐYˆ} ÐYÑYÔYÐYÕYÔYÑYÔYÐYÐYÕYÔY�sÑYÔYÐYÕYÔY�sÑYÔYÐYÐYÐYÕYÔYÑYÔYÐYÐYÕYÔY�8ÑYÔYÐYÕYÔY�8ÑYÔYÐYÐYÕYÔYˆ}ÑYÔYÕYÔY ÑYÔYÐYÐYÑYÐYÕYÔYÐ$YÍ#ÈhÉ-Ì-Ð$YÐ$YÑYÔYÐYÑYÐYÐYÐYÑYÐYÕYÕYÔYÐYÑYÔYÑYÔYÐYÐYÐYÐYÐYÐYÐYÝ�8‰}Œ}ÐY ÐYˆ} Ò"ÐYÐYÑYÕYÔYÐYÐYÐYÐYˆ} ÐYÑYÔYÐYÕYÔYÑYÔYÐYÐYÕYÔY�sÑYÔYÐYÕYÔY�sÑYÔYÐYÐYÐYÕYÔYÑYÔYÐYÐYÕYÔY�8ÑYÔYÐYÕYÔY�8ÑYÔYÐYÐYÕYÔYˆ}ÑYÔYÕYÔY ÑYÔYÐYÐYÑYÐYÕYÔYÐ$YÍ#ÈhÉ-Ì-Ð$YÐ$YÑYÔYÐYÑYÐYÐYÐYÑYÐYÕYÕYÔYÐYÑYÔYÑYÔYÐYÐYÐYÐYÐYÐYÐYõ ÐOÐO°w´~×7LÒ7LÑ7NÔ7NÐOÑOÔOÑPÔPˆ
Ø()Ð0¨3Ð0¥%¨¨3¡-¤-Ð0�T -Ñ0Ô0Ð0ˆzÐ0Ò0Ð0Ð0Ñ0Õ0Ô0Ð0Ð0Ð0Ð0ˆzÐ0Ð0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆzÑ0Ô0Ð0Õ0Ô0ˆzÑ0Ô0Ð0Ð0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0�TÑ0Ô0Ð0Õ0Ô0�TÑ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¨3Ñ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Ð0r   c           	      ór  — t          ¦   «         }t          ¦   «         }t          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	        |¦  «        dœz  }t	          j
        d|› �¦  «        d	z   d
|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}}|j        }||k    }	|	sõt	          j        d|	fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }
t	          j
        d|› d|j        › �¦  «        dz   d|
iz  }t          t	          j        |¦  «        ¦  «        ‚d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}	}|j        D ]í}||v }|sãt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }t	          j
        d|j        › d|› d �¦  «        d!z   d"|iz  }
t          t	          j        |
¦  «        ¦  «        ‚d}Œî|                     |j        ¦  «         |j        }||k    }	|	sÕt	          j        d|	fd#||f¦  «        d$t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd$t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }
d%d|
iz  }t          t	          j        |¦  «        ¦  «        ‚dx}}	�Œ’|                     ¦   «         }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}	}dS )+zYKiem tra phan bo tuan tu 115 diem luon thoa man rang buoc tien quyet (DAG Prerequisites).r0   r1   N)úis not)z%(py0)s is not %(py3)sÚnode)r   r(   zKhong the phan bo diem thu z
>assert %(py5)sr   r
   )z6%(py2)s
{%(py2)s = %(py0)s.priority_order
} == %(py4)sÚexpected_order)r   r   Úpy4z$Thu tu phan bo khong khop: expected z, got z
>assert %(py6)sr)   T)Úis)z1%(py2)s
{%(py2)s = %(py0)s.allocated
} is %(py5)sr   r   r   ©Úin)z%(py0)s in %(py2)sÚprereqÚallocated_so_far)r   r   zNode z vi pham DAG: Tien quyet z chua duoc phan bo truoc do!z
>assert %(py4)srZ   )z7%(py2)s
{%(py2)s = %(py0)s.allocated_count
} == %(py4)sr   úassert %(py6)s)z%(py0)s is %(py3)sÚ
extra_nodeúassert %(py5)sr	   r   )r   Úsetr4   Úallocate_next_pointr9   r:   r;   r<   r=   r>   rD   r?   r@   r/   Ú	allocatedÚprerequisitesÚnode_idÚaddrA   )rF   r   r_   rY   rX   rL   rG   Ú@py_format4rJ   rI   Ú@py_format5rN   rH   rK   r^   Ú@py_format3ra   s                    r   Ú-test_sequential_point_allocation_dag_validityzBTestAtlasTreePlanner.test_sequential_point_allocation_dag_validity'   sG  € å"Ñ$Ô$ˆå™5œ5ÐÝ# A s™mœmð 	=ñ 	=ˆNØ×.Ò.Ñ0Ô0ˆDØ#ÐS�4˜tÐ#ÐSÐSÐSÕSÔSÐSÐSÐSÐS�4˜tÐSÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔS�4ÑSÔSÐSÕSÔS�4ÑSÔSÐSÐSÕSÔS˜tÑSÔSÐSÐSÑSÐSÕSÔSÐ%SÀ>Ð%SÐ%SÑSÔSÐSÑSÐSÐSÐSÑSÐSÕSÕSÔSÐSÑSÔSÑSÔSÐSÐSÐSÐSÐSØÔ&ð Ð&¨.Ò8ð ð ð õ ìðð ð ð Ð&¨.ð ñ ô ð õ äñô ð ð õ ìð ñ ô ð õ äð ñ ô ð ð õ äð 'ñ ô ð õ äñô ð ð õ ìð +9ñ ô ð õ äð +9ñ ô ð ð ð ð ñ ð õ ìð c°~ÐbÐbÈTÔM`ÐbÐbñô ð ñ ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð ð ð ”>Ð) TÐ)�> TÐ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)�> TÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)�4Ñ)Ô)Ð)Õ)Ô)�4Ñ)Ô)Ð)Ð)Õ)Ô)�>Ñ)Ô)Õ)Ô) TÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð Ô,ð ð �ØÐ!1Ð1ð ð ð õ ä ðð ð ð �vÐ!1ð ñ ô ð õ äñô ð ð õ ìð ñ ô ð õ äð ñ ô ð ð ð õ äñô ð ð õ ìð "2ñ ô ð õ äð "2ñ ô ð ð ð ð ñ ð õ ä ð h˜DœLÐgÐgÀ6ÐgÐgÐgñô ð ñ ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð ð × Ò  ¤Ñ.Ô.Ð.ØÔ*Ð<Ð*¨nÒ<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð*¨nÐ<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<�7Ñ<Ô<Ð<Õ<Ô<�7Ñ<Ô<Ð<Ð<Õ<Ô<Ð*Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<¨nÑ<Ô<Ð<Õ<Ô<¨nÑ<Ô<Ð<Ð<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ñ<ð ×0Ò0Ñ2Ô2ˆ
Ø!Ð!ˆz˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆz˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆzÑ!Ô!Ð!Õ!Ô!ˆzÑ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÔ&Ð-¨#Ð-Ð&¨#Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð&¨#Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆwÑ-Ô-Ð-Õ-Ô-ˆwÑ-Ô-Ð-Ð-Õ-Ô-Ð&Ñ-Ô-Õ-Ô-¨#Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r   c           	      óh  — t          ¦   «         }|j        }d} ||¦  «        }t          j        }||k    }|�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	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}}|j        }d
} ||¦  «        }t          j        }||k    }|�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	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}}|j        }d} ||¦  «        }t          j        }||k    }|�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	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}}|j        }d} ||¦  «        }t          j        }||k    }|�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	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}}|j        }d} ||¦  «        }t          j        }||k    }|�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	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}}|j        }d} ||¦  «        }t          j        }||k    }|�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	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}}|j        }d} ||¦  «        }t          j        }||k    }|�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	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}}|j        }d} ||¦  «        }t          j        }||k    }|�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	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}}|j        }d} ||¦  «        }t          j        }||k    }|�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	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}}d	S )z9Kiem tra su chuyen tiep giai doan chuan xac theo so diem.r   r
   )z„%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get_current_phase
}(%(py4)s)
} == %(py10)s
{%(py10)s = %(py8)s.PHASE_1_EARLY_SUSTAIN
}r   r   )r   r   rZ   r)   r*   Úpy10zassert %(py12)sÚpy12Nr0   r"   é$   )zˆ%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get_current_phase
}(%(py4)s)
} == %(py10)s
{%(py10)s = %(py8)s.PHASE_2_MID_QUANTITY_GOLD
}é2   éK   éL   )z‰%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get_current_phase
}(%(py4)s)
} == %(py10)s
{%(py10)s = %(py8)s.PHASE_3_ENDGAME_MAX_PROFIT
}éd   r	   )r   Úget_current_phaser   r   r9   r:   r;   r<   r=   r>   r?   r@   r   r!   )	rF   r   rG   rI   rM   Ú@py_assert9Ú@py_assert7Ú@py_format11Ú@py_format13s	            r   Útest_phase_transitionsz+TestAtlasTreePlanner.test_phase_transitionsB   sy  € å"Ñ$Ô$ˆð Ô(ÐN¨ÐNÐ(Ð(¨Ñ+Ô+ÐN­yÔ/NÐNÐ+Ð/NÒNÐNÐNÑNÕNÔNÐNÐNÐNÐNÐ+Ð/NÐNÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔNˆwÑNÔNÐNÕNÔNˆwÑNÔNÐNÐNÕNÔNÐ(ÑNÔNÕNÔN¨ÑNÔNÕNÔNÐ+ÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔN­yÑNÔNÐNÕNÔN­yÑNÔNÐNÐNÕNÔNÐ/NÑNÔNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNØÔ(ÐN¨ÐNÐ(Ð(¨Ñ+Ô+ÐN­yÔ/NÐNÐ+Ð/NÒNÐNÐNÑNÕNÔNÐNÐNÐNÐNÐ+Ð/NÐNÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔNˆwÑNÔNÐNÕNÔNˆwÑNÔNÐNÐNÕNÔNÐ(ÑNÔNÕNÔN¨ÑNÔNÕNÔNÐ+ÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔN­yÑNÔNÐNÕNÔN­yÑNÔNÐNÐNÕNÔNÐ/NÑNÔNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNØÔ(ÐO¨ÐOÐ(Ð(¨Ñ,Ô,ÐOµ	Ô0OÐOÐ,Ð0OÒOÐOÐOÑOÕOÔOÐOÐOÐOÐOÐ,Ð0OÐOÑOÔOÐOÕOÔOÑOÔOÐOÐOÕOÔOˆwÑOÔOÐOÕOÔOˆwÑOÔOÐOÐOÕOÔOÐ(ÑOÔOÕOÔO¨ÑOÔOÕOÔOÐ,ÑOÔOÐOÕOÔOÑOÔOÐOÐOÕOÔOµ	ÑOÔOÐOÕOÔOµ	ÑOÔOÐOÐOÕOÔOÐ0OÑOÔOÐOÐOÑOÐOÐOÐOÐOÐOÑOÐOÕOÕOÔOÐOÑOÔOÑOÔOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOð Ô(ÐS¨ÐSÐ(Ð(¨Ñ,Ô,ÐSµ	Ô0SÐSÐ,Ð0SÒSÐSÐSÑSÕSÔSÐSÐSÐSÐSÐ,Ð0SÐSÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔSˆwÑSÔSÐSÕSÔSˆwÑSÔSÐSÐSÕSÔSÐ(ÑSÔSÕSÔS¨ÑSÔSÕSÔSÐ,ÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔSµ	ÑSÔSÐSÕSÔSµ	ÑSÔSÐSÐSÕSÔSÐ0SÑSÔSÐSÐSÑSÐSÐSÐSÐSÐSÑSÐSÕSÕSÔSÐSÑSÔSÑSÔSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSØÔ(ÐS¨ÐSÐ(Ð(¨Ñ,Ô,ÐSµ	Ô0SÐSÐ,Ð0SÒSÐSÐSÑSÕSÔSÐSÐSÐSÐSÐ,Ð0SÐSÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔSˆwÑSÔSÐSÕSÔSˆwÑSÔSÐSÐSÕSÔSÐ(ÑSÔSÕSÔS¨ÑSÔSÕSÔSÐ,ÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔSµ	ÑSÔSÐSÕSÔSµ	ÑSÔSÐSÐSÕSÔSÐ0SÑSÔSÐSÐSÑSÐSÐSÐSÐSÐSÑSÐSÕSÕSÔSÐSÑSÔSÑSÔSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSØÔ(ÐS¨ÐSÐ(Ð(¨Ñ,Ô,ÐSµ	Ô0SÐSÐ,Ð0SÒSÐSÐSÑSÕSÔSÐSÐSÐSÐSÐ,Ð0SÐSÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔSˆwÑSÔSÐSÕSÔSˆwÑSÔSÐSÐSÕSÔSÐ(ÑSÔSÕSÔS¨ÑSÔSÕSÔSÐ,ÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔSµ	ÑSÔSÐSÕSÔSµ	ÑSÔSÐSÐSÕSÔSÐ0SÑSÔSÐSÐSÑSÐSÐSÐSÐSÐSÑSÐSÕSÕSÔSÐSÑSÔSÑSÔSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSð Ô(ÐT¨ÐTÐ(Ð(¨Ñ,Ô,ÐTµ	Ô0TÐTÐ,Ð0TÒTÐTÐTÑTÕTÔTÐTÐTÐTÐTÐ,Ð0TÐTÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔTˆwÑTÔTÐTÕTÔTˆwÑTÔTÐTÐTÕTÔTÐ(ÑTÔTÕTÔT¨ÑTÔTÕTÔTÐ,ÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔTµ	ÑTÔTÐTÕTÔTµ	ÑTÔTÐTÐTÕTÔTÐ0TÑTÔTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÕTÕTÔTÐTÑTÔTÑTÔTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTØÔ(ÐU¨ÐUÐ(Ð(¨Ñ-Ô-ÐUµÔ1UÐUÐ-Ð1UÒUÐUÐUÑUÕUÔUÐUÐUÐUÐUÐ-Ð1UÐUÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔUˆwÑUÔUÐUÕUÔUˆwÑUÔUÐUÐUÕUÔUÐ(ÑUÔUÕUÔU¨ÑUÔUÕUÔUÐ-ÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔUµÑUÔUÐUÕUÔUµÑUÔUÐUÐUÕUÔUÐ1UÑUÔUÐUÐUÑUÐUÐUÐUÐUÐUÑUÐUÕUÕUÔUÐUÑUÔUÑUÔUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUØÔ(ÐU¨ÐUÐ(Ð(¨Ñ-Ô-ÐUµÔ1UÐUÐ-Ð1UÒUÐUÐUÑUÕUÔUÐUÐUÐUÐUÐ-Ð1UÐUÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔUˆwÑUÔUÐUÕUÔUˆwÑUÔUÐUÐUÕUÔUÐ(ÑUÔUÕUÔU¨ÑUÔUÕUÔUÐ-ÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔUµÑUÔUÐUÕUÔUµÑUÔUÐUÐUÕUÔUÐ1UÑUÔUÐUÐUÑUÐUÐUÐUÐUÐUÑUÐUÕUÕUÔUÐUÑUÔUÑUÔUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUr   c                 óþ  — t          ¦   «         }|                     d¦  «        }t          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd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}||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         }t          j        }|j        }||k    }|sÇt          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}x}}|d         t          j        j                 }d}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}	|                     d¦  «        }t          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd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}||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         }t          j        }|j        }||k    }|sÇt          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}x}}|d         t          j        j                 }d}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}	|                     d¦  «        }t          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd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}||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         }t          j        }|j        }||k    }|sÇt          j        d|fd ||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}x}}|d!         }d"}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        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$         }d#}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}	|d!         }d%}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}	d	S )&z1Kiem tra phan bo theo batch va reset toan bo cay.r"   r
   r#   r$   Úbatch_1r&   úassert %(py8)sr*   Nr   r   r   r   r   Úcurrent_phase)zX%(py1)s == %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.PHASE_1_EARLY_SUSTAIN
}.value
}r   )r'   r(   r   r   zassert %(py9)sr5   Úphase_distribution©z%(py1)s == %(py4)s©r'   rZ   r`   r)   r+   Úbatch_2rr   )z\%(py1)s == %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.PHASE_2_MID_QUANTITY_GOLD
}.value
}Úbatch_3r	   )z]%(py1)s == %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.PHASE_3_ENDGAME_MAX_PROFIT
}.value
}Úcompletion_pctg      Y@r   Útotal_allocated_pointsg        )r   Úallocate_batchr$   r9   r:   r;   r<   r=   r>   r?   r@   rA   Úget_tree_statsr   r   Úvaluer   r!   Ú
reset_tree)rF   r   r|   rL   rM   rH   rN   rO   rG   rI   rJ   rK   Ústats_1Ú@py_assert0rP   Ú@py_format10rj   r‚   Ústats_2rƒ   Ústats_3Ústats_resets                         r   Útest_batch_allocation_and_resetz4TestAtlasTreePlanner.test_batch_allocation_and_resetU   s  € å"Ñ$Ô$ˆð ×(Ò(¨Ñ,Ô,ˆÝ�7‰|Œ|Ð!˜rÐ!ˆ|˜rÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ|˜rÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�sÑ!Ô!Ð!Õ!Ô!�sÑ!Ô!Ð!Ð!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�7Ñ!Ô!Ð!Õ!Ô!�7Ñ!Ô!Ð!Ð!Õ!Ô!ˆ|Ñ!Ô!Õ!Ô!˜rÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØÔ&Ð,¨"Ð,Ð&¨"Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð&¨"Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Ð,Õ,Ô,Ð&Ñ,Ô,Õ,Ô,¨"Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø×(Ò(Ñ*Ô*ˆØ�Ô'ÐP­9Ô+JÐPÐ+JÔ+PÐPÐ'Ð+PÒPÐPÐPÐPÕPÔPÐPÐPÐPÐPÐ'Ð+PÐPÑPÔPÕPÔPÐ'ÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔP­9ÑPÔPÐPÕPÔP­9ÑPÔPÐPÐPÕPÔPÐ+JÑPÔPÕPÔPÐ+PÑPÔPÐPÐPÑPÐPÐPÐPÐPÐPÑPÐPÕPÕPÔPÐPÑPÔPÑPÔPÐPÐPÐPÐPÐPÐPÐPÐPÐPØÐ+Ô,­YÔ-LÔ-RÔSÐYÐWYÐYÐSÐWYÒYÐYÐYÐYÕYÔYÐYÐYÐYÐYÐSÐWYÐYÑYÔYÕYÔYÐSÑYÔYÕYÔYÐWYÑYÔYÐYÐYÑYÐYÐYÐYÐYÐYÑYÐYÕYÕYÔYÐYÑYÔYÑYÔYÐYÐYÐYÐYÐYÐYÐYð ×(Ò(¨Ñ,Ô,ˆÝ�7‰|Œ|Ð!˜rÐ!ˆ|˜rÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ|˜rÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�sÑ!Ô!Ð!Õ!Ô!�sÑ!Ô!Ð!Ð!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�7Ñ!Ô!Ð!Õ!Ô!�7Ñ!Ô!Ð!Ð!Õ!Ô!ˆ|Ñ!Ô!Õ!Ô!˜rÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØÔ&Ð,¨"Ð,Ð&¨"Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð&¨"Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Õ,Ô,ˆwÑ,Ô,Ð,Ð,Õ,Ô,Ð&Ñ,Ô,Õ,Ô,¨"Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø×(Ò(Ñ*Ô*ˆØ�Ô'ÐT­9Ô+NÐTÐ+NÔ+TÐTÐ'Ð+TÒTÐTÐTÐTÕTÔTÐTÐTÐTÐTÐ'Ð+TÐTÑTÔTÕTÔTÐ'ÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔT­9ÑTÔTÐTÕTÔT­9ÑTÔTÐTÐTÕTÔTÐ+NÑTÔTÕTÔTÐ+TÑTÔTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÕTÕTÔTÐTÑTÔTÑTÔTÐTÐTÐTÐTÐTÐTÐTÐTÐTØÐ+Ô,­YÔ-PÔ-VÔWÐ]Ð[]Ð]ÐWÐ[]Ò]Ð]Ð]Ð]Õ]Ô]Ð]Ð]Ð]Ð]ÐWÐ[]Ð]Ñ]Ô]Õ]Ô]ÐWÑ]Ô]Õ]Ô]Ð[]Ñ]Ô]Ð]Ð]Ñ]Ð]Ð]Ð]Ð]Ð]Ñ]Ð]Õ]Õ]Ô]Ð]Ñ]Ô]Ñ]Ô]Ð]Ð]Ð]Ð]Ð]Ð]Ð]ð ×(Ò(¨Ñ,Ô,ˆÝ�7‰|Œ|Ð!˜rÐ!ˆ|˜rÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ|˜rÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�sÑ!Ô!Ð!Õ!Ô!�sÑ!Ô!Ð!Ð!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�7Ñ!Ô!Ð!Õ!Ô!�7Ñ!Ô!Ð!Ð!Õ!Ô!ˆ|Ñ!Ô!Õ!Ô!˜rÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØÔ&Ð-¨#Ð-Ð&¨#Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð&¨#Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆwÑ-Ô-Ð-Õ-Ô-ˆwÑ-Ô-Ð-Ð-Õ-Ô-Ð&Ñ-Ô-Õ-Ô-¨#Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ø×(Ò(Ñ*Ô*ˆØ�Ô'ÐU­9Ô+OÐUÐ+OÔ+UÐUÐ'Ð+UÒUÐUÐUÐUÕUÔUÐUÐUÐUÐUÐ'Ð+UÐUÑUÔUÕUÔUÐ'ÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔU­9ÑUÔUÐUÕUÔU­9ÑUÔUÐUÐUÕUÔUÐ+OÑUÔUÕUÔUÐ+UÑUÔUÐUÐUÑUÐUÐUÐUÐUÐUÑUÐUÕUÕUÔUÐUÑUÔUÑUÔUÐUÐUÐUÐUÐUÐUÐUÐUÐUØÐ'Ô(Ð1¨EÐ1Ð(¨EÒ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð(¨EÐ1Ñ1Ô1Õ1Ô1Ð(Ñ1Ô1Õ1Ô1¨EÑ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ð 	×ÒÑÔÐØÔ&Ð+¨!Ð+Ð&¨!Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð&¨!Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Ð+Õ+Ô+Ð&Ñ+Ô+Õ+Ô+¨!Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ø×,Ò,Ñ.Ô.ˆØÐ3Ô4Ð9¸Ð9Ð4¸Ò9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð4¸Ð9Ñ9Ô9Õ9Ô9Ð4Ñ9Ô9Õ9Ô9¸Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ØÐ+Ô,Ð3°Ð3Ð,°Ò3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð,°Ð3Ñ3Ô3Õ3Ô3Ð,Ñ3Ô3Õ3Ô3°Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3r   c                 ó  — t          ¦   «         }|                     d¦  «        }t          |¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd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
}
d|
dd|
d|	d         › d|j        › d|	d         › d�d|	d         › �ddg	}|	d                              ¦   «         D ]#\  }}|                     d|d›d|d›d�¦  «         Œ$|                     ddg¦  «         t!          |	d                              ¦   «         d „ d!¬"¦  «        D ]#\  }}|                     d|d#›d|d›d�¦  «         Œ$|                     |
d$|
dg¦  «         d%                     |¦  «        }t%          |¦  «         d&}||v }|s—t          j        d'|fd(||f¦  «        t          j        |¦  «        d)t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd)d*œz  }d+d,|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}}|	d         }d}||k    }|slt          j        d|fd-||f¦  «        t          j        |¦  «        t          j        |¦  «        d.œz  }d/d0|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}x}}d	S )1zž
        Mo phong phan bo tron ven 115 diem va in bao cao dinh luong.
        Ghi chu bat buoc: [MO PHONG THUAT TOAN HEADLESS - KHONG PHAI LIVE GAME]
        r	   r
   r#   r$   re   r&   r}   r*   NzP================================================================================Ú z6 [MO PHONG THUAT TOAN HEADLESS - KHONG PHAI LIVE GAME]zH BAO CAO PHAN BO CAY NOI TAI ATLAS 115 DIEM (ATLAS PASSIVE TREE PLANNER)z# Tong so diem noi tai da phan bo : r…   z / z (r„   z%)z$ Giai doan dat duoc               : r~   zP--------------------------------------------------------------------------------z- PHAN BO THEO GIAI DOAN (PHASE DISTRIBUTION):r   z   * z<30z: z>3z diemz6 PHAN BO THEO DANH MUC CO CHE (CATEGORY DISTRIBUTION):Úcategory_distributionc                 ó   — | d         S )Nr0   r   )Úxs    r   ú<lambda>zSTestAtlasTreePlanner.test_print_simulation_report_rule5_compliant.<locals>.<lambda>–   s   € ÐWXÐYZÔW[€ r   T)ÚkeyÚreversez<20z_ KET LUAN: Lo trinh DAG 115 diem hoan hao, khong co chu trinh, thoa man 100% DAG prerequisites.ú
z5[MO PHONG THUAT TOAN HEADLESS - KHONG PHAI LIVE GAME]r\   )z%(py1)s in %(py3)sÚ
output_str)r'   r(   rb   r   r€   r�   r`   r)   )r   r†   r$   r9   r:   r;   r<   r=   r>   r?   r@   r‡   r8   ÚitemsÚappendÚextendrE   ÚjoinÚprint)rF   Úcapsysr   re   rL   rM   rH   rN   rO   ÚstatsÚheaderÚreportr   ÚcountÚcatrš   r‹   ri   rJ   rI   rj   s                        r   Ú,test_print_simulation_report_rule5_compliantzATestAtlasTreePlanner.test_print_simulation_report_rule5_compliantx   so  € õ
 #Ñ$Ô$ˆØ×*Ò*¨3Ñ/Ô/ˆ	Ý�9‰~Œ~Ð$ Ð$ˆ~ Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆ~ Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$�sÑ$Ô$Ð$Õ$Ô$�sÑ$Ô$Ð$Ð$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$�9Ñ$Ô$Ð$Õ$Ô$�9Ñ$Ô$Ð$Ð$Õ$Ô$ˆ~Ñ$Ô$Õ$Ô$ Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$à×&Ò&Ñ(Ô(ˆàˆàØØDØVØð I°%Ð8PÔ2Qð  Ið  IÐV]ÔVið  Ið  IÐmrð  tDô  nEð  Ið  Ið  IØK°5¸Ô3IÐKÐKØØ;ð

ˆð "Ð"6Ô7×=Ò=Ñ?Ô?ð 	@ð 	@‰LˆE�5Ø�MŠMÐ> %Ð>Ð>Ð>¨uÐ>Ð>Ð>Ð>Ñ?Ô?Ð?Ð?à�ŠØØDð
ñ 	ô 	ð 	õ ! Ð'>Ô!?×!EÒ!EÑ!GÔ!GÈ^È^ÐeiÐjÑjÔjð 	>ð 	>‰JˆC�Ø�MŠMÐ< #Ð<Ð<Ð<¨UÐ<Ð<Ð<Ð<Ñ=Ô=Ð=Ð=à�ŠØØmØØð	
ñ 	ô 	ð 	ð —Y’Y˜vÑ&Ô&ˆ
ÝˆjÑÔÐð GÐTÐFÈ*ÐTÐTÐTÐTÕTÔTÐTÐTÐTÐTÐFÈ*ÐTÑTÔTÕTÔTÐFÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔTÈ*ÑTÔTÐTÕTÔTÈ*ÑTÔTÐTÐTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÕTÕTÔTÐTÑTÔTÑTÔTÐTÐTÐTÐTÐTØÐ-Ô.Ð5°#Ð5Ð.°#Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð.°#Ð5Ñ5Ô5Õ5Ô5Ð.Ñ5Ô5Õ5Ô5°#Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5r   N)Ú__name__Ú
__module__Ú__qualname__rU   rl   rz   r�   r¦   r   r   r   r   r      sc   € € € € € ð1ð 1ð 1ð&.ð .ð .ð6Vð Vð Vð&!4ð !4ð !4ðF-6ð -6ð -6ð -6ð -6r   r   )Ú__doc__Úbuiltinsr;   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter9   ÚpytestÚ+src.assistant_tool.atlas.atlas_tree_plannerr   r   r   r   r   r   r   ú<module>r±      s¢   ððð ð € € € € € € € € € € € € €€€€ðð ð ð ð ð ð ð ð ð ðR6ð R6ð R6ð R6ð R6ñ R6ô R6ð R6ð R6ð R6r   