3
Ud)                 @   s   d Z ddlmZmZ ddlZddlZddlZddlj	j
ZddlmZ ddlmZ ddljZddlmZmZ G dd dZd	d
 ZdS )z\
Tests the TextReader class in parsers.pyx, which
is integral to the C engine in parsers.py
    )BytesIOStringION)
TextReader)	DataFrame)TextFileReaderread_csvc               @   s   e Zd Zejdd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%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3S )4TestTextReaderT)Zautousec             C   sR   |ddd| _ |ddd}tjj|d| _tjj| j d| _tjj| j d| _d S )Nioparserdatacsvz	test1.csvz	test2.csvztest.xls)dirpathospathjoincsv1Zcsv2Zxls1)selfZdatapathZcsv1_dirpath r   Z/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/io/parser/test_textreader.pysetup_method   s
    zTestTextReader.setup_methodc          	   C   s,   t | jd}t|}|j  W d Q R X d S )Nrb)openr   r   read)r   freaderr   r   r   test_file_handle   s    zTestTextReader.test_file_handlec             C   s   t | jd d}|j  d S )N)header)r   r   r   )r   r   r   r   r   test_string_filename"   s    z#TestTextReader.test_string_filenamec             C   s2   t | jd}t|dd d}|j  W d Q R X d S )Nr   T)Z
memory_mapr   )r   r   r   r   )r   r   r   r   r   r   test_file_handle_mmap&   s    z$TestTextReader.test_file_handle_mmapc             C   s@   t | jd}|j }W d Q R X t|}t|d d}|j  d S )Nr   )r   )r   r   r   r   r   )r   r   textsrcr   r   r   r   test_StringIO+   s
    zTestTextReader.test_StringIOc             C   s>   d}t t|d d}|j }tttt|d dks:td S )Nz	a
b
a
b
a)r   r      )r   r   r   lensetmapidAssertionError)r   r   r   resultr   r   r   test_string_factorize2   s    z$TestTextReader.test_string_factorizec             C   sj   d}t t|dd d}|j }tj|d tjddddgtjd tj|d tjddddgtjd d S )	Nza,   b
a,   b
a,   b
a,   bT)skipinitialspacer   r   a)dtype   b)r   r   r   tmassert_numpy_array_equalnparrayobject_)r   r   r   r(   r   r   r   test_skipinitialspace9   s     z$TestTextReader.test_skipinitialspacec             C   s4   d}t t|d d}|j }|d jtjks0td S )NzTrue
False
True
True)r   r   )r   r   r   r,   r1   Zbool_r'   )r   r   r   r(   r   r   r   test_parse_booleansF   s    z"TestTextReader.test_parse_booleansc             C   sf   d}t t|dd d}|j }tj|d tjdddgtjd tj|d tjdddgtjd d S )	Nza  b
a		 "b"
"a"	 	 bT)delim_whitespacer   r   r+   )r,   r-   r.   )r   r   r   r/   r0   r1   r2   r3   )r   r   r   r(   r   r   r   test_delimit_whitespaceN   s    z&TestTextReader.test_delimit_whitespacec             C   sF   d}t t|d d}|j }tjdddgtjd}tj|d | d S )Nza
"hello
there"
this)r   r+   zhello
therethis)r,   r   )r   r   r   r1   r2   r3   r/   r0   )r   r   r   r(   expectedr   r   r   test_embedded_newline[   s
    z$TestTextReader.test_embedded_newlinec             C   sB   d}t t|ddd d}|j }tjddg}tj|d | d S )Nz12345,67
345,678:,)	delimiterdecimalr   g)\@g+ٚu@r   )r   r   r   r1   r2   r/   assert_almost_equal)r   r   r   r(   r9   r   r   r   test_euro_decimald   s
    z TestTextReader.test_euro_decimalc             C   sH   d}t t|ddd d}|j }tjddgtjd}tj|d | d S )	Nz123,456
12,500r;   r<   )r=   	thousandsr   i@ i0  )r,   r   )r   r   r   r1   r2   int64r/   r?   )r   r   r   r(   r9   r   r   r   test_integer_thousandsm   s
    z%TestTextReader.test_integer_thousandsc             C   s<   d}t t|ddd d}|j }tddg}tj|| d S )Nz123.456
12.500r;   .)r=   rA   r   i@ i0  )r   r   r   r   r/   assert_frame_equal)r   r   r   r(   r9   r   r   r   test_integer_thousands_altv   s    z)TestTextReader.test_integer_thousands_altc             C   s   d}t t|dd d}d}tjtj|d |j  W d Q R X t t|dd ddd}|j }tjdd	d
dgt	dtjddddgt	dtjddddgt	dd}t
|| t t|dd ddd}|j  |j }d|jkstd|jkstd S )Nz'a:b:c
d:e:f
g:h:i
j:k:l:m
l:m:n
o:p:q:rr;   )r=   r   zCError tokenizing data\. C error: Expected 3 fields in line 4, saw 4)matchF)r=   r   Zerror_bad_linesZwarn_bad_linesr+   dgl)r,   r.   ehmcr   in)r   r-   r"   TzSkipping line 4zSkipping line 6)r   r   pytestZraisesr
   ZParserErrorr   r1   r2   objectassert_array_dicts_equalZ
readouterrerrr'   )r   Zcapsysr   r   msgr(   r9   Zcapturedr   r   r   test_skip_bad_lines   s4    
z"TestTextReader.test_skip_bad_linesc             C   s   d}t t|ddd}|j}dddgg}||ks4t|j }tjdd	gtjd
tjddgtjd
tjddgtjd
d}t|| d S )Nz%skip this
skip this
a,b,c
1,2,3
4,5,6r<   r"   )r=   r   r+   r.   rN   r-      )r,            )r   r-   r"   )	r   r   r   r'   r   r1   r2   rB   rS   )r   r   r   r   r9   Zrecsr   r   r   test_header_not_enough_lines   s    z+TestTextReader.test_header_not_enough_linesc             C   sF   d}t t|dd dd}|j }dtjdgd tdi}t|| d S )	Nz,\"hello world"
\"hello world"
\"hello world"r<   \)r=   r   
escapecharr   z"hello world"rY   )r,   )r   r   r   r1   r2   rR   rS   )r   r   r   r(   r9   r   r   r   test_escapechar   s
    zTestTextReader.test_escapecharc             C   s   d S )Nr   )r   r   r   r   test_eof_has_eol   s    zTestTextReader.test_eof_has_eolc             C   s   d S )Nr   )r   r   r   r   test_na_substitution   s    z#TestTextReader.test_na_substitutionc                s   d  fdd}|dd}|j  }|d jdks4ttjdd	d
ddgdd}|d |kj s`t|d jdksrt|dd}|j  }|d jdksttjdd	d
ddgdd}|d |kj st|d jdkstd S )Nza,1
aa,2
aaa,3
aaaa,4
aaaaa,5c                 s   t t fdd d| S )Nr<   )r=   r   )r   r   )kwds)r   r   r   _make_reader   s    z<TestTextReader.test_numpy_string_dtype.<locals>._make_readerzS5,i4)r,   r   ZS5r+   ZaaZaaaZaaaaZaaaaar-   i4ZS4)r   r,   r'   r1   r2   all)r   rb   r   r(   Z	ex_valuesr   )r   r   test_numpy_string_dtype   s    

z&TestTextReader.test_numpy_string_dtypec                s   d  fdd}|dddd}|j  }|d jdks:t|d	 jdksLt|tjtdd}|j  }|d jdksxt|d	 jd
kst|tjdtjd
dd}|j  }|d jdkst|d	 jd
kstd S )Nzone,two
1,a
2,b
3,c
4,dc                 s   t t fddi| S )Nr=   r<   )r   r   )ra   )r   r   r   rb      s    z4TestTextReader.test_pass_dtype.<locals>._make_readeru1ZS1)Zoner-   )r,   r   r-   O)r   r,   r'   r1   Zuint8rR   )r   rb   r   r(   r   )r   r   test_pass_dtype   s    zTestTextReader.test_pass_dtypec                sp   d  fdd}|dd}|j  }| j  }t|dks<t|d |d kj sTt|d |d kj sltd S )Nz a,b,c
1,2,3
4,5,6
7,8,9
10,11,12c                 s   t t fddi| S )Nr=   r<   )r   r   )ra   )r   r   r   rb     s    z1TestTextReader.test_usecols.<locals>._make_readerr-   r"   )Zusecols)r-   r"   )r   r#   r'   rd   )r   rb   r   r(   expr   )r   r   test_usecols   s    

zTestTextReader.test_usecolsc             C   sl   dd }d}||dd d}||dd d	}||dd d
}||dd d}||dd d}||dd d S )Nc             [   sB   | j dd}tt| f|j }tt|f|j }t|| d S )Nz
)replacer   r   r   rS   )r   kwargsZ	nice_textr(   r9   r   r   r   _test  s    z/TestTextReader.test_cr_delimited.<locals>._testz a,b,c1,2,34,5,67,8,910,11,12r<   )r=   z*a  b  c1  2  34  5  67  8  910  11  12T)r6   z a,b,c1,2,34,5,6,88,910,11,12zdA,B,C,D,E,F,G,H,I,J,K,L,M,N,OAAAAA,BBBBB,0,0,0,0,0,0,0,0,0,0,0,0,0,BBBBB,0,0,0,0,0,0,0,0,0,0,0,0,0zA  B  C  2  34  5  6zA B C2 34 5 6r   )r   rn   r   sampler   r   r   test_cr_delimited  s    z TestTextReader.test_cr_delimitedc       	      C   sj  d}t t|ddj }tjddgtjdtjddgtdtjd	dgtdd
}t|| tdgtj	ggdgddgd}tddddgddddggt
dddgd}tddddgdtj	tj	tj	gddddgddtj	tj	ggt
dddddgd}xvtdD ]j}ttdddgdd}tj|| ttd&t
ddd"}tj|| ttd#t
ddd"}tj|| qW d S )'Nza,b,c
1,2,3
4,,r<   )r=   r-   rW   )r,   2 3)r   r-   r"   r.   r+   rN   )columnsindexr   Zabcdr"   rY   rZ      	   
            rX         d   za,b
c
)Zskiprowsnamesenginez
1,1,1,1,0

)r   r   z"0,1,2,3,4
5,6
7,8,9,10,11
12,13,14z1,1,1,1,0
1,1,1,1,0
z

z1,1,1,1,0
1,1,1,1,0


)r   r   r   r1   r2   rB   rR   rS   r   nanlistranger   r/   rE   )	r   r   r(   r9   r+   r.   rN   _dfr   r   r   test_empty_field_eof*  s4    
*

z#TestTextReader.test_empty_field_eofc             C   s*   t t dd dddgd}t|ts&td S )N   r+   r.   rN   )	chunksizer   r   )r   r   
isinstancer   r'   )r   r   r   r   r   test_empty_csv_inputT  s    z#TestTextReader.test_empty_csv_inputN)__name__
__module____qualname__rQ   Zfixturer   r   r   r   r!   r)   r4   r5   r7   r:   r@   rC   rF   rV   r[   r^   r_   r`   re   rh   rj   rp   r   r   r   r   r   r   r      s0   			%*r   c             C   s6   x0| j  D ]$\}}tjtj|tj||  q
W d S )N)itemsr/   r0   r1   Zasarray)leftrightkvr   r   r   rS   Z  s    rS   )__doc__r	   r   r   r   Znumpyr1   rQ   Zpandas._libs.parsersZ_libsparsersr
   r   Zpandasr   Zpandas._testingZ_testingr/   Zpandas.io.parsersr   r   r   rS   r   r   r   r   <module>   s   
  H