o
    1'h¶)  ã                   @   sî   d dl mZmZ d dlmZmZ zd dlmZ W n ey'   d dl	mZ Y nw zd dl
mZmZmZ W n eyG   d dlmZmZmZ Y nw ddlmZmZ ddlmZ dd	lmZ G d
d„ deƒZG dd„ deƒZedkrueƒ  dS dS )é    )ÚStringIOÚTextIOWrapper)ÚTestCaseÚmain)Ú	ExitStack)Ú	MagicMockÚMockÚpatché   )ÚAnsiToWin32ÚStreamWrapper©Ú"ENABLE_VIRTUAL_TERMINAL_PROCESSINGé   )Úosnamec                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚStreamWrapperTestc                 C   s&   t ƒ }t|d ƒ}|  |j|ju ¡ d S ©N)r   r   Ú
assertTrueZrandom_attr)ÚselfÚ
mockStreamÚwrapper© r   úUC:\Users\shubh\Videos\agent\nova\Lib\site-packages\colorama/tests/ansitowin32_test.pyÚtestIsAProxy   s   
zStreamWrapperTest.testIsAProxyc                 C   s8   t ƒ }t ƒ }t||ƒ}| d¡ |  |jjdi f¡ d S )NÚhello)r   )r   r   Úwriter   Ú	call_args)r   r   ÚmockConverterr   r   r   r   ÚtestDelegatesWrite   s
   

z$StreamWrapperTest.testDelegatesWritec                 C   sP   t ƒ }tƒ }t||ƒ�}| d¡ W d   ƒ n1 sw   Y  |  |j¡ d S ©Nr   )r   r   r   r   r   Úclosed)r   r   ÚsÚfpr   r   r   ÚtestDelegatesContext"   s   ÿz&StreamWrapperTest.testDelegatesContextc              	   C   sŠ   t ƒ }tƒ |j_tƒ }|  t¡�+}t||ƒ�}| d¡ W d   ƒ n1 s&w   Y  W d   ƒ d S W d   ƒ d S 1 s>w   Y  d S r   )r   ÚAttributeErrorÚ	__enter__Zside_effectr   ÚassertRaisesr   r   )r   r   r   Úexcinfor   r   r   r   ÚtestProxyNoContextManager)   s   
ÿÿ"ÿz+StreamWrapperTest.testProxyNoContextManagerc                 C   s*   t ƒ }| ¡  t|d ƒ}|  |jd¡ d S ©NT)r   Úcloser   ÚassertEqualr    ©r   Ústreamr   r   r   r   Ú+test_closed_shouldnt_raise_on_closed_stream1   s   
z=StreamWrapperTest.test_closed_shouldnt_raise_on_closed_streamc                 C   s.   t tƒ ƒ}| ¡  t|d ƒ}|  |jd¡ d S r)   )r   r   Údetachr   r+   r    r,   r   r   r   Ú-test_closed_shouldnt_raise_on_detached_stream7   s   

z?StreamWrapperTest.test_closed_shouldnt_raise_on_detached_streamN)	Ú__name__Ú
__module__Ú__qualname__r   r   r#   r(   r.   r0   r   r   r   r   r      s    r   c                   @   s¶   e Zd Zdd„ Zeddƒeddd„ ƒdd	„ ƒƒZd
d„ Zdd„ Zdd„ Zd+dd„Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ ZdS ),ÚAnsiToWin32Testc                 C   s8   t ƒ }t ƒ }t||d�}|  |j|¡ |  |j|¡ d S )N)Ú	autoreset)r   r   r+   Úwrappedr5   )r   Ú
mockStdoutÚautor-   r   r   r   ÚtestInit?   s
   zAnsiToWin32Test.testInitúcolorama.ansitowin32.wintermNú colorama.ansitowin32.winapi_testc                  G   ó   dS r)   r   ©Ú_r   r   r   Ú<lambda>G   ó    zAnsiToWin32Test.<lambda>c                 C   sH   t dƒ� tƒ }t|ƒ}|  |j¡ W d   ƒ d S 1 sw   Y  d S )NÚnt)r   r   r   r   Ústrip©r   r7   r-   r   r   r   ÚtestStripIsTrueOnWindowsF   s
   
"ýz(AnsiToWin32Test.testStripIsTrueOnWindowsc                 C   sL   t dƒ� tdd�}t|ƒ}|  |j¡ W d   ƒ d S 1 sw   Y  d S )NÚposixF)r    )r   r   r   ÚassertFalserB   rC   r   r   r   ÚtestStripIsFalseOffWindowsN   s
   

"ýz*AnsiToWin32Test.testStripIsFalseOffWindowsc                 C   sV   t ƒ }t|ƒ}t ƒ |_t ƒ |_d|_| d¡ |  |jjj¡ |  |jj	di f¡ d S )NTÚabc©rH   )
r   r   r6   Úwrite_and_convertrB   r   rF   Úcalledr+   r   rC   r   r   r   ÚtestWriteStripsAnsiT   s   
z#AnsiToWin32Test.testWriteStripsAnsic                 C   s\   t ƒ }t|ƒ}t ƒ |_t ƒ |_d|_d|_| d¡ |  |jj¡ |  	|jjj
di f¡ d S )NFrH   rI   )r   r   r6   rJ   rB   Úconvertr   rF   rK   r+   r   rC   r   r   r   ÚtestWriteDoesNotStripAnsi`   s   
z)AnsiToWin32Test.testWriteDoesNotStripAnsiTc                 C   sD   t tƒ ƒ}||_tƒ |_||_tƒ |_| d¡ |  |jj|¡ d S )NrH   )	r   r   rM   Ú	reset_allr5   Úwintermr   r+   rK   )r   rM   r5   r-   r   r   r   Úassert_autoresetsm   s   

z!AnsiToWin32Test.assert_autoresetsc                 C   s8   | j dd� | j dd� | j ddd� | j ddd� d S )NT©rM   F)rM   r5   )rQ   )r   r   r   r   ÚtestWriteAutoresetsx   s   z#AnsiToWin32Test.testWriteAutoresetsc                 C   s.   t tƒ ƒ}| d¡ |  |jjjdi f¡ d S )NrH   rI   )r   r   rJ   r+   r6   r   r   ©r   r-   r   r   r   Ú"testWriteAndConvertWritesPlainText~   s   

z2AnsiToWin32Test.testWriteAndConvertWritesPlainTextc                 C   s^   t tƒ ƒ}tƒ |_g d¢}|D ]}|jj ¡  | |¡ |  dd„ |jjjD ƒddg¡ qd S )N)z	abc[mdefz
abc[0mdefz
abc[2mdefzabc[02mdefzabc[002mdefzabc[40mdefzabc[040mdefzabc[0;1mdefzabc[40;50mdefzabc[50;30;40mdefz	abc[Adefz
abc[0Gdefúabc[1;20;128Hdefc                 S   s   g | ]}|d  ‘qS ©r   r   )Ú.0Úargsr   r   r   Ú
<listcomp>™   s    zIAnsiToWin32Test.testWriteAndConvertStripsAllValidAnsi.<locals>.<listcomp>rI   )Údef)	r   r   Ú
call_win32r6   r   Ú
reset_mockrJ   r+   Úcall_args_list)r   r-   ÚdataÚdatumr   r   r   Ú%testWriteAndConvertStripsAllValidAnsiƒ   s   

þýz5AnsiToWin32Test.testWriteAndConvertStripsAllValidAnsic                 C   s0   t tƒ ƒ}tƒ |_| d¡ |  |jjj¡ d S )Nz
[40m[41m)r   r   r\   rJ   rF   r6   r   rK   rT   r   r   r   Ú%testWriteAndConvertSkipsEmptySnippets�   s   

z5AnsiToWin32Test.testWriteAndConvertSkipsEmptySnippetsc                 C   sr   t tƒ ƒ}d|_tƒ |_tdd�|_dddddd	œ}| ¡ D ]\}}|j ¡  | |¡ |  |jj	d
 |¡ qd S )NTÚparams)Úreturn_value)Úarc   )Úbrc   )Úcrc   )ÚGrc   )ÚHrc   )z	abc[adefzabc[;;bdefz
abc[0cdefzabc[;;0;;GdefrV   r   )
r   r   rM   r\   Úextract_paramsÚitemsr]   rJ   r+   r   ©r   r-   r_   r`   Úexpectedr   r   r   Ú1testWriteAndConvertCallsWin32WithParamsAndCommand£   s   
û

ýzAAnsiToWin32Test.testWriteAndConvertCallsWin32WithParamsAndCommandc                 C   s"   t ƒ }t|ƒ}| ¡  | ¡  d S r   )r   r   r*   rO   ©r   r-   Ú	converterr   r   r   Ú3test_reset_all_shouldnt_raise_on_closed_orig_stdout´   s   zCAnsiToWin32Test.test_reset_all_shouldnt_raise_on_closed_orig_stdoutc              	   C   sŠ   t ƒ }| ¡  tddƒ�# tddd„ ƒ� t|ƒ}W d   ƒ n1 s#w   Y  W d   ƒ n1 s2w   Y  |  |j¡ |  |j¡ d S )Núcolorama.ansitowin32.os.namerA   r;   c                   S   r<   r)   r   r   r   r   r   r?   À   r@   zPAnsiToWin32Test.test_wrap_shouldnt_raise_on_closed_orig_stdout.<locals>.<lambda>)r   r*   r	   r   r   rB   rF   rM   ro   r   r   r   Ú.test_wrap_shouldnt_raise_on_closed_orig_stdout»   s   ÿþ
ý€ z>AnsiToWin32Test.test_wrap_shouldnt_raise_on_closed_orig_stdoutc              	   C   s~   t ddƒ�$ t ddd„ ƒ� ttƒ ƒ}W d   ƒ n1 sw   Y  W d   ƒ n1 s,w   Y  |  |j¡ |  |j¡ d S )Nrr   rA   r;   c                   S   r<   r)   r   r   r   r   r   r?   È   r@   zQAnsiToWin32Test.test_wrap_shouldnt_raise_on_missing_closed_attr.<locals>.<lambda>)r	   r   Úobjectr   rB   rF   rM   )r   rp   r   r   r   Ú/test_wrap_shouldnt_raise_on_missing_closed_attrÅ   s   ÿþý€ z?AnsiToWin32Test.test_wrap_shouldnt_raise_on_missing_closed_attrc                 C   sH   t tƒ ƒ}ddddddddœ}| ¡ D ]\}}|  | d|¡|¡ qd S )NrW   )r
   )r   r   )é   iÈ  )é   é   é!   é,   é7   )Ú z;;Ú2z;;002;;z0;1z;;003;;456;;z11;22;33;44;55Úm)r   r   rk   r+   rj   rl   r   r   r   ÚtestExtractParamsÍ   s   
ù	ÿz!AnsiToWin32Test.testExtractParamsc                    sf   t ƒ ‰ tˆ ƒ}‡ fdd„f‡ fdd„f‡ fdd„fdœ|_| dd¡ |  dd	„ ˆ jD ƒg d
¢¡ d S )Nc                     ó   ˆ dƒS )Nrw   r   ©r>   Ú__©Úlistenerr   r   r?   ß   ó    z9AnsiToWin32Test.testCallWin32UsesLookup.<locals>.<lambda>c                     r€   )Nrx   r   r�   rƒ   r   r   r?   à   r…   c                     r€   )Nry   r   r�   rƒ   r   r   r?   á   r…   )r   r
   rv   r~   )rv   r   éc   r
   c                 S   s   g | ]}|d  d  ‘qS rW   r   )rX   re   r   r   r   rZ   å   s    z;AnsiToWin32Test.testCallWin32UsesLookup.<locals>.<listcomp>)ry   rw   rx   )r   r   Zwin32_callsr\   r+   r^   rT   r   rƒ   r   ÚtestCallWin32UsesLookupÛ   s   ýþz'AnsiToWin32Test.testCallWin32UsesLookupc                 C   sl   t ƒ }t|dd�}tdƒ�}g d¢}|D ]}| |¡ q|  |jjd¡ W d   ƒ d S 1 s/w   Y  d S )NTrR   r:   )z]0z]0;fooz]0;colorama_test_titlez]1;colorama_test_titlez]2;colorama_test_titlezC];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;r
   )r   r   r	   r   r+   Ú	set_titleZ
call_count)r   r7   r-   rP   r_   Úcoder   r   r   Útest_osc_codesè   s   
"õzAnsiToWin32Test.test_osc_codesc                    sB  t ƒ �”‰ ‡ fdd„}|ddƒ |ddd„ ƒ |dd	d„ ƒ |d
dƒ |ddd„ ƒ |ddd„ ƒ tƒ }|d|ƒ tƒ }d|_d|j_d|j_t|ƒ}| dt¡ |  	|j
¡ |  	|j¡ |  	| ¡ ¡ |ddd„ ƒ tƒ }|d|ƒ t|ƒ}| dt¡ |  |j
¡ |  |j¡ |  | ¡ ¡ W d   ƒ d S 1 sšw   Y  d S )Nc                    s   ˆ   t| |dd�¡ d S )NT)Úcreate)Úenter_contextr	   )re   rf   ©Ústackr   r   Úpú   s   z3AnsiToWin32Test.test_native_windows_ansi.<locals>.prr   rA   r;   c                   S   r<   r)   r   r   r   r   r   r?   þ   r@   z:AnsiToWin32Test.test_native_windows_ansi.<locals>.<lambda>zcolorama.win32.winapi_testc                   S   r<   r)   r   r   r   r   r   r?   ÿ   r@   zcolorama.winterm.win32.windllznon-Nonezcolorama.winterm.get_osfhandlec                 S   r<   )NéÒ  r   r=   r   r   r   r?     r@   z%colorama.winterm.win32.GetConsoleModec                 S   s   t S r   r   r=   r   r   r   r?     r@   z%colorama.winterm.win32.SetConsoleModeFTr   r�   c                 S   r<   )Nr   r   r=   r   r   r   r?     r@   )r   r   r    Úisattyrd   Úfilenor   Zassert_called_withr   rF   rB   rM   Zshould_wrapr   )r   r�   ZSetConsoleModeÚstdoutr-   r   r�   r   Útest_native_windows_ansiø   s>   

þ

"×z(AnsiToWin32Test.test_native_windows_ansi)T)r1   r2   r3   r9   r	   rD   rG   rL   rN   rQ   rS   rU   ra   rb   rn   rq   rs   ru   r   r‡   rŠ   r”   r   r   r   r   r4   =   s*    

r4   Ú__main__N)Úior   r   Zunittestr   r   Ú
contextlibr   ÚImportErrorZcontextlib2Zunittest.mockr   r   r	   ZmockZansitowin32r   r   Úwin32r   Úutilsr   r   r4   r1   r   r   r   r   Ú<module>   s*   þÿ) i
ÿ