§
    ]ŽÁj(	  ã                  ó^   — d Z ddlmZ ddlZddlmc mZ ddl	m
Z
 ddlZ G d„ d¦  «        ZdS )ué   
Tier 1: Feature Coverage â€” Cocos Creator Resource Asset Bundle Integrity.
Validates that client/cocos/assets/resources/ contains all required game assets:
UI atlases, characters, monsters, weapons, currencies, map tiles, and VFX.
é    )ÚannotationsN)ÚPathc                  óT   — e Zd ZdZej        dd„¦   «         Zdd„Zdd„Zdd	„Z	dd
„Z
dS )ÚTestCocosResourceAssetszMVerifies that Cocos Creator has complete game assets in its resources bundle.Úreturnr   c                ó’  — t          d¦  «        }|j        } |¦   «         }|s t          j        d¦  «        dz   dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          t          j	        |¦  «        ¦  «        ‚d x}}|S )Nzclient/cocos/assets/resourcesz$Cocos resources directory must existzC
>assert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}Úp©Úpy0Úpy2Úpy4)
r   ÚexistsÚ
@pytest_arÚ_format_assertmsgÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)Úselfr	   Ú@py_assert1Ú@py_assert3Ú@py_format5s        ú@C:\Projects\FreeExile\tests\e2e_cocos\test_tier1_cocos_assets.pyÚresources_dirz%TestCocosResourceAssets.resources_dir   sË   € åÐ0Ñ1Ô1ˆØŒxÐAˆxˆx‰zŒzÐAˆzÐAÕAÔAÐAÑAÔAÐAÑAÐAÕAÔAÑAÔAÐAÐAÕAÔAˆqÑAÔAÐAÕAÔAˆqÑAÔAÐAÐAÕAÔAˆxÑAÔAÕAÔAˆzÑAÔAÐAÐAÑAÐAÕAÕAÔAÐAÑAÔAÑAÔAÐAÐAÐAÐAÐAØˆó    r   ÚNonec                ó–  — g d¢}|D ]Á}||z  }|j         } |¦   «         }|s£t          j        d|› �¦  «        dz   dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}}ŒÂd S )N)Ú
animationsÚbannersÚ
charactersÚ
currenciesÚenvironmentÚloadingÚmapÚmonstersÚ	portraitsÚ
savage_vfxÚshopÚskillsÚuiÚvfxÚvltk1Úweaponsz$Missing required resource category: úC
>assert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.is_dir
}()
}Úcat_pathr
   ©	Úis_dirr   r   r   r   r   r   r   r   )r   r   Úrequired_categoriesÚcatr1   r   r   r   s           r   Ú%test_essential_asset_categories_existz=TestCocosResourceAssets.test_essential_asset_categories_exist   s  € ð
ð 
ð 
Ðð$ 'ð 	Sð 	SˆCØ$ sÑ*ˆHØ”?ÐR�?�?Ñ$Ô$ÐRÐ$ÐRÕRÔRÐ&RÈSÐ&RÐ&RÑRÔRÐRÑRÐRÕRÔRÑRÔRÐRÐRÕRÔR�8ÑRÔRÐRÕRÔR�8ÑRÔRÐRÐRÕRÔR�?ÑRÔRÕRÔRÐ$ÑRÔRÐRÐRÑRÐRÕRÕRÔRÐRÑRÔRÑRÔRÐRÐRÐRÐRÐRÐRð	Sð 	Sr   c                óœ  — g d¢}|D ]Ä}|dz  |z  }|j         } |¦   «         }|s£t          j        d|› �¦  «        dz   dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}}ŒÅd S )N)
ÚcombatÚ
ascendancyÚdialogueÚendgame_atlasÚguildÚmeridianÚquestsÚsecurityÚstashÚ	agent_orbr,   zMissing UI submodule: r0   Úmod_pathr
   r2   )r   r   Ú
ui_modulesÚmodrB   r   r   r   s           r   Útest_ui_submodules_existz0TestCocosResourceAssets.test_ui_submodules_exist-   s  € ð
ð 
ð 
ˆ
ð ð 	Eð 	EˆCØ$ tÑ+¨cÑ1ˆHØ”?ÐD�?�?Ñ$Ô$ÐDÐ$ÐDÕDÔDÐ&D¸sÐ&DÐ&DÑDÔDÐDÑDÐDÕDÔDÑDÔDÐDÐDÕDÔD�8ÑDÔDÐDÕDÔD�8ÑDÔDÐDÐDÕDÔD�?ÑDÔDÕDÔDÐ$ÑDÔDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDð	Eð 	Er   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  }t          j	        dt          |¦  «        › �¦  «        d	z   d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )Nz*.*i,  )ú>=)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)sÚlenÚtotal_files)r   Úpy1Úpy3Úpy6zExpected >= 300 assets, found z
>assert %(py8)sÚpy8)ÚlistÚrglobrH   r   Ú_call_reprcomparer   r   r   r   r   r   r   )r   r   rI   Ú@py_assert2Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9s           r   Útest_minimum_asset_file_countz5TestCocosResourceAssets.test_minimum_asset_file_count>   se  € Ý˜=×.Ò.¨uÑ5Ô5Ñ6Ô6ˆÝ�;ÑÔÐ[ 3Ð[Ð 3Ò&Ð[Ð[Ñ[Õ[Ô[Ð[Ð[Ð[Ð[Ð 3Ð[Ñ[Ô[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[�sÑ[Ô[Ð[Õ[Ô[�sÑ[Ô[Ð[Ð[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[�;Ñ[Ô[Ð[Õ[Ô[�;Ñ[Ô[Ð[Ð[Õ[Ô[ÐÑ[Ô[Õ[Ô[ 3Ñ[Ô[Ð[Ð[Ñ[Ð[Õ[Ô[Ð([ÍÈ[ÑIYÔIYÐ([Ð([Ñ[Ô[Ð[Ñ[Ð[Ð[Ð[Ñ[Ð[Õ[Õ[Ô[Ð[Ñ[Ô[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[r   c                ó�  — |dz  }d}||z  }|j         } |¦   «         }|sžddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}d}||z  }|j         } |¦   «         }|sžddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}d}||z  }|j         } |¦   «         }|sžddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}d S )Nr-   z"savage_primal_skills_vfx_atlas.pngzMassert %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = (%(py0)s / %(py2)s).exists
}()
}Úvfx_dir)r   r   Úpy5Úpy7z#savage_primal_skills_vfx_atlas.jsonz)savage_primal_skills_vfx_atlas_normal.png)r   r   r   r   r   r   r   r   )r   r   rX   r   r   rS   Ú@py_assert6Ú@py_format8s           r   Útest_vfx_atlas_and_normal_existz7TestCocosResourceAssets.test_vfx_atlas_and_normal_existB   sš  € Ø %Ñ'ˆØ>ÐH�Ð>Ñ>ÐHÐ>ÔFÐHÐFÐFÑHÔHÐHÐHÐHÐHÐHÕHÔHÑHÔHÐHÐHÕHÔH�ÑHÔHÐHÕHÔH�ÑHÔHÐHÐHÕHÔHÐ>ÑHÔHÕHÔHÐFÑHÔHÕHÔHÐHÑHÔHÐHÐHÑHÐHÕHÕHÔHÐHÑHÔHÑHÔHÐHÐHÐHÐHÐHÐHÐHÐHÐHØ?ÐI�Ð?Ñ?ÐIÐ?ÔGÐIÐGÐGÑIÔIÐIÐIÐIÐIÐIÕIÔIÑIÔIÐIÐIÕIÔI�ÑIÔIÐIÕIÔI�ÑIÔIÐIÐIÕIÔIÐ?ÑIÔIÕIÔIÐGÑIÔIÕIÔIÐIÑIÔIÐIÐIÑIÐIÕIÕIÔIÐIÑIÔIÑIÔIÐIÐIÐIÐIÐIÐIÐIÐIÐIØEÐO�ÐEÑEÐOÐEÔMÐOÐMÐMÑ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ÐEÑOÔOÕOÔOÐMÑ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ÐOr   N)r   r   )r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚpytestÚfixturer   r6   rE   rV   r]   © r   r   r   r      sœ   € € € € € ØWÐWà„^ðð ð ñ „^ðð
Sð Sð Sð Sð.Eð Eð Eð Eð"\ð \ð \ð \ðPð Pð Pð Pð Pð Pr   r   )ra   Ú
__future__r   Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   Úpathlibr   rb   r   rd   r   r   ú<module>rk      s•   ððð ð #Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € Ð Ð Ð Ð Ð Ð Ø €€€ð9Pð 9Pð 9Pð 9Pð 9Pñ 9Pô 9Pð 9Pð 9Pð 9Pr   