
    (phY9                         S r SSKrSSKrSSKrS rS rS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rg)z"Tests string formatting functions.    Nc                 |   SSK JnJn  S nU R                  [        SU5        U" S5      n[        U5      S:X  d   eUR                  S:X  d   eUR                  S:X  d   eU" S5      n[        U5      UL d   eUS:X  d   eU" S5      S	:X  d   eU" S
S5      n[        U5      UL d   eUS:X  d   eU" S5      S:X  d   eg)z5Test default args of formatters.ParameterizingString.r   ParameterizingStringFormattingStringc                  b    SR                  S [        U 5       5       5      R                  S5      $ )N~c              3   ^   #    U  H#  u  pU(       d  UR                  S 5      OU< v   M%     g7flatin1Ndecode.0numargs      P/var/www/html/venv/lib/python3.13/site-packages/blessed/tests/test_formatters.py	<genexpr>Ptest_parameterizing_string_args_unspecified.<locals>.<lambda>.<locals>.<genexpr>   )      $)'HC %(

8S:'   +-r   join	enumerateencodeargss    r   <lambda>=test_parameterizing_string_args_unspecified.<locals>.<lambda>   -    $)) $)!$$) ))/)9:    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onetwos          r   +test_parameterizing_string_args_unspecifiedr3      s    I:E /  $D t9<<3::++++ 7D:))))5==<9$$$ !QZF<++++W&>[(((r    c                    SSK JnJn  S nU R                  [        SU5        U" SSS5      n[        U5      S:X  d   eUR                  S:X  d   eUR                  S:X  d   eU" S5      n[        U5      UL d   eUS:X  d   eU" S	5      S
:X  d   eU" SS5      n[        U5      UL d   eUS:X  d   eU" S	5      S:X  d   eg)z+Test basic formatters.ParameterizingString.r   r   c                  b    SR                  S [        U 5       5       5      R                  S5      $ )Nr   c              3   ^   #    U  H#  u  pU(       d  UR                  S 5      OU< v   M%     g7fr
   r   r   s      r   r   Dtest_parameterizing_string_args.<locals>.<lambda>.<locals>.<genexpr>1   r   r   r   r   r   s    r   r   1test_parameterizing_string_args.<locals>.<lambda>1   r   r    r!   capnormseq-namezcap~0r#   zcap~0textnormr$   r%   zcap~1~2zcap~1~2textnormNr&   r.   s          r   test_parameterizing_string_argsr<   +   s    I:E /  =D t9<<7"""::$$$ 7D:))))8<++++ !QZF<++++Z&>////r    c                 l   SSK Jn  S nU R                  [        SU5        U" SSS5      n U" S5         S	5       e! [         a2  nUR
                  S   S
:X  d  UR
                  S   S:X  d   e SnAOSnAff = f U" S5         S	5       e! [         a  nUR
                  S   S:X  d   e SnAgSnAff = f)z7Test formatters.ParameterizingString raising TypeError.r   )r   c                      [        S5      e)N
custom_err)	TypeErrorr   s    r   tparm_raises_TypeErrorEtest_parameterizing_string_type_error.<locals>.tparm_raises_TypeErrorP   s    %%r    r!   r9   r:   cap-nameXYZz*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'Nr?   )r'   r   r(   r)   r@   r   )r/   r   rA   r0   errs        r   %test_parameterizing_string_type_errorrF   L   s    7& )?@  =D6UBBBu 
601
 HHQK45		6 	5
6+QBBBu +xx{l***+s-   ; 
A7(A22A7;B
 

B3B..B3c                     SSK Jn  U" SS5      nUR                  S:X  d   e[        U5      S:X  d   eU" S5      S:X  d   eU" SS5      nU" S5      S:X  d   eg)	z=Test simple __call__ behavior of formatters.FormattingString.r   r   attrr:   r#   attrtextnormr"   N)r'   r   r+   r*   )r/   r   r0   s      r   test_formattingstringrK   p   sk    3 GW-D <<7"""t9<?*** C)D<7"""r    c                 `    SSK Jn  U" SS5      nU" SS5      nU" SU" S5      S5      S	:X  d   eg
)z=Test nested __call__ behavior of formatters.FormattingString.r   rH   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   r0   zstrs       r   test_nested_formattingstringrO      s=    3 FE*DFE*D d4j$'+@@@@r    c                    SSK Jn  U" SS5      nSR                  [        S5      5      n[        R
                  " [        5       nU" SSS5        S	S	S	5        U[        WR                  5      ;   d   eg	! , (       d  f       N*= f)
z3Test formatters.FormattingString raising TypeError.r   rH   za-rM   z.Positional argument #1 is {0} expected any of r$   r#   z...N)	r'   r   formatr-   pytestraisesr@   r*   value)r/   r   r0   expected_msgrE   s        r   'test_nested_formattingstring_type_errorrV      sj    3 E5)D8	Q 
 
y	!SVQ 
" 3syy>)))	 
"	!s   A33
Bc                     SSK Jn  U" 5       n[        U5      S:X  d   eU" S5      S:X  d   eU" SS5      S:X  d   eU" SS5      S:X  d   eU" 5       S:X  d   eU" S5      S:X  d   eg	)
z"Test formatters.NullCallableStringr   )NullCallableStringr"   r#   moretexttextmoretextc   r$   N)r'   rX   r*   )r/   rX   r0   s      r   test_nullcallablestringr\      s|    7 D t9<7"""
#666A;#6S==7c>>r    c                      SSK Jn   U " S5      S/:X  d   eU " S5      / SQ:X  d   eU " S5      / SQ:X  d   eU " S5      / S	Q:X  d   eU " S
5      / SQ:X  d   eg)zTest formatters.split_compound.r   split_compoundr"   a_b_c)abca_on_b_c)ra   on_brc   a_bright_b_c)ra   bright_brc   a_on_bright_b_c)ra   on_bright_brc   N)r'   r_   r^   s    r   test_split_compoundrj      sk    1#3%'''(#'9999+&*????/*.GGGG,-1MMMMr    c                 x   SSK Jn  S nU R                  [        SU5        [        R
                  " 5       n[        SS9Ul        U" US5      S:X  d   eU" US	5      S
:X  d   eS nU R                  [        SU5        U" US	5      S:X  d   eS nSUl        U R                  [        SU5        U" US	5      S:X  d   eg)z5Test formatters.resolve_capability and term sugaring r   )resolve_capabilityc                 ,    SU < 3R                  S5      $ )Nseq-r   )r   rI   s    r   r   )test_resolve_capability.<locals>.<lambda>   s    /77Ar    tigetstrxyz)mnemonicrs   zseq-xyznaturalzseq-naturalc                     g )N ro   s    r   r   rp      s    r    r"   c                       S5       e)NzShould not be calledrv   r   s    r   raises_exception1test_resolve_capability.<locals>.raises_exception   s    ,,,ur    FN)	r'   rl   r(   r)   mockMockdict_sugardoes_styling)r/   rl   rq   termtigetstr_nonerx   s         r   test_resolve_capabilityr      s    5 BH
H599;D&DK dJ/:===dI..@@@ &M
M: dI.#555-D
,<= dI.#555r    c                 8   SSK JnJnJn  S nU R	                  [
        SS5        [        R                  " 5       nXEl        XEl	        SUl
        SUl        U" US5      n[        U5      U:X  d   eUS	:X  d   eU" S
5      S:X  d   eU" US5      n[        U5      U:X  d   eUS:X  d   eU" S
5      S:X  d   eSUl
        U" US5      n[        U5      U:X  d   eUS:X  d   eU" S
5      S
:X  d   eU" US5      n[        U5      U:X  d   eUS:X  d   eU" S
5      S
:X  d   eg)zTest formatters.resolve_color.r   )resolve_colorr   rX   c                     SU < 3$ Nrn   rv   digits    r   r   $test_resolve_color.<locals>.<lambda>       %1r    	COLOR_REDi  
seq-normalredzseq-1984r#   zseq-1984textseq-normal
bright_redzseq-1992zseq-1992textseq-normalr"   N)r'   r   r   rX   r(   r)   rz   r{   _background_color_foreground_colornumber_of_colorsnormalr-   )r/   r   r   rX   	color_capr   r   r   s           r   test_resolve_colorr      s_   : : 2IT2 99;D&&DDK e
$C9((((+v;3333 t\2J
////$$$f!:::: D e
$C9****#::v;'!!! t\2J
1111f(((r    c                 H   SSK nSSKJn  S n[        SS/5      n[        SS/5      nU R	                  UR
                  S	U5        U R	                  UR
                  S
U5        U R	                  UR
                  SU5        [        R                  " 5       nU" US5      S:X  d   eg)z1Test simple resolve_attribte() given color name. r   N)resolve_attributec                     SU< 3$ r   rv   r   r   s     r   r   1test_resolve_attribute_as_color.<locals>.<lambda>
  s    E(;r    COLORXCOLORYJOINTCOMPOUNDr   COLORSCOMPOUNDABLESz
seq-COLORX)blessedr'   r   setr(   
formattersrz   r{   )r/   r   r   r   r   r   r   s          r   test_resolve_attribute_as_colorr     s    4;M(H%&F*-.M**O]K**Hf=**O]K99;DT8,===r    c                 X   SSK nSSKJnJn  S n[	        SS/5      nU R                  UR                  SU5        U R                  UR                  SU5        [        R                  " 5       nS	Ul	        U" US5      n[        U5      UL d   e[        U5      S
:X  d   eU" S5      S:X  d   eg)z5Test simple resolve_attribte() given a compoundable. r   Nr   r   c                     SU< 3$ r   rv   r   s     r   r   8test_resolve_attribute_as_compoundable.<locals>.<lambda>      %&9r    r   r   rl   r   r   z	seq-JOINTr#   zseq-JOINTtextseq-normal)r   r'   r   r   r   r(   r   rz   r{   r   r-   r*   )r/   r   r   r   resolve_capr   r   compounds           r   &test_resolve_attribute_as_compoundabler     s    F9K*-.M**,#% **O]K99;DDK w/H>----x=L(((F9999r    c                    SSK nSSKJnJn  S nS nU R	                  UR
                  SU5        U R	                  UR
                  SU5        S nU R	                  [        S	U5        [        R                  " 5       nS
Ul	        U" US5      n[        U5      U:X  d   e[        U5      S:X  d   eU" S5      S:X  d   eU" S5      " S5      S:X  d   eg)3Test recursive compounding of resolve_attribute(). r   N)r   r   c                 
    SS/$ )Nsplitr   rv   ro   s    r   r   :test_resolve_attribute_non_compoundables.<locals>.<lambda>,  s	    GZ#8r    c                     SU< 3$ r   rv   r   s     r   r   r   -  r   r    r_   rl   c                  b    SR                  S [        U 5       5       5      R                  S5      $ )Nr   c              3   ^   #    U  H#  u  pU(       d  UR                  S 5      OU< v   M%     g7fr
   r   r   s      r   r   Mtest_resolve_attribute_non_compoundables.<locals>.<lambda>.<locals>.<genexpr>4  r   r   r   r   r   s    r   r   r   4  r   r    r!   r   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)   rz   r{   r   r-   r*   )	r/   r   r   r   uncompoundablesr   r!   r   r0   s	            r   (test_resolve_attribute_non_compoundablesr   (  s    J8O9K**(') **,#%:E /99;DDK T#78D:----t911117111176?GGGGr    c                    SSK nSSKJnJn  S nU R	                  UR
                  SU5        S nU R	                  [        SU5        U R	                  [        SS	5        U R	                  [        S
S5        S n[        R                  " 5       nXgl	        Xgl
        SUl        U" US5      n[        U5      U:X  d   e[        U5      S:X  d   eU" S5      S:X  d   eg)r   r   Nr   c                     SU< 3$ r   rv   r   s     r   r   @test_resolve_attribute_recursive_compoundables.<locals>.<lambda>L  r   r    rl   c                  b    SR                  S [        U 5       5       5      R                  S5      $ )Nr   c              3   ^   #    U  H#  u  pU(       d  UR                  S 5      OU< v   M%     g7fr
   r   r   s      r   r   Stest_resolve_attribute_recursive_compoundables.<locals>.<lambda>.<locals>.<genexpr>P  r   r   r   r   r   s    r   r   r   P  r   r    r!   r   if  
COLOR_BLUEi  c                     SU < 3$ r   rv   r   s    r   r   r   W  r   r    r   bright_blue_on_redzseq-6808seq-6502r#   zseq-6808seq-6502textseq-normal)r   r'   r   r   r(   r   r)   rz   r{   r   r   r   r-   r*   )	r/   r   r   r   r   r!   r   r   r0   s	            r   .test_resolve_attribute_recursive_compoundablesr   F  s    F :K**,#%:E /T2d31I99;D&&DK T#78D :))))t9****<;;;;r    c           	      *   SSK JnJn  SSKJn  SSKnS nU R                  [        SU5        U" SSS	5      nU" 5       u  px[        UR                  5       H&  n	XdR                  UR                  XiS
95      :X  a  M&   e   UR                  U5        UR                  5       U:X  d   eU" S5      n
[        UR                  5       H&  n	XR                  UR                  XS
95      :X  a  M&   e   UR                  U
5        UR                  5       U
:X  d   eg)z9Test pickle-ability of a formatters.ParameterizingString.r   r   )PipeNc                  b    SR                  S [        U 5       5       5      R                  S5      $ )Nr   c              3   ^   #    U  H#  u  pU(       d  UR                  S 5      OU< v   M%     g7fr
   r   r   s      r   r   Gtest_pickled_parameterizing_string.<locals>.<lambda>.<locals>.<genexpr>q  r   r   r   r   r   s    r   r   4test_pickled_parameterizing_string.<locals>.<lambda>q  r   r    r!   seqnamer:   rC   )protocol)r'   r   r   multiprocessingr   pickler(   r)   rangeHIGHEST_PROTOCOLloadsdumpssendrecv)r/   r   r   r   r   r!   r0   rw	proto_numr1   s              r   "test_pickled_parameterizing_stringr   f  s    I %:E /  
G[AD 6DA 6223	||FLLL$JKKKK 4FF4L668t 7D6223	||FLLL$JKKKK 4FF4L668tr    c                     SSK JnJn  S nU R                  [        SU5        [
        R                  " 5       nSUl        U" SSS5      nU" S	5      n[        U5      UL d   eg
)ATest 'tparm() returned NULL' is caught (win32 PDCurses systems). r   r   rX   c                  .    [         R                  " S5      e)Nztparm() returned NULLr)   errorr   s    r   r!   &test_tparm_returns_null.<locals>.tparm  s    ll233r    r!   r   r9   r:   r;   xN)	r'   r   rX   r(   r)   rz   r{   r   r-   )r/   r   rX   r!   r   r0   rT   s          r   test_tparm_returns_nullr     s]     L4 /99;DDK=DJE;,,,,r    c                     SSK JnJn  S nU R                  [        SU5        [
        R                  " 5       nSUl        U" SSS5      n U" S	5         S
5       e! [        R                   a     gf = f)r   r   r   c                  .    [         R                  " S5      e)Nzunexpected error in tparm()r   r   s    r   r!   )test_tparm_other_exception.<locals>.tparm  s    ll899r    r!   r   r9   r:   r;   r   z-previous call should have raised curses.errorN)	r'   r   rX   r(   r)   rz   r{   r   r   )r/   r   rX   r!   r   r0   s         r   test_tparm_other_exceptionr     sn     L: /99;DDK=DT
EEEu<< s   
A A0/A0)__doc__r)   rz   rR   r3   r<   rF   rK   rO   rV   r\   rj   r   r   r   r   r   r   r   r   r   rv   r    r   <module>r      sq    (   )@0B!+H#"	A*$ N6>))X>:(H<<@#L-(r    