o
    ˷e                     @   s   d Z ddlZddlZddlZddlZddlmZ ddlZddlm	Z	 dd Z
dd Zejd	d
dgdd Zejd	d
dg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 for IPython.utils.text    N)Path)textc                     sb  d  fdddD } t j| dd}|dksJ t j| dd}|d	ks%J t j| d
d}|d	ks2J t j| dd}|dks?J t j| ddd}|dksMJ t j| ddd}|dks[J t j| dd
d}|dksiJ t j| ddd}|dkswJ t j| ddd}|dksJ t j| ddd}|dksJ t j| d
dd}|d	ksJ t j| ddd}|dksJ dS )zBasic columnize tests.   c                       g | ]}|  qS  r   .0lsizer   T/var/www/ideatree/venv/lib/python3.10/site-packages/IPython/utils/tests/test_text.py
<listcomp>!       z"test_columnize.<locals>.<listcomp>abcdP   displaywidthzaaaaa  bbbbb  ccccc  ddddd
   zaaaaa  ccccc
bbbbb  ddddd
   
   zaaaaa
bbbbb
ccccc
ddddd
T	row_firstr   zaaaaa  bbbbb
ccccc  ddddd
(   )r   spreadz'aaaaa      bbbbb      ccccc      ddddd
   z*aaaaa          ccccc
bbbbb          ddddd
N)r   	columnize)itemsoutr   r
   r   test_columnize   s4   r   c                     s   dD ]Z} dd t ddD D ]M}tdd  fddt |D }dd |D }tj||  d	}td
d |dD }t|}| ks[J d| d| d  d| d| d|  dqqdS )z4Test with random input to hopefully catch edge case )TFc                 S   s   g | ]}t d dqS )   F   randomrandintr   ir   r   r   r   B       z)test_columnize_random.<locals>.<listcomp>r   r      c                    s   g | ]}t d  qS )r   r!   r$   r   r   r   r   D   r&   c                 S   s   g | ]}d | qS xr   r   r   r   r   r   E   r   r   c                 S   s   g | ]}t |qS r   )len)r   r)   r   r   r   r   G   r   
z8Columnize displayed something lager than displaywidth : z
longer element : z
displaywidth : z
number of element : z
size of each element : z
row_first=N)ranger"   r#   r   r   maxsplit)r   nitemsrand_lenr   r   longer_linelonger_elementr   r   r   test_columnize_random?   s.   
r3   r   TFc                    sL   d  fdddD }t j|| dd}|d|dg ks$J d	| d
S )z0Test with inputs than shouldn't be wider than 80r   c                    r   r   r   r   r
   r   r   r   W   r   z)test_columnize_medium.<locals>.<listcomp>abcr   r   r+    row_first={0}Nr   r   joinformatr   r   r   r   r
   r   test_columnize_mediumS   s   &r;   c                    sP   d  fdddD }t j||  d d}|d|dg ks&J d	| d
S )z9Test columnize with inputs longer than the display window   c                    r   r   r   r   r
   r   r   r   `   r   z'test_columnize_long.<locals>.<listcomp>r4      r   r+   r5   r6   Nr7   r:   r   r
   r   test_columnize_long\   s   &r>   c                 C   s  t dtjdtddd}| jdi |}|dksJ | jddd	 td
dD fi |}|dks3J | jdi |}|dksAJ | jdi |}||d ksQJ | jdi |}|t|d kscJ | jdi |}||d kssJ | jdi |}tj	t
| jdfi | d S )Nr   hello thereu   café)npistuffosub{n} {n//4} {stuff.split()[0]}z
12 3 hello c                 S   s   g | ]}d | qS )z{n//%i}r   r$   r   r   r   r   i   r   z(eval_formatter_check.<locals>.<listcomp>r=      z12 6 4 3 2 2 1{[n//i for i in range(1,8)]}z[12, 6, 4, 3, 2, 2, 1]	{stuff!s}rB   	{stuff!r}{u}rD   {b}z{dne})rF   )rI   )rJ   )rK   )rL   )rM   )dictmathrA   rC   r9   r8   r,   reprpytestraises	NameErrorfnssr   r   r   eval_formatter_checke   s   (rX   c                 C   s   t dtjdtd}| jdi |}|dksJ | jdi |}|dks%J | jdi |}||d	 d d d
 ks:J tjt| jdfi | d S )Nr   r?   r@   rA   rB   rC    {stuff.split()[:]} z ['hello', 'there']  {stuff.split()[::-1]} z ['there', 'hello'] {stuff[::2]}rB   r   z{n:x})rZ   )r[   )r\   )rN   rO   rA   rC   r9   rQ   rR   SyntaxErrorrT   r   r   r   eval_formatter_slicing_check{   s   r^   c                 C   sl   t dtjdtd}| jdi |}|dksJ | jdi |}|dks%J | jdd	d
gd}|dks4J d S )Nr   r?   rY   {n:x} {pi**2:+f}zc +9.869604{stuff[slice(1,4)]}ellz{a[:]}r=   r   )az[1, 2])r_   )r`   )rN   rO   rA   rC   r9   rT   r   r   r   eval_formatter_no_slicing_check   s   rc   c                  C      t  } t|  t|  d S N)r   EvalFormatterrX   rc   rU   r   r   r   test_eval_formatter      rh   c                  C   rd   re   )r   FullEvalFormatterrX   r^   rg   r   r   r   test_full_eval_formatter   ri   rk   c                  C   s   t  } t|  t|  tdtjdtd}| jdi |}|dks#J | jdi |}|dks1J | jdi |}|dks?J | jdi |}|d
ksMJ | jddd}|dksZJ d S )Nr   r?   rY   $n12$n.real$n/{stuff[:5]}z12/hello	$n $$HOMEz12 $HOMEz${foo}HOME)fooz$HOME)rl   )rn   )ro   )rp   )	r   DollarFormatterrX   r^   rN   rO   rA   rC   r9   rT   r   r   r   test_dollar_formatter   s   rt   c                  C      d} d}t | |ksJ d S )Nz_        >> >>> def f(x):
        >> ...   return x+1
        >> ... 
        >> >>> zz = f(2.5)z3>>> def f(x):
...   return x+1
... 
>>> zz = f(2.5)r   strip_email_quotessrcclnr   r   r   test_strip_email   s   r{   c                  C   ru   )Nz> > > list()zlist()rv   rx   r   r   r   test_strip_email2   s   r|   c                  C   sP   t d} | jddgksJ | jdksJ t t } t| jd ts&J d S )Nzabc
defr4   defzabc defr   )	r   LSStringr	   rW   rC   getcwd
isinstancepr   )lssr   r   r   test_LSString   s
   
r   c                  C   s   t g d} | jdksJ | jdksJ | dd t ddgks%J | dt g d	ks3J | jd
ddt g dksCJ d S )N)a 11b 1a 2za 11
b 1
a 2za 11 b 1 a 2c                 S   s
   |  dS )Nrb   )
startswithr(   r   r   r   <lambda>   s   
 ztest_SList.<locals>.<lambda>r   r   r   )rb   rE   rb   r=   T)fieldnums)r   r   r   )r   SListr@   rW   grepfieldssort)slr   r   r   
test_SList   s    $r   )__doc__rC   rO   r"   syspathlibr   rQ   IPython.utilsr   r   r3   markparametrizer;   r>   rX   r^   rc   rh   rk   rt   r{   r|   r   r   r   r   r   r   <module>   s0   !

