U
    f/e                     @   s   d dl Zd dlZd dlm  mZ d dlZd dl	m
  m  mZ d dlm
  m  mZ dd Zdd ZG dd dZG dd	 d	ZdS )
    Nc                  C   s>   dddgdddgddd	gg} d
}t jd|  }||ks:td S NabcddeeffggghhhZiiiz a  dd  ggg
b  ee  hhh
c  ff  iii   )r   printingadjoinAssertionError)dataexpectedadjoined r   I/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/io/formats/test_printing.pytest_adjoin   s    r   c                  C   s   dd l } | j}zt|tdd}W n tk
r@   t|}Y nX t|d}tj	|dd}|t
|ksnttj	|dd}||kstd S )Nr   zdisplay.encoding)encodingzutf-8T)Zquote_stringsF)stringascii_lettersbytescf
get_option	TypeErrorstrdecoder   Zpprint_thingreprr   )r   lettersrawr   resr   r   r   test_repr_binary_type   s    r#   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestFormattBasec                 C   s>   dddgdddgddd	gg}d
}t jd| }||ks:td S r   r   )selfr   r   r   r   r   r   r   %   s    zTestFormattBase.test_adjoinc                 C   s  dddgdddgddd	gg}d
}t jd| }||ks:tt }d}|jd| }||ks`t|d}||d dkst||d dkst||d dkstd}|jd| }||kst|d}||d dkst||d dkst||d dkstd S )N   あr   r   r      ええr   r	   r
   	   いいいu,   あ  dd  ggg
b  ええ  hhh
c  ff  いいいr   u2   あ  dd    ggg
b   ええ  hhh
c   ff    いいい
r            uP   あ       dd         ggg
b        ええ       hhh
c        ff         いいい         )r   )r   )r-   )r   r   r   fmtEastAsianTextAdjustmentsplitlen)r%   r   r   r   adjcolsr   r   r   test_adjoin_unicode-   s&    

z#TestFormattBase.test_adjoin_unicodec                    s$  t    fdd}|dddddks*t|ddddd	ks@t|ddd
ddksVt|dddddkslt|ddddd	kst|ddd
ddkst|dddddkst|dddddkst|ddd
ddkst|dddddkst|dddddkst|ddd
ddks td S )Nc                    s    j | gf||d S )Nr   )Zjustify)xargskwargsr4   r   r   justN   s    z*TestFormattBase.test_justify.<locals>.justabc   left)modezabc  centerz abc rightz  abc	   パンダ
   u   パンダ    u     パンダ  u       パンダ)r0   r1   r   )r%   r;   r   r:   r   test_justifyK   s    zTestFormattBase.test_justifyc                 C   sx   t  }|ddkst|ddks,t|ddks>t|ddksPt|ddksbt|d	d
ksttd S )Nr<      rB      u   ﾊﾟﾝﾀﾞr=   u   パンダpanda   u   ﾊﾟﾝﾀﾞpandarC   )r0   r1   r3   r   )r%   r4   r   r   r   test_east_asian_lena   s    z#TestFormattBase.test_east_asian_lenc              	   C   s   t  }|ddksttdd  t  }|ddksBtW 5 Q R X dddgd	d
dgdddgg}d}|jd| }||kstd S )Nu   ¡¡ab   z!display.unicode.ambiguous_as_wideTrF   r&   r   r   r   r'   r   r	   r(   u6   あ  dd    ggg 
b   ええ  ¡¡ab
c   ff    いいいr   )r   )r0   r1   r3   r   r   option_contextr   )r%   r4   r   r   r   r   r   r   test_ambiguous_widthl   s    z$TestFormattBase.test_ambiguous_widthN)__name__
__module____qualname__r   r6   rD   rH   rK   r   r   r   r   r$   $   s
   r$   c                   @   s@   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dS )TestTableSchemaReprc                 C   s&   t d ddlm} | j| _d S )NZIPythonr   )InteractiveShell)pytestZimportorskipZIPython.core.interactiveshellrP   instancedisplay_formatter)clsrP   r   r   r   setup_class{   s    
zTestTableSchemaRepr.setup_classc           	   
   C   s   t dddgi}|d ||g}ddhdddhg}t dd}t||D ]<\}}| | j|}W 5 Q R X t|d	  |ksHtqHt d
d}|" | | j|}W 5 Q R X W 5 Q R X ddddh}t|d	  |kstd S )NAr+   r   
text/plain!application/vnd.dataresource+json	text/htmldisplay.html.table_schemaTr   zdisplay.latex.reprz
text/latex)	pd	DataFramerJ   ziprS   formatsetkeysr   )	r%   dfZobjectsZexpected_keysoptobjr   	formattedZ
with_latexr   r   r   test_publishes   s&     z"TestTableSchemaRepr.test_publishesc              	   C   s   t jddgdddgg}t jtjdt||d}t dd	}| | j	
|}W 5 Q R X d
dh}t|d  |ks~td S )NrV   Br   r   r   r=   )columnsrZ   TrW   rY   r   )r[   Z
MultiIndexZfrom_productr\   nprandomZrandnr3   rJ   rS   r^   r_   r`   r   )r%   Zmidxra   rb   rd   r   r   r   r   test_publishes_not_implemented   s    z2TestTableSchemaRepr.test_publishes_not_implementedc              	   C   sB   t dddgi}t dd | }W 5 Q R X |d k	s>td S )NrV   r+   r   rZ   Tr[   r\   rJ   Z_repr_data_resource_r   r%   ra   resultr   r   r   test_config_on   s    z"TestTableSchemaRepr.test_config_onc              	   C   sB   t dddgi}t dd | }W 5 Q R X |d ks>td S )NrV   r+   r   rZ   Frk   rl   r   r   r   test_config_default_off   s    z+TestTableSchemaRepr.test_config_default_offc              	   C   s   | j j}d}tdd  d|ks&t|| js4tW 5 Q R X d|ksJt|| jrXttdd, d|ksrt|| jst| j t W 5 Q R X d S )NrX   rZ   T)rS   
formattersr[   rJ   r   Zenabledr^   r   )r%   rp   mimetyper   r   r   #test_enable_data_resource_formatter   s    z7TestTableSchemaRepr.test_enable_data_resource_formatterN)
rL   rM   rN   classmethodrU   re   rj   rn   ro   rr   r   r   r   r   rO   z   s   
rO   )Znumpyrh   rQ   Zpandas._config.config_configconfigr   Zpandasr[   Zpandas.io.formats.formatioformatsr^   r0   Zpandas.io.formats.printingr   r   r#   r$   rO   r   r   r   r   <module>   s   	V