a
    œòJb  ã                   @   s:   d dl Z d dlmZ G dd„ de jƒZedkr6e  ¡  dS )é    N)ÚAnsiCodeProcessorc                   @   sl   e Z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 )ÚTestAnsiCodeProcessorc                 C   s   t ƒ | _d S )N)r   Ú	processor)Úself© r   úGlib/python3.9/site-packages/qtconsole/tests/test_ansi_code_processor.pyÚsetUp
   s    zTestAnsiCodeProcessor.setUpc                 C   sæ   d}d}t | j |¡ƒD ]º\}}|dkrt|  t| jjƒd¡ | jjd }|  |jd¡ |  |jd¡ |  |jd¡ q|dkrÈ|  t| jjƒd¡ | jjd }|  |jd¡ |  |jd¡ |  |jd	¡ q|  	d
¡ q|  |dd¡ dS )z= Do control sequences for clearing the console work?
        z[2J[Kéÿÿÿÿr   é   ZeraseZscreenÚallÚlineÚendúToo many substrings.úToo few substrings.N)
Ú	enumerater   Úsplit_stringÚassertEqualÚlenÚactionsÚactionZareaZerase_toÚfail©r   ÚstringÚiÚ	substringr   r   r   r   Ú
test_clear   s"    z TestAnsiCodeProcessor.test_clearc                 C   s°   d}d}t | j |¡ƒD ]„\}}|dkrF|  |d¡ |  | jjd¡ q|dkrl|  |d¡ |  | jjd¡ q|d	kr’|  |d
¡ |  | jjd¡ q|  d¡ q|  |d	d¡ dS )z6 Do basic controls sequences for colors work?
        zfirst[34mblue[0mlastr	   r   ÚfirstNr
   Zblueé   é   Zlastr   r   )r   r   r   r   Úforeground_colorr   )r   r   r   r   r   r   r   Útest_colors%   s    z!TestAnsiCodeProcessor.test_colorsc                 C   sf   d}t | j |¡ƒ}dddœ}|  | jj|¡ d}t | j |¡ƒ}|  | jjd¡ |  | jjd¡ dS )z> Do xterm-specific control sequences for colors work?
        z,]4;20;rgb:ff/ff/ff]4;25;rgbi:1.0/1.0/1.0)éÿ   r!   r!   )é   é   z[38;5;20m[48;5;25mr"   r#   N)Úlistr   r   r   Z	color_mapr   Úbackground_color)r   r   Ú
substringsZdesiredr   r   r   Útest_colors_xterm8   s    ÿz'TestAnsiCodeProcessor.test_colors_xtermc                 C   s@   d}t | j |¡ƒ}|  | jjg d¢¡ |  | jjg d¢¡ dS )z/Do 24bit True Color control sequences?
        z$[38;2;255;100;0m[48;2;100;100;100m)r!   éd   r   )r(   r(   r(   N)r$   r   r   r   r   r%   )r   r   r&   r   r   r   Útest_true_colorG   s    z%TestAnsiCodeProcessor.test_true_colorc                 C   s  d}d}t | j |¡ƒD ]Ö\}}|dkr‚|  t| jjƒd¡ | jjd }|  |jd¡ |  |jd¡ |  |jd¡ |  |j	d¡ q|dkrä|  t| jjƒd¡ | jjd }|  |jd¡ |  |jd	¡ |  |jd¡ |  |j	d¡ q|  
d
¡ q|  |dd¡ dS )z= Do control sequences for scrolling the buffer work?
        z[5S[Tr	   r   r
   ÚscrollZupr   é   Údownr   r   N)r   r   r   r   r   r   r   ÚdirÚunitÚcountr   r   r   r   r   Útest_scrollO   s&    z!TestAnsiCodeProcessor.test_scrollc                 C   sz   d}|   t| j |¡ƒdg¡ |   t| jjƒd¡ | jjd }|   |jd¡ |   |jd¡ |   |jd¡ |   |j	d¡ dS )	z6 Are formfeed characters processed correctly?
        úÚ r
   r   r*   r,   ZpageN)
r   r$   r   r   r   r   r   r-   r.   r/   )r   r   r   r   r   r   Útest_formfeedg   s    z#TestAnsiCodeProcessor.test_formfeedc                 C   sh   d}g }g }| j  |¡D ]&}| |¡ | dd„ | j jD ƒ¡ q|  |g d¢¡ |  |g dgg g¡ dS )z= Are carriage return characters processed correctly?
        zfoobarc                 S   s   g | ]
}|j ‘qS r   ©r   ©Ú.0r   r   r   r   Ú
<listcomp>{   ó    z>TestAnsiCodeProcessor.test_carriage_return.<locals>.<listcomp>©ÚfooNÚbarúcarriage-returnN©r   r   Úappendr   r   ©r   r   Zsplitsr   Úsplitr   r   r   Útest_carriage_returns   s    
z*TestAnsiCodeProcessor.test_carriage_returnc              
   C   sv   d}g }g }| j  |¡D ]&}| |¡ | dd„ | j jD ƒ¡ q|  |g d¢¡ |  |g dgg dgg dgdgg¡ dS )ztransform CRLF to LFzfoobar
cat

c                 S   s   g | ]
}|j ‘qS r   r4   r5   r   r   r   r7   ‡   r8   zFTestAnsiCodeProcessor.test_carriage_return_newline.<locals>.<listcomp>)r:   Nr;   ú
ÚcatrB   Ú
r<   ÚnewlineNr=   r?   r   r   r   Útest_carriage_return_newline   s    
z2TestAnsiCodeProcessor.test_carriage_return_newlinec                 C   sh   d}g }g }| j  |¡D ]&}| |¡ | dd„ | j jD ƒ¡ q|  |g d¢¡ |  |g dgg g¡ dS )z2 Are beep characters processed correctly?
        zfoobarc                 S   s   g | ]
}|j ‘qS r   r4   r5   r   r   r   r7   “   r8   z3TestAnsiCodeProcessor.test_beep.<locals>.<listcomp>r9   ZbeepNr=   r?   r   r   r   Ú	test_beep‹   s    
zTestAnsiCodeProcessor.test_beepc                 C   sh   d}g }g }| j  |¡D ]&}| |¡ | dd„ | j jD ƒ¡ q|  |g d¢¡ |  |g dgg g¡ dS )z7 Are backspace characters processed correctly?
        zfoobarc                 S   s   g | ]
}|j ‘qS r   r4   r5   r   r   r   r7   Ÿ   r8   z8TestAnsiCodeProcessor.test_backspace.<locals>.<listcomp>r9   Ú	backspaceNr=   r?   r   r   r   Útest_backspace—   s    
z$TestAnsiCodeProcessor.test_backspacec                 C   sl   d}g }g }| j  |¡D ]&}| |¡ | dd„ | j jD ƒ¡ q|  |g d¢¡ |  |g dgg dgg¡ dS )zç Are CR and BS characters processed correctly in combination?

        BS is treated as a change in print position, rather than a
        backwards character deletion.  Therefore a BS at EOL is
        effectively ignored.
        zabcdefc                 S   s   g | ]
}|j ‘qS r   r4   r5   r   r   r   r7   ¯   r8   z7TestAnsiCodeProcessor.test_combined.<locals>.<listcomp>)ÚabcNÚdefNr<   rH   Nr=   r?   r   r   r   Útest_combined£   s    
z#TestAnsiCodeProcessor.test_combinedN)Ú__name__Ú
__module__Ú__qualname__r   r   r    r'   r)   r0   r3   rA   rF   rG   rI   rL   r   r   r   r   r      s   r   Ú__main__)ZunittestZqtconsole.ansi_code_processorr   ZTestCaser   rM   Úmainr   r   r   r   Ú<module>   s
    -