o
    PhY9                     @   s   d Z ddlZddlZddl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 )%z"Tests string formatting functions.    Nc                 C   s   ddl m}m} dd }| td| |d}t|dksJ |jdks&J |jdks-J |d}t||u s9J |dks?J |d	d
ksGJ |dd}t||u sTJ |dksZJ |d	dksbJ dS )z5Test default args of formatters.ParameterizingString.r   ParameterizingStringFormattingStringc                  W      d dd t| D dS )N~c                 s   ,    | ]\}}|s| d nd|f V  qdS latin1z%sNdecode.0numarg r   X/var/www/html/env_mimamsha/lib/python3.10/site-packages/blessed/tests/test_formatters.py	<genexpr>   
    
zPtest_parameterizing_string_args_unspecified.<locals>.<lambda>.<locals>.<genexpr>r	   join	enumerateencodeargsr   r   r   <lambda>      
 z=test_parameterizing_string_args_unspecified.<locals>.<lambda>tparm z<not specified>z~0textz~0text      z~1~2z~1~2textN	blessed.formattersr   r   setattrcursesstr_normal_nametypemonkeypatchr   r   r   pstrzeroonetwor   r   r   +test_parameterizing_string_args_unspecified   s   
r.   c                 C   s   ddl m}m} dd }| td| |ddd}t|dks!J |jdks(J |jdks/J |d}t||u s;J |d	ksAJ |d
dksIJ |dd}t||u sVJ |dks\J |d
dksdJ dS )z+Test basic formatters.ParameterizingString.r   r   c                  W   r   )Nr   c                 s   r   r   r
   r   r   r   r   r   1   r   zDtest_parameterizing_string_args.<locals>.<lambda>.<locals>.<genexpr>r	   r   r   r   r   r   r   1   r   z1test_parameterizing_string_args.<locals>.<lambda>r   capnormseq-namezcap~0r   zcap~0textnormr   r    zcap~1~2zcap~1~2textnormNr!   r)   r   r   r   test_parameterizing_string_args+   s   
r2   c              
   C   s   ddl m} dd }| td| |ddd}z|d	 J d tyA } z|jd dks7|jd dks7J W Y d}~nd}~ww z|d J d tyf } z|jd dks[J W Y d}~dS d}~ww )z7Test formatters.ParameterizingString raising TypeError.r   )r   c                  W   s   t d)N
custom_err)	TypeErrorr   r   r   r   tparm_raises_TypeErrorP      zEtest_parameterizing_string_type_error.<locals>.tparm_raises_TypeErrorr   r/   r0   cap-nameXYZFz*previous call should have raised TypeErrorzA native or nonexistent capability template, 'cap-name' received invalid argument ('XYZ',): custom_err. You probably misspelled a formatting call like `bright_red'zA native or nonexistent capability template, u'cap-name' received invalid argument ('XYZ',): custom_err. You probably misspelled a formatting call like `bright_red'Nr3   )r"   r   r#   r$   r4   r   )r*   r   r5   r+   errr   r   r   %test_parameterizing_string_type_errorL   s.    r:   c                 C   sb   ddl m} |dd}|jdksJ t|dksJ |ddks"J |dd}|ddks/J dS )	z=Test simple __call__ behavior of formatters.FormattingString.r   r   attrr0   r   attrtextnormr   N)r"   r   r&   r%   )r*   r   r+   r   r   r   test_formattingstringp   s   

r>   c                 C   s<   ddl m} |dd}|dd}|d|ddd	ksJ d
S )z=Test nested __call__ behavior of formatters.FormattingString.r   r;   za1-n-za2-zx-zf-zq-za1-x-a2-f-n-a1-q-n-N)r"   r   )r*   r   r+   zstrr   r   r   test_nested_formattingstring   s   

rA   c                 C   sp   ddl m} |dd}dtd}tt}|ddd W d	   n1 s(w   Y  |t|jv s6J d	S )
z3Test formatters.FormattingString raising TypeError.r   r;   za-r?   z.Positional argument #1 is {0} expected any of r   r   z...N)	r"   r   formatr(   pytestraisesr4   r%   value)r*   r   r+   expected_msgr9   r   r   r   'test_nested_formattingstring_type_error   s   

rG   c                 C   sx   ddl m} | }t|dksJ |ddksJ |dddks"J |dddks+J | dks2J |ddks:J d	S )
z"Test formatters.NullCallableStringr   )NullCallableStringr   r   moretexttextmoretextc   r   N)r"   rH   r%   )r*   rH   r+   r   r   r   test_nullcallablestring   s   rL   c                  C   sr   ddl m}  | ddgksJ | dg dksJ | dg dks#J | dg d	ks-J | d
g dks7J dS )zTest formatters.split_compound.r   split_compoundr   a_b_c)abca_on_b_c)rP   on_brR   a_bright_b_c)rP   bright_brR   a_on_bright_b_c)rP   on_bright_brR   N)r"   rN   rM   r   r   r   test_split_compound   s   rY   c                 C   s   ddl m} dd }| td| t }tdd|_||dd	ks$J ||d
dks-J dd }| td| ||d
dksAJ dd }d|_| td| ||d
dksXJ dS )z5Test formatters.resolve_capability and term sugaring r   )resolve_capabilityc                 S   s   d| f  dS )Nseq-%sr	   )r   r<   r   r   r   r      s    z)test_resolve_capability.<locals>.<lambda>tigetstrxyz)mnemonicr_   zseq-xyznaturalzseq-naturalc                 S   s   d S )Nr   r\   r   r   r   r      s    r   c                  W   s   J d)NFzShould not be calledr   r   r   r   r   raises_exception   r6   z1test_resolve_capability.<locals>.raises_exceptionFN)	r"   rZ   r#   r$   mockMockdict_sugardoes_styling)r*   rZ   r]   termtigetstr_nonera   r   r   r   test_resolve_capability   s   ri   c                 C   s,  ddl m}m}m} dd }| tdd t }||_||_	d|_
d|_||d	}t||ks2J |d
ks8J |ddks@J ||d}t||ksMJ |dksSJ |ddks[J d|_
||d	}t||kskJ |dksqJ |ddksyJ ||d}t||ksJ |dksJ |ddksJ dS )zTest formatters.resolve_color.r   )resolve_colorr   rH   c                 S   
   d| f S Nr[   r   digitr   r   r   r         
 z$test_resolve_color.<locals>.<lambda>	COLOR_REDi  
seq-normalredzseq-1984r   zseq-1984textseq-normal
bright_redzseq-1992zseq-1992textseq-normalr   N)r"   rj   r   rH   r#   r$   rb   rc   _background_color_foreground_colornumber_of_colorsnormalr(   )r*   rj   r   rH   	color_caprg   rs   rt   r   r   r   test_resolve_color   s2   



rz   c                 C   s   ddl }ddlm} dd }tddg}tdd	g}| |jd
| | |jd| | |jd| t }||ddks?J dS )z2 Test simple resolve_attribte() given color name. r   N)resolve_attributec                 S   
   d|f S rl   r   rg   rn   r   r   r   r   
  ro   z1test_resolve_attribute_as_color.<locals>.<lambda>COLORXCOLORYJOINTCOMPOUNDrj   COLORSCOMPOUNDABLESz
seq-COLORX)blessedr"   r{   setr#   
formattersrb   rc   )r*   r   r{   rj   r   r   rg   r   r   r   test_resolve_attribute_as_color  s   r   c                 C   s   ddl }ddlm}m} dd }tddg}| |jd| | |jd	| t }d
|_	||d}t
||u s:J t|dksBJ |ddksJJ dS )z6 Test simple resolve_attribte() given a compoundable. r   Nr{   r   c                 S   r|   rl   r   r}   r   r   r   r     ro   z8test_resolve_attribute_as_compoundable.<locals>.<lambda>r   r   rZ   r   rr   z	seq-JOINTr   zseq-JOINTtextseq-normal)r   r"   r{   r   r   r#   r   rb   rc   rx   r(   r%   )r*   r   r{   r   resolve_capr   rg   compoundr   r   r   &test_resolve_attribute_as_compoundable  s   
r   c           	      C   s   ddl }ddlm}m} dd }dd }| |jd| | |jd| d	d }| td
| t }d|_	||d}t
||ksCJ t|dksKJ |ddksSJ |dddks]J dS )4 Test recursive compounding of resolve_attribute(). r   N)r{   r   c                 S   s   ddgS )Nsplitr   r   r\   r   r   r   r   ,  s    z:test_resolve_attribute_non_compoundables.<locals>.<lambda>c                 S   r|   rl   r   r}   r   r   r   r   -  ro   rN   rZ   c                  W   r   )Nr   c                 s   r   r   r
   r   r   r   r   r   4  r   zMtest_resolve_attribute_non_compoundables.<locals>.<lambda>.<locals>.<genexpr>r	   r   r   r   r   r   r   4  r   r   rr   znot-a-compoundablezseq-not-a-compoundable   zseq-not-a-compoundable~3r   z&seq-not-a-compoundable~3textseq-normal)r   r"   r{   r   r#   r   r$   rb   rc   rx   r(   r%   )	r*   r   r{   r   uncompoundablesr   r   rg   r+   r   r   r   (test_resolve_attribute_non_compoundables(  s*   
r   c           	      C   s   ddl }ddlm}m} dd }| |jd| dd }| td| | td	d
 | tdd dd }t }||_	||_
d|_||d}t||ksOJ t|dksWJ |ddks_J dS )r   r   Nr   c                 S   r|   rl   r   r}   r   r   r   r   L  ro   z@test_resolve_attribute_recursive_compoundables.<locals>.<lambda>rZ   c                  W   r   )Nr   c                 s   r   r   r
   r   r   r   r   r   P  r   zStest_resolve_attribute_recursive_compoundables.<locals>.<lambda>.<locals>.<genexpr>r	   r   r   r   r   r   r   P  r   r   rp   if  
COLOR_BLUEi  c                 S   rk   rl   r   rm   r   r   r   r   W  ro   rr   bright_blue_on_redzseq-6808seq-6502r   zseq-6808seq-6502textseq-normal)r   r"   r{   r   r#   r   r$   rb   rc   ru   rv   rx   r(   r%   )	r*   r   r{   r   r   r   ry   rg   r+   r   r   r   .test_resolve_attribute_recursive_compoundablesF  s(   
r   c                 C   s   ddl m}m} ddlm} ddl}dd }| td| |dd	d
}| \}}t|j	D ]}	||
|j||	dks=J q-|| | |ksKJ |d}
t|j	D ]}	|
|
|j|
|	dksdJ qT||
 | |
ksrJ dS )z9Test pickle-ability of a formatters.ParameterizingString.r   r   )PipeNc                  W   r   )Nr   c                 s   r   r   r
   r   r   r   r   r   q  r   zGtest_pickled_parameterizing_string.<locals>.<lambda>.<locals>.<genexpr>r	   r   r   r   r   r   r   q  r   z4test_pickled_parameterizing_string.<locals>.<lambda>r   seqnamer0   r7   )protocol)r"   r   r   multiprocessingr   pickler#   r$   rangeHIGHEST_PROTOCOLloadsdumpssendrecv)r*   r   r   r   r   r   r+   rw	proto_numr,   r   r   r   "test_pickled_parameterizing_stringf  s    


r   c                 C   s\   ddl m}m} dd }| td| t }d|_|ddd	}|d
}t||u s,J dS )B Test 'tparm() returned NULL' is caught (win32 PDCurses systems). r   r   rH   c                  W   
   t d)Nztparm() returned NULLr$   errorr   r   r   r   r        
z&test_tparm_returns_null.<locals>.tparmr   rr   r/   r0   r1   xN)	r"   r   rH   r#   r$   rb   rc   rx   r(   )r*   r   rH   r   rg   r+   rE   r   r   r   test_tparm_returns_null  s   r   c                 C   sh   ddl m}m} dd }| td| t }d|_|ddd	}z|d
 J d tjy3   Y dS w )r   r   r   c                  W   r   )Nzunexpected error in tparm()r   r   r   r   r   r     r   z)test_tparm_other_exception.<locals>.tparmr   rr   r/   r0   r1   r   Fz-previous call should have raised curses.errorN)	r"   r   rH   r#   r$   rb   rc   rx   r   )r*   r   rH   r   rg   r+   r   r   r   test_tparm_other_exception  s   r   )__doc__r$   rb   rC   r.   r2   r:   r>   rA   rG   rL   rY   ri   rz   r   r   r   r   r   r   r   r   r   r   r   <module>   s*    !$, &