§
    à¯j7  ã                   ó®   — 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	ddl
Z
ddlmZ ddlmZmZ dZe
j        d„ ¦   «         Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ ZdS )u  
Unit tests for Poe2GraphicsOptimizer (src/assistant_tool/graphics_optimizer.py)
=============================================================================
Kiá»ƒm thá»­ toÃ n diá»‡n cÃ¡c chá»©c nÄƒng:
1. Ä�á»�c vÃ  nháº­n diá»‡n file cáº¥u hÃ¬nh.
2. Sao lÆ°u an toÃ n (.bak) vÃ  phá»¥c há»“i hoÃ n háº£o (restore).
3. Ã�p dá»¥ng cÃ¡c profile: ultra_low (Potato Mode), low_1080p.
4. Báº£o toÃ n nguyÃªn váº¹n cÃ¡c section ngoÃ i scope ([LOGIN], [ACTION_KEYS], [UI]).
5. Báº£o toÃ n cÃ¡c key Ä‘áº·c biá»‡t (.gamepad) vÃ  Ä‘á»‹nh dáº¡ng file.
é    N)ÚPath)ÚPoe2GraphicsOptimizerÚPROFILESaÌ  [LOGIN]
save_login=true
gateway_id=Singapore
username=tester@example.com
account_name=HERO#1234
[DISPLAY]
resolution_width=2560
resolution_height=1440
renderer_type=DirectX12
fullscreen=true
maximize_window=true
borderless_windowed_fullscreen=true
shadow_type=High
vsync_mode=On
use_dynamic_particle_culling2=false
screenspace_effects=2
screenspace_effects_resolution=1
light_quality=2
texture_filtering=2
bloom_strength=0.5
framerate_limit=144
framerate_limit_enabled=true
background_framerate_limit=60
background_framerate_limit_enabled=true
water_detail=2
global_illumination_detail=2
time_manipulation_effects=true
screen_shake_v2=true
triple_buffering=true
upscale=NIS
upscale_quality=Quality
[SOUND]
master_volume2=80
mute_in_background=false
channel_count=high
reverb_enabled2=true
[UI]
always_highlight=true
always_highlight.gamepad=true
use_wasd_to_move=true
reduce_user_interface_animations=false
[GENERAL]
user_input_mode=wasd
last_selected_KBM_input_mode=wasd
c               #   óä   K  — t          j        ¦   «         5 } t          | ¦  «        dz  }|                     t          d¬¦  «         t          | ¦  «        |fV — d d d ¦  «         d S # 1 swxY w Y   d S )Nzpoe2_production_Config.iniúutf-8©Úencoding)ÚtempfileÚTemporaryDirectoryr   Ú
write_textÚSAMPLE_INI_CONTENT)ÚtdÚini_paths     ú5C:\Projects\AutoPOE2\tests\test_graphics_optimizer.pyÚtemp_ini_dirr   C   s¸   è è € å	Ô	$Ñ	&Ô	&ð !¨"Ý˜‘8”8Ð:Ñ:ˆØ×ÒÕ.¸ÐÑAÔAÐAÝ�2‰hŒh˜Ð Ð Ð Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !s   –AA%Á%A)Á,A)c                 óÒ  — | \  }}t          j        |¬¦  «        }||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        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d }d S )	N)Úoverride_path©ú==)z%(py0)s == %(py2)sÚfoundr   )Úpy0Úpy2zassert %(py4)sÚpy4)
r   Úfind_config_pathÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)r   Ú_r   r   Ú@py_assert1Ú@py_format3Ú@py_format5s          r   Útest_find_config_path_overrider'   K   s  € Ø�K€A€xÝ!Ô2ÀÐJÑJÔJ€EØ�HÒÐÐÐÕÔÐÐÐÐˆ5�HÐÑÔÐÕÔÑÔÐÐÕÔˆ5ÑÔÐÕÔˆ5ÑÔÐÐÐÕÔÑÔÐÐÕÔ�HÑÔÐÕÔ�HÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐó    c                 óž  — | \  }}t          j        |¬¦  «        }|d         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         }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         }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         }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         }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 )N©Úconfig_pathÚLOGINÚusernameútester@example.comr   ©z%(py1)s == %(py4)s©Úpy1r   úassert %(py6)sÚpy6ÚDISPLAYÚresolution_widthÚ2560Úrenderer_typeÚ	DirectX12ÚSOUNDÚmute_in_backgroundÚfalseÚUIúalways_highlight.gamepadÚtrue)r   Úget_current_settingsr   r   r    r!   r"   )	r   r#   r   ÚsettingsÚ@py_assert0Ú@py_assert3Ú@py_assert2r&   Ú@py_format7s	            r   Útest_get_current_settingsrE   Q   s�  € Ø�K€A€xÝ$Ô9ÀhÐOÑOÔO€HØ�GÔ˜ZÔ(Ð@Ð,@Ð@Ð(Ð,@Ò@Ð@Ð@Ð@Õ@Ô@Ð@Ð@Ð@Ð@Ð(Ð,@Ð@Ñ@Ô@Õ@Ô@Ð(Ñ@Ô@Õ@Ô@Ð,@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ø�IÔÐ1Ô2Ð<°fÐ<Ð2°fÒ<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð2°fÐ<Ñ<Ô<Õ<Ô<Ð2Ñ<Ô<Õ<Ô<°fÑ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ø�IÔ˜Ô/Ð>°;Ð>Ð/°;Ò>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð/°;Ð>Ñ>Ô>Õ>Ô>Ð/Ñ>Ô>Õ>Ô>°;Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ø�GÔÐ1Ô2Ð=°gÐ=Ð2°gÒ=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð2°gÐ=Ñ=Ô=Õ=Ô=Ð2Ñ=Ô=Õ=Ô=°gÑ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ø�DŒ>Ð4Ô5Ð?¸Ð?Ð5¸Ò?Ð?Ð?Ð?Õ?Ô?Ð?Ð?Ð?Ð?Ð5¸Ð?Ñ?Ô?Õ?Ô?Ð5Ñ?Ô?Õ?Ô?¸Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?r(   c                 óŒ  — | \  }}t          j        |¬¦  «        \  }}g }d }||u}|}|r|j        }	 |	¦   «         }
|
}|�sLt          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  }| 	                    |¦  «         |rddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |
¦  «        d	œz  }| 	                    |¦  «         t          j
        |d
¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}	}
g }d }||u}|}|r|j        }	 |	¦   «         }
|
}|�sLt          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  }| 	                    |¦  «         |rddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |
¦  «        d	œz  }| 	                    |¦  «         t          j
        |d
¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}	}
|j        }d} ||¬¦  «        }|t          k    }|�s
t          j        d|fd|t          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dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}|                     dd¬¦  «         |j        }d} ||¬¦  «        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}t          j        |¬¦  «        }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} ||¬¦  «        }|t          k    }|�s
t          j        d|fd|t          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dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}d S )#Nr*   )úis not)z%(py2)s is not %(py5)sÚbase_bak)r   Úpy5z%(py7)sÚpy7z>%(py13)s
{%(py13)s = %(py11)s
{%(py11)s = %(py9)s.exists
}()
})Úpy9Úpy11Úpy13r   zassert %(py16)sÚpy16Úts_bakr   r   r   )zX%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.read_text
}(encoding=%(py4)s)
} == %(py8)sr   )r   r   r   r3   Úpy8zassert %(py10)sÚpy10ÚCORRUPTED_OR_CHANGED_CONTENT)zX%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.read_text
}(encoding=%(py4)s)
} == %(py9)sr   )r   r   r   r3   rK   zassert %(py11)srL   T)Úis)z%(py0)s is %(py3)sÚrestored)r   Úpy3zassert %(py5)srI   )r   Úbackup_configÚexistsr   r   r   r   r   r    ÚappendÚ_format_boolopr!   r"   Ú	read_textr   r   Úrestore_backup)r   r#   r   rH   rO   r$   Ú@py_assert4rB   rA   Ú@py_assert10Ú@py_assert12Ú@py_format6Ú@py_format8Ú@py_format14Ú@py_format15Ú@py_format17Ú@py_assert5Ú@py_assert7Ú@py_format9Ú@py_format11Ú@py_assert8Ú@py_format10Ú@py_format12rT   rC   Ú@py_format4s                             r   Útest_backup_and_restorerl   [   s_  € Ø�K€A€xÝ,Ô:ÀxÐPÑPÔPÑ€HˆfØ5Ð5˜4Ð5ˆ8˜4ÐÐ5Ð5Ð5Ð5Ð5 H¤OÐ5 O OÑ$5Ô$5Ð5Ð$5Ð5Ð5Ñ5Õ5Ô5Ð5Ð5Ð5Ð5ˆ8˜4Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆ8Ñ5Ô5Ð5Õ5Ô5ˆ8Ñ5Ô5Ð5Ð5Õ5Ô5˜4Ñ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 HÑ5Ô5Ð5Õ5Ô5 HÑ5Ô5Ð5Ð5Õ5Ô5 OÑ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Ð5Ð5Ð5Ð5Ð5Ø1Ð1˜Ð1ˆ6˜ÐÐ1Ð1Ð1Ð1Ð1 &¤-Ð1 - -¡/¤/Ð1 /Ð1Ð1Ñ1Õ1Ô1Ð1Ð1Ð1Ð1ˆ6˜Ð1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆ6Ñ1Ô1Ð1Õ1Ô1ˆ6Ñ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Ð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Ð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Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÔÐE wÐEÐÐ wÐ/Ñ/Ô/ÐEÐ/Õ3EÒEÐEÐEÑEÕEÔEÐEÐEÐEÐEÐ/Õ3EÐEÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔEˆ8ÑEÔEÐEÕEÔEˆ8ÑEÔEÐEÐEÕEÔEÐÑEÔEÕEÔE wÑEÔEÕEÔEÐ/ÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔEÕ3EÑEÔEÐEÕEÔEÕ3EÑEÔEÐEÐEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEÐEÐEð ×ÒÐ6ÀÐÑIÔIÐIØÔÐQ wÐQÐÐ wÐ/Ñ/Ô/ÐQÐ3QÐQÐ/Ð3QÒQÐQÐQÐQÕQÔQÐQÐQÐQÐQÐ/Ð3QÐQÑQÔQÐQÕQÔQÑQÔQÐQÐQÕQÔQˆ8ÑQÔQÐQÕQÔQˆ8ÑQÔQÐQÐQÕQÔQÐÑQÔQÕQÔQ wÑQÔQÕQÔQÐ/ÑQÔQÕQÔQÐ3QÑQÔQÐQÐQÑQÐQÐQÐQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQõ %Ô3ÀÐIÑIÔI€HØÐˆ8�tÐÐÐÐÕÔÐÐÐÐˆ8�tÐÑÔÐÕÔÑÔÐÐÕÔˆ8ÑÔÐÕÔˆ8ÑÔÐÐÕÔ�tÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÔÐE wÐEÐÐ wÐ/Ñ/Ô/ÐEÐ/Õ3EÒEÐEÐEÑEÕEÔEÐEÐEÐEÐEÐ/Õ3EÐEÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔEˆ8ÑEÔEÐEÕEÔEˆ8ÑEÔEÐEÐEÕEÔEÐÑEÔEÕEÔE wÑEÔEÕEÔEÐ/ÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔEÕ3EÑEÔEÐEÕEÔEÕ3EÑEÔEÐEÐEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEr(   c                 ón  — | \  }}t          j        d|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}}t          j        |¬¦  «        }	|	d         }
|
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         }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         }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         }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"         }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&         }|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*         }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,         }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.         }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/         }|d0         }d1}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|d2         }d3}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|	d4         d5         }d6}||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 )7NÚ	ultra_lowT©r+   Úcreate_backupr   ©ú>©z/%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} > %(py6)sÚlenÚchanges©r   r1   rU   r3   úassert %(py8)srP   r*   r4   r5   Ú1280r   r/   r0   r2   r3   Úresolution_heightÚ720Ú
fullscreenr;   Úborderless_windowed_fullscreenÚframerate_limitÚ30Úbackground_framerate_limitÚ15Úuse_dynamic_particle_culling2r>   Úscreenspace_effectsÚ0Úbloom_strengthú0.0r7   r8   r9   r:   Úchannel_countÚlowÚreverb_enabled2r<   Ú reduce_user_interface_animationsr=   Úuse_wasd_to_mover,   r-   r.   Úaccount_namez	HERO#1234ÚGENERALÚuser_input_modeÚwasd©r   Úapply_profilert   r   r   r   r   r   r    r!   r"   r?   )r   r#   r   ru   rC   rd   r\   rD   rf   r@   ÚdisprA   rB   r&   ÚsndÚuiÚlogins                    r   Útest_apply_profile_ultra_lowr•   l   s(  € Ø�K€A€xÝ#Ô1°+È8ÐcgÐhÑhÔh€Gåˆw‰<Œ<Ð˜!Ðˆ<˜!ÒÐÐÐÕÔÐÐÐÐˆ<˜!ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆwÑÔÐÕÔˆwÑÔÐÐÕÔˆ<ÑÔÕÔ˜!ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÝ$Ô9ÀhÐOÑOÔO€Hð �IÔ€DØÐ"Ô#Ð- vÐ-Ð# vÒ-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð# vÐ-Ñ-Ô-Õ-Ô-Ð#Ñ-Ô-Õ-Ô- vÑ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÐ#Ô$Ð-¨Ð-Ð$¨Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð$¨Ð-Ñ-Ô-Õ-Ô-Ð$Ñ-Ô-Õ-Ô-¨Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ø�ÔÐ( Ð(Ð Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð Ð(Ñ(Ô(Õ(Ô(ÐÑ(Ô(Õ(Ô( Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÐ0Ô1Ð<°WÐ<Ð1°WÒ<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð1°WÐ<Ñ<Ô<Õ<Ô<Ð1Ñ<Ô<Õ<Ô<°WÑ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÐ!Ô"Ð* dÐ*Ð" dÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð" dÐ*Ñ*Ô*Õ*Ô*Ð"Ñ*Ô*Õ*Ô* dÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÐ,Ô-Ð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ØÐ/Ô0Ð:°FÐ:Ð0°FÒ:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð0°FÐ:Ñ:Ô:Õ:Ô:Ð0Ñ:Ô:Õ:Ô:°FÑ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ØÐ%Ô&Ð-¨#Ð-Ð&¨#Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð&¨#Ð-Ñ-Ô-Õ-Ô-Ð&Ñ-Ô-Õ-Ô-¨#Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÐ Ô!Ð* UÐ*Ð! UÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð! UÐ*Ñ*Ô*Õ*Ô*Ð!Ñ*Ô*Õ*Ô* UÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø�Ô Ð/ KÐ/Ð  KÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð  KÐ/Ñ/Ô/Õ/Ô/Ð Ñ/Ô/Õ/Ô/ KÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ð �7Ô
€CØÐ#Ô$Ð.¨Ð.Ð$¨Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð$¨Ð.Ñ.Ô.Õ.Ô.Ð$Ñ.Ô.Õ.Ô.¨Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØˆÔÐ( 5Ð(Ð 5Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÐ Ô!Ð, WÐ,Ð! WÒ,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð! WÐ,Ñ,Ô,Õ,Ô,Ð!Ñ,Ô,Õ,Ô, WÑ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ð 
�$Œ€BØÐ0Ô1Ð;°VÐ;Ð1°VÒ;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð1°VÐ;Ñ;Ô;Õ;Ô;Ð1Ñ;Ô;Õ;Ô;°VÑ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ØÐ(Ô)Ð3¨VÐ3Ð)¨VÒ3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð)¨VÐ3Ñ3Ô3Õ3Ô3Ð)Ñ3Ô3Õ3Ô3¨VÑ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ØÐ Ô!Ð+ VÐ+Ð! VÒ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð! VÐ+Ñ+Ô+Õ+Ô+Ð!Ñ+Ô+Õ+Ô+ VÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ð �WÔ€EØ�ÔÐ4Ð 4Ð4ÐÐ 4Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4ÐÐ 4Ð4Ñ4Ô4Õ4Ô4ÐÑ4Ô4Õ4Ô4Ð 4Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ø�Ô Ð/ KÐ/Ð  KÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð  KÐ/Ñ/Ô/Õ/Ô/Ð Ñ/Ô/Õ/Ô/ KÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø�IÔÐ0Ô1Ð;°VÐ;Ð1°VÒ;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð1°VÐ;Ñ;Ô;Õ;Ô;Ð1Ñ;Ô;Õ;Ô;°VÑ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;r(   c                 óÂ  — | \  }}t          j        d|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}}t          j        |¬¦  «        }	|	d         }
|
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         }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         }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 )NÚ	low_1080pFro   r   rq   rs   rt   ru   rv   rw   rP   r*   r4   r5   Ú1920r   r/   r0   r2   r3   ry   Ú1080r}   r~   r   r€   r„   r…   r�   )r   r#   r   ru   rC   rd   r\   rD   rf   r@   r‘   rA   rB   r&   s                 r   Útest_apply_profile_low_1080prš   “   s³  € Ø�K€A€xÝ#Ô1°+È8ÐchÐiÑiÔi€Gåˆw‰<Œ<Ð˜!Ðˆ<˜!ÒÐÐÐÕÔÐÐÐÐˆ<˜!ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆwÑÔÐÕÔˆwÑÔÐÐÕÔˆ<ÑÔÕÔ˜!ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÝ$Ô9ÀhÐOÑOÔO€HØ�IÔ€DØÐ"Ô#Ð- vÐ-Ð# vÒ-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð# vÐ-Ñ-Ô-Õ-Ô-Ð#Ñ-Ô-Õ-Ô- vÑ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÐ#Ô$Ð.¨Ð.Ð$¨Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð$¨Ð.Ñ.Ô.Õ.Ô.Ð$Ñ.Ô.Õ.Ô.¨Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÐ!Ô"Ð* dÐ*Ð" dÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð" dÐ*Ñ*Ô*Õ*Ô*Ð"Ñ*Ô*Õ*Ô* dÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÐ,Ô-Ð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ØÐ Ô!Ð* UÐ*Ð! UÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð! UÐ*Ñ*Ô*Õ*Ô*Ð!Ñ*Ô*Õ*Ô* UÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r(   c                 ó¤   — | \  }}t          j        t          d¬¦  «        5  t          j        d|¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nu   Profile khÃ´ng há»£p lá»‡)ÚmatchÚnon_existent_profiler*   )ÚpytestÚraisesÚ
ValueErrorr   r�   )r   r#   r   s      r   Útest_apply_invalid_profiler¡   ¡   s±   € Ø�K€A€xÝ	Œ•zÐ)DÐ	EÑ	EÔ	Eð Zð ZÝÔ+Ð,BÐPXÐYÑYÔYÐYðZð Zð Zñ Zô Zð Zð Zð Zð Zð Zð Zð Zøøøð Zð Zð Zð Zð Zð Zs   ¡AÁA	ÁA	c                 óÜ  — | \  }}|dz  }|                      dd¬¦  «         t          j        d|d¬¦  «        }t          j        |¬¦  «        }|d	         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         }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         }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 )Nzmini.iniz:[DISPLAY]
resolution_width=1920
[SOUND]
master_volume2=50
r   r   rn   Fro   r*   r4   ry   rz   r   r/   r0   r2   r3   r}   r~   r9   r:   r>   )	r   r   r�   r?   r   r   r    r!   r"   )r   r   r   Úmini_iniru   r@   rA   rB   rC   r&   rD   s              r   Útest_missing_key_insertionr¤   §   so  € Ø�L€Bˆà�J‰€HØ×ÒÐXÐcjÐÑkÔkÐkå#Ô1°+È8ÐchÐiÑiÔi€GÝ$Ô9ÀhÐOÑOÔO€Hð �IÔÐ2Ô3Ð<°uÐ<Ð3°uÒ<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð3°uÐ<Ñ<Ô<Õ<Ô<Ð3Ñ<Ô<Õ<Ô<°uÑ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ø�IÔÐ0Ô1Ð9°TÐ9Ð1°TÒ9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð1°TÐ9Ñ9Ô9Õ9Ô9Ð1Ñ9Ô9Õ9Ô9°TÑ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Ø�GÔÐ1Ô2Ð<°fÐ<Ð2°fÒ<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð2°fÐ<Ñ<Ô<Õ<Ô<Ð2Ñ<Ô<Õ<Ô<°fÑ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<r(   )Ú__doc__Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   ÚosÚshutilr
   rž   Úpathlibr   Ú%src.assistant_tool.graphics_optimizerr   r   r   Úfixturer   r'   rE   rl   r•   rš   r¡   r¤   © r(   r   ú<module>r°      s  ðð	ð 	ð € € € € € € € € € € € € €	€	€	€	Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à QÐ QÐ QÐ QÐ QÐ QÐ QÐ Qð,Ð ð^ „ð!ð !ñ „ð!ðð ð ð@ð @ð @ðFð Fð Fð"$<ð $<ð $<ðN+ð +ð +ðZð Zð Zð=ð =ð =ð =ð =r(   