U
    fw%Zº  ã                   @   sT   d dl Zd dlZd dlZdekr*ed ZneZG dd„ deƒZG dd„ dej	ƒZ
dS )é    NZunicodec                   @   sX   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zdd
d„Zddd„Zdd„ Z	dd„ Z
dd„ ZdS )ÚDummyMessagerc                 C   s   t   ¡ | _d| _d| _d S )NTéP   )ÚStringIOÚwrittenÚenabledÚ
fake_width©Úself© r
   ú8/usr/lib/python3/dist-packages/ttystatus/status_tests.pyÚ__init__   s    
zDummyMessager.__init__c                 C   s   | j S ©N)r   r   r
   r
   r   Úget_max_line_length$   s    z!DummyMessager.get_max_line_lengthc                 C   s   d S r   r
   r   r
   r
   r   Úclear'   s    zDummyMessager.clearc                 C   s   dS ©NTr
   r   r
   r
   r   Útime_to_write*   s    zDummyMessager.time_to_writeFc                 C   s   | j  t|ƒ¡ d S r   )r   ÚwriteÚ	make_text)r	   ÚstringÚforcer
   r
   r   r   -   s    zDummyMessager.writec                 C   s   d S r   r
   )r	   r   Úfr   r
   r
   r   Únotify0   s    zDummyMessager.notifyc                 C   s   d S r   r
   r   r
   r
   r   Úfinish3   s    zDummyMessager.finishc                 C   s
   d| _ d S r   ©r   r   r
   r
   r   Úenable6   s    zDummyMessager.enablec                 C   s
   d| _ d S ©NFr   r   r
   r
   r   Údisable9   s    zDummyMessager.disableN)F)F)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   r
   r
   r
   r   r      s   

r   c                   @   s¼   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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 ).ÚTerminalStatusTestsc                 C   s   t jtƒ d| _d S )N)Zmessager)Ú	ttystatusZTerminalStatusr   Útsr   r
   r
   r   ÚsetUp?   s    zTerminalStatusTests.setUpc                 C   s   |   | jjg ¡ d S r   )ÚassertEqualr"   Úwidgetsr   r
   r
   r   Útest_has_no_widgetsB   s    z'TerminalStatusTests.test_has_no_widgetsc                 C   s,   t  d¡}| j |¡ |  | jj|g¡ d S ©NÚfoo)r!   ÚLiteralr"   Úaddr$   r%   ©r	   Úwr
   r
   r   Útest_adds_widgetE   s    
z$TerminalStatusTests.test_adds_widgetc                 C   sX   | j  d¡ |  t| j jƒd¡ |  t| j jd ƒtj¡ |  t| j jd ƒtj¡ d S )Nzhello, %String(name)é   r   é   )	r"   Úformatr$   Úlenr%   Útyper!   r)   ÚStringr   r
   r
   r   Ú$test_adds_widgets_from_format_stringJ   s    z8TerminalStatusTests.test_adds_widgets_from_format_stringc                 C   s0   | j  t d¡¡ | j  ¡  |  | j jg ¡ d S r'   )r"   r*   r!   r)   r   r$   r%   r   r
   r
   r   Útest_removes_all_widgetsP   s    
z,TerminalStatusTests.test_removes_all_widgetsc                 C   s   |   | jd d¡ d S )Nr(   Ú )r$   r"   r   r
   r
   r   Ú+test_returns_empty_string_for_unknown_valueU   s    z?TerminalStatusTests.test_returns_empty_string_for_unknown_valuec                 C   s    d| j d< |  | j d d¡ d S ©NÚbarr(   )r"   r$   r   r
   r
   r   Útest_sets_valueX   s    
z#TerminalStatusTests.test_sets_valuec                 C   s"   d| j d< |  | j  d¡d¡ d S r8   )r"   r$   Úgetr   r
   r
   r   Útest_gets_value\   s    
z#TerminalStatusTests.test_gets_valuec                 C   s   |   | j dd¡d¡ d S )Nr(   r9   ©r$   r"   r;   r   r
   r
   r   Ú+test_gets_default_value_for_nonexistent_key`   s    z?TerminalStatusTests.test_gets_default_value_for_nonexistent_keyc                 C   s   |   | j d¡d ¡ d S r'   r=   r   r
   r
   r   Ú8test_gets_None_for_nonexistent_key_without_default_valuec   s    zLTerminalStatusTests.test_gets_None_for_nonexistent_key_without_default_valuec                 C   sH   t  d¡}| j |¡ |  | d¡d¡ d| jd< |  | d¡d¡ d S )Nr(   r   r6   r9   )r!   r3   r"   r*   r$   Úrenderr+   r
   r
   r   Ú&test_updates_widgets_when_value_is_setf   s
    

z:TerminalStatusTests.test_updates_widgets_when_value_is_setc                 C   s@   d| j d< |  | j d d¡ | j  dd¡ |  | j d d¡ d S )Né
   r(   é   )r"   r$   Zincreaser   r
   r
   r   Útest_increases_valuem   s    
z(TerminalStatusTests.test_increases_valuec                 C   s   |   | j d¡d ¡ d S r'   )r$   r"   r   r   r
   r
   r   Útest_has_notify_methods   s    z*TerminalStatusTests.test_has_notify_methodc                 C   s   |   | j d¡d ¡ d S r'   )r$   r"   Úerrorr   r
   r
   r   Útest_has_error_methodv   s    z)TerminalStatusTests.test_has_error_methodc                 C   s   |   | j ¡ d ¡ d S r   )r$   r"   r   r   r
   r
   r   Útest_has_finish_methody   s    z*TerminalStatusTests.test_has_finish_methodc                 C   s^   dd„ | j j_| j  d¡ d| j d< |  | j jj ¡ d¡ | j  ¡  |  | j jj ¡ d¡ d S )Nc                   S   s   dS r   r
   r
   r
   r
   r   Ú<lambda>}   ó    z2TerminalStatusTests.test_flushes.<locals>.<lambda>z%String(foo)r(   r6   )r"   Ú_mr   r0   r$   r   ÚgetvalueÚflushr   r
   r
   r   Útest_flushes|   s    

z TerminalStatusTests.test_flushesc                 C   s   | j  ¡  |  | j jj¡ d S r   )r"   r   ZassertFalserK   r   r   r
   r
   r   Ú#test_disable_calls_messager_disable„   s    
z7TerminalStatusTests.test_disable_calls_messager_disablec                 C   s(   | j  ¡  | j  ¡  |  | j jj¡ d S r   )r"   r   r   Z
assertTruerK   r   r   r
   r
   r   Ú!test_enable_calls_messager_enableˆ   s    

z5TerminalStatusTests.test_enable_calls_messager_enablec                 C   sL   t  d¡}d}| j |¡ t|ƒD ]}|| jd< q"|  | d¡t|ƒ¡ d S )NÚvalueé*   r   )r!   ÚCounterr"   r*   Úranger$   r@   Ústr)r	   r,   ÚnÚir
   r
   r   Ú,test_counts_correctly_even_without_rendering   s    
z@TerminalStatusTests.test_counts_correctly_even_without_renderingc                 C   sT   t  d¡}t  dd¡}| j |¡ | j |¡ | j ¡ }|  t|ƒ| jj 	¡ ¡ d S )Nr(   ÚdoneÚtotal)
r!   r)   ÚProgressBarr"   r*   Ú_renderr$   r1   rK   r   ©r	   Úw1Úw2Útextr
   r
   r   Ú+test_renders_everything_when_there_is_space•   s    

z?TerminalStatusTests.test_renders_everything_when_there_is_spacec                 C   sP   t  d¡}t  d¡}| j |¡ | j |¡ d| jj_| j ¡ }|  |d¡ d S )Nr(   r9   é   Zfoob)r!   r)   r"   r*   rK   r   r\   r$   r]   r
   r
   r   Ú8test_renders_from_beginning_if_there_is_not_enough_space   s    



zLTerminalStatusTests.test_renders_from_beginning_if_there_is_not_enough_spacec                 C   sh   t  d¡}t  dd¡}t  d¡}| j |¡ | j |¡ | j |¡ d| jj_| j ¡ }|  |d¡ d S )Nr(   rY   rZ   r9   é	   z	foo---bar)	r!   r)   r[   r"   r*   rK   r   r\   r$   )r	   r^   r_   Zw3r`   r
   r
   r   Ú?test_renders_variable_size_width_according_to_space_keep_static¦   s    



zSTerminalStatusTests.test_renders_variable_size_width_according_to_space_keep_staticN)r   r   r   r#   r&   r-   r4   r5   r7   r:   r<   r>   r?   rA   rD   rE   rG   rH   rN   rO   rP   rX   ra   rc   re   r
   r
   r
   r   r    =   s,   	r    )Úior   Zunittestr!   Ú__builtins__r   rU   Úobjectr   ZTestCaser    r
   r
   r
   r   Ú<module>   s   
 