U
    puf                     @   s   d 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                     sj  d  fdddD } t j| dd}|dks0tt j| dd}|d	ksJtt j| d
d}|d	ksdtt j| dd}|dks~tt j| ddd}|dkstt j| ddd}|dkstt j| dd
d}|dkstt j| ddd}|dkstt j| ddd}|dkstt j| ddd}|dks*tt j| d
dd}|d	ksHtt j| ddd}|dksftdS )zBasic columnize tests.   c                    s   g | ]}|  qS  r   .0lsizer   A/tmp/pip-unpacked-wheel-bxwx4lqe/IPython/utils/tests/test_text.py
<listcomp>    s     z"test_columnize.<locals>.<listcomp>Z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   Zspreadz'aaaaa      bbbbb      ccccc      ddddd
   z*aaaaa          ccccc
bbbbb          ddddd
N)r   	columnizeAssertionError)itemsoutr   r	   r   test_columnize   s4    r   c                     s   dD ]} dd t ddD D ]}tdd  fddt |D }dd |D }tj||  d	}td
d |dD }t|}| kst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   A   s     z)test_columnize_random.<locals>.<listcomp>r   r      c                    s   g | ]}t d  qS )r   r   r!   r   r   r   r   C   s     c                 S   s   g | ]}d | qS xr   r   r   r   r   r   D   s     r   c                 S   s   g | ]}t |qS r   )len)r   r%   r   r   r   r   F   s     
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splitr   )r   ZnitemsZrand_lenr   r   Zlonger_lineZlonger_elementr   r   r   test_columnize_random>   s    
(r+   r   TFc                    sL   d  fdddD }t j|| dd}|d|dg ksHtd	| d
S )z0Test with inputs than shouldn't be wider than 80r   c                    s   g | ]}|  qS r   r   r   r	   r   r   r   V   s     z)test_columnize_medium.<locals>.<listcomp>abcr   r   r'    row_first={0}Nr   r   joinr   formatr   r   r   r   r	   r   test_columnize_mediumR   s    r3   c                    sP   d  fdddD }t j||  d d}|d|dg ksLtd	| d
S )z9Test columnize with inputs longer than the display window   c                    s   g | ]}|  qS r   r   r   r	   r   r   r   _   s     z'test_columnize_long.<locals>.<listcomp>r,      r   r'   r-   r.   Nr/   r2   r   r	   r   test_columnize_long[   s    r6   c                 C   s   t dtjdtddd}| jd|}|dks.t| jddd	 td
dD f|}|dks^t| jd|}|dksvt| jd|}||d kst| jd|}|t|d kst| jd|}||d kst| jd|}t	j
t| jdf| 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   h   s     z(eval_formatter_check.<locals>.<listcomp>r5      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}r:   	{stuff!r}{u}r<   {b}z{dne})r>   )rA   )rB   )rC   )rD   )rE   )dictmathr9   r;   r1   r   r0   r(   reprpytestraises	NameErrorfnssr   r   r   eval_formatter_checkd   s    $rP   c                 C   s   t dtjdtd}| jd|}|dks*t| jd|}|dksBt| jd|}||d	 d d d
 kshttjt| jdf| d S )Nr   r7   r8   r9   r:   r;    {stuff.split()[:]} z ['hello', 'there']  {stuff.split()[::-1]} z ['there', 'hello'] {stuff[::2]}r:   r   z{n:x})rR   )rS   )rT   )	rF   rG   r9   r;   r1   r   rI   rJ   SyntaxErrorrL   r   r   r   eval_formatter_slicing_checkz   s    rV   c                 C   sd   t dtjdtd}| jd|}|dks*t| jd|}|dksBt| jdd	d
gd}|dks`td S )Nr   r7   rQ   {n:x} {pi**2:+f}zc +9.869604{stuff[slice(1,4)]}Zellz{a[:]}r5   r   )az[1, 2])rW   )rX   )rF   rG   r9   r;   r1   r   rL   r   r   r   eval_formatter_no_slicing_check   s    rZ   c                  C   s   t  } t|  t|  d S N)r   ZEvalFormatterrP   rZ   rM   r   r   r   test_eval_formatter   s    r]   c                  C   s   t  } t|  t|  d S r[   )r   ZFullEvalFormatterrP   rV   r\   r   r   r   test_full_eval_formatter   s    r^   c                  C   s   t  } t|  t|  tdtjdtd}| jd|}|dksBt	| jd|}|dksZt	| jd|}|dksrt	| jd|}|d
kst	| jddd}|dkst	d S )Nr   r7   rQ   $nZ12$n.real$n/{stuff[:5]}z12/hello	$n $$HOMEz12 $HOMEz${foo}HOME)Zfooz$HOME)r_   )r`   )ra   )rb   )
r   ZDollarFormatterrP   rV   rF   rG   r9   r;   r1   r   rL   r   r   r   test_dollar_formatter   s    rd   c                  C   s   d} d}t | |kst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   Zstrip_email_quotesr   srcZclnr   r   r   test_strip_email   s    rh   c                  C   s   d} d}t | |kstd S )Nz> > > list()zlist()re   rf   r   r   r   test_strip_email2   s    ri   c                  C   sP   t d} | jddgkst| jdks*tt t } t| jd t	sLtd S )Nzabc
defr,   defzabc defr   )
r   ZLSStringr   r   rO   r;   getcwd
isinstancepr   )Zlssr   r   r   test_LSString   s
    
rn   c                  C   s   t dddg} | jdkst| jdks,t| dd t ddgksLt| dt d	d
d	gksjt| jdddt dddgkstd S )Nza 11zb 1za 2za 11
b 1
a 2za 11 b 1 a 2c                 S   s
   |  dS )NrY   )
startswithr$   r   r   r   <lambda>       ztest_SList.<locals>.<lambda>r   rY   r=   r5   T)fieldnums)r   ZSListr8   r   rO   Zgrepfieldssort)slr   r   r   
test_SList   s     rw   )__doc__r;   rG   r   pathlibr   rI   ZIPython.utilsr   r   r+   markZparametrizer3   r6   rP   rV   rZ   r]   r^   rd   rh   ri   rn   rw   r   r   r   r   <module>   s,   !

