§
    ²¼jœ  ã                   óP   — d Z ddlZddlmZmZmZ ddlmZmZ  G d„ d¦  «        Z	dS )au  
Unit Test Suite for FreeExile Beggar's Storyline & Chronicle Engine.
Validates:
- Initialization of player story state.
- Unlocking journal entries on quest completion.
- Evaluation of Beggar ascent stages (Mendicant -> Sovereign Outcast).
- Narrative Act transitions (Act I -> Act V).
- Cutscene triggers on milestone quests.
- Journal reading and serialization summary.
é    N)ÚStoryActÚBeggarAscentStageÚPlayerStoryState)ÚStorylineEngineÚcreate_default_storyline_enginec                   ó„   — e Zd Zej        defd„¦   «         Zdeddfd„Zdeddfd„Zdeddfd„Z	deddfd„Z
deddfd	„ZdS )
ÚTestStorylineEngineÚreturnc                 ó   — t          ¦   «         S )N)r   )Úselfs    ú9C:\Projects\FreeExile\tests\unit\test_storyline_engine.pyÚstory_enginez TestStorylineEngine.story_engine   s   € å.Ñ0Ô0Ð0ó    r   Nc                 ó,  — d}|                      |¦  «        }|j        |k    sJ ‚|j        t          j        k    sJ ‚|j        t          j        k    sJ ‚|j        dk    sJ ‚t          |j
        ¦  «        dk    sJ ‚t          |j        ¦  «        dk    sJ ‚d S )NÚtest_beggar_001u   Káº» Ä‚n MÃ y RÃ¡ch RÆ°á»›ir   )Úinitialize_player_storyÚ	player_idÚcurrent_actr   ÚACT_I_HUNGERÚcurrent_stager   Ú	MENDICANTÚreputation_titleÚlenÚunlocked_journal_idsÚcompleted_acts©r   r   r   Ústates       r   Ú test_player_story_initializationz4TestStorylineEngine.test_player_story_initialization   s¯   € Ø%ˆ	Ø×4Ò4°YÑ?Ô?ˆàŒ )Ò+Ð+Ð+Ð+ØÔ ¥HÔ$9Ò9Ð9Ð9Ð9ØÔ"Õ&7Ô&AÒAÐAÐAÐAØÔ%Ð)FÒFÐFÐFÐFÝ�5Ô-Ñ.Ô.°!Ò3Ð3Ð3Ð3Ý�5Ô'Ñ(Ô(¨AÒ-Ð-Ð-Ð-Ð-Ð-r   c                 óð   — d}|                      |d¦  «        }d|d         v sJ ‚|                     |¦  «        }d|j        v sJ ‚|                     d¦  «        }|€J ‚|j        dk    sJ ‚d|j        v sJ ‚d S )NÚtest_beggar_002Ú!quest_norm_01_thuc_tinh_tang_kiemÚjournal_01_chiec_bat_voÚunlocked_journalsu    Chiáº¿c BÃ¡t Vá»¡ BÃªn Bá»� Ä�Ã¡u%   Khi cÆ¡n Ä‘Ã³i vÆ°á»£t qua ná»—i sá»£)Úon_quest_completedÚget_player_story_stater   Úget_journalÚtitleÚquote_highlight)r   r   r   Úresr   Úentrys         r   Ú&test_journal_unlock_on_quest_completedz:TestStorylineEngine.test_journal_unlock_on_quest_completed(   s©   € Ø%ˆ	Ø×-Ò-¨iÐ9\Ñ]Ô]ˆà(¨CÐ0CÔ,DÐDÐDÐDÐDØ×3Ò3°IÑ>Ô>ˆØ(¨EÔ,FÐFÐFÐFÐFà×(Ò(Ð)BÑCÔCˆØÐ Ð Ð ØŒ{Ð@Ò@Ð@Ð@Ð@Ø6¸%Ô:OÐOÐOÐOÐOÐOÐOr   c                 ó¤   — d}|                      |d¦  «        }d|d         v sJ ‚|j                             d¦  «        }|€J ‚|j        dk    sJ ‚d S )NÚtest_beggar_003r!   Úcutscene_act_1_introÚtriggered_cutscenesu   Káº» HÃ nh Kháº¥t)r$   Ú
_cutscenesÚgetÚspeaker_name)r   r   r   r)   Úcutscenes        r   Ú%test_cutscene_triggered_on_act1_questz9TestStorylineEngine.test_cutscene_triggered_on_act1_quest5   sr   € Ø%ˆ	Ø×-Ò-¨iÐ9\Ñ]Ô]ˆà%¨Ð-BÔ)CÐCÐCÐCÐCØÔ*×.Ò.Ð/EÑFÔFˆØÐ#Ð#Ð#ØÔ$Ð(;Ò;Ð;Ð;Ð;Ð;Ð;r   c                 óÒ  — d}|                      |d¦  «         |                      |d¦  «         |                      |d¦  «         |                     |¦  «        }|j        t          j        k    sJ ‚|j        t          j        k    sJ ‚|                      |d¦  «         |                     |¦  «        }|j        t          j        k    sJ ‚|j        t          j	        k    sJ ‚t          j        |j
        v sJ ‚|                      |d¦  «         |                     |¦  «        }|j        t          j        k    sJ ‚|j        t          j        k    sJ ‚t          j	        |j
        v sJ ‚|                      |d¦  «         |                     |¦  «        }|j        t          j        k    sJ ‚|j        t          j        k    sJ ‚t          j        |j
        v sJ ‚|                      |d¦  «         |                     |¦  «        }|j        t          j        k    sJ ‚|j        t          j        k    sJ ‚t          j        |j
        v sJ ‚t#          |j
        ¦  «        d	k    sJ ‚|j        d
k    sJ ‚d S )NÚtest_beggar_004r!   Ú!quest_norm_02_khai_thong_dan_dienÚ!quest_norm_03_luyen_khi_hoa_thachÚ quest_norm_04_diet_u_hon_kiem_noÚquest_epic_01_phong_ma_co_tranÚ#quest_epic_02_nghich_menh_dai_huyetÚ'quest_epic_04_van_gioi_than_ma_tranh_baé   u#   BÃ¡ Chá»§ Tá»‘i Cao CÃµi LÆ°u Ä�Ã y)r$   r%   r   r   r   r   r   r   Ú	SCAVENGERÚACT_II_MIASMAr   ÚBONE_WARRIORÚACT_III_CRUCIBLEÚPRIMAL_HUNTERÚACT_IV_TITAN_HUNTÚSOVEREIGN_OUTCASTÚACT_V_SOVEREIGNr   r   r   s       r   Ú*test_stage_and_act_progression_across_actsz>TestStorylineEngine.test_stage_and_act_progression_across_acts>   s�  € Ø%ˆ	ð 	×'Ò'¨	Ð3VÑWÔWÐWØ×'Ò'¨	Ð3VÑWÔWÐWØ×'Ò'¨	Ð3VÑWÔWÐWØ×3Ò3°IÑ>Ô>ˆØÔ ¥HÔ$9Ò9Ð9Ð9Ð9ØÔ"Õ&7Ô&AÒAÐAÐAÐAð 	×'Ò'¨	Ð3UÑVÔVÐVØ×3Ò3°IÑ>Ô>ˆØÔ"Õ&7Ô&AÒAÐAÐAÐAØÔ ¥HÔ$:Ò:Ð:Ð:Ð:ÝÔ$¨Ô(<Ð<Ð<Ð<Ð<ð 	×'Ò'¨	Ð3SÑTÔTÐTØ×3Ò3°IÑ>Ô>ˆØÔ"Õ&7Ô&DÒDÐDÐDÐDØÔ ¥HÔ$=Ò=Ð=Ð=Ð=ÝÔ%¨Ô)=Ð=Ð=Ð=Ð=ð 	×'Ò'¨	Ð3XÑYÔYÐYØ×3Ò3°IÑ>Ô>ˆØÔ"Õ&7Ô&EÒEÐEÐEÐEØÔ ¥HÔ$>Ò>Ð>Ð>Ð>ÝÔ(¨EÔ,@Ð@Ð@Ð@Ð@ð 	×'Ò'¨	Ð3\Ñ]Ô]Ð]Ø×3Ò3°IÑ>Ô>ˆØÔ"Õ&7Ô&IÒIÐIÐIÐIØÔ ¥HÔ$<Ò<Ð<Ð<Ð<ÝÔ)¨UÔ-AÐAÐAÐAÐAÝ�5Ô'Ñ(Ô(¨AÒ-Ð-Ð-Ð-ØÔ%Ð)NÒNÐNÐNÐNÐNÐNr   c                 ó.  — d}|                      |d¦  «         |                     |d¦  «        �J ‚|                     |d¦  «        }|€J ‚|j        dk    sJ ‚|                     |¦  «        }|d         |k    sJ ‚|d         dk    sJ ‚d|d         v sJ ‚d S )	NÚtest_beggar_005r!   Ú journal_15_vinh_quang_dinh_phongr"   r   Útotal_journals_unlockedé   Úread_journal_ids)r$   Úread_journalÚ
journal_idÚget_chronicle_summary)r   r   r   ÚjournalÚsummarys        r   Ú'test_read_journal_and_chronicle_summaryz;TestStorylineEngine.test_read_journal_and_chronicle_summaryg   sÓ   € Ø%ˆ	Ø×'Ò'¨	Ð3VÑWÔWÐWð ×(Ò(¨Ð4VÑWÔWÐ_Ð_Ð_ð ×+Ò+¨IÐ7PÑQÔQˆØÐ"Ð"Ð"ØÔ!Ð%>Ò>Ð>Ð>Ð>à×4Ò4°YÑ?Ô?ˆØ�{Ô# yÒ0Ð0Ð0Ð0ØÐ0Ô1°QÒ6Ð6Ð6Ð6Ø(¨GÐ4FÔ,GÐGÐGÐGÐGÐGÐGr   )Ú__name__Ú
__module__Ú__qualname__ÚpytestÚfixturer   r   r   r+   r4   rF   rR   © r   r   r	   r	      sÿ   € € € € € Ø„^ð1˜oð 1ð 1ð 1ñ „^ð1ð	.¸_ð 	.ÐQUð 	.ð 	.ð 	.ð 	.ðPÀ?ð PÐW[ð Pð Pð Pð Pð<À/ð <ÐVZð <ð <ð <ð <ð'OÀð 'OÐ[_ð 'Oð 'Oð 'Oð 'OðRHÀOð HÐX\ð Hð Hð Hð Hð Hð Hr   r	   )
Ú__doc__rV   Úserver.world.storyline_typesr   r   r   Úserver.world.storyline_enginer   r   r	   rX   r   r   ú<module>r\      sº   ðð	ð 	ð €€€ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð^Hð ^Hð ^Hð ^Hð ^Hñ ^Hô ^Hð ^Hð ^Hð ^Hr   