B
    RÎVˆ  ã               @   sL  d dl Z d dlZd dl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
mZ d dlZyeZW n   Y nX eefZG dd„ dejƒZG dd„ dejƒZG dd	„ d	ejƒZG d
d„ deƒZG dd„ dejƒZG dd„ deƒZG dd„ dejƒZG dd„ deƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZ dS )é    N)ÚEncodedFile)ÚBytesIOc               @   sà   e Zd Z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,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6S )7ÚTest_Csvz°
    Test the underlying C csv parser in ways that are not appropriate
    from the high level interface. Further tests of this nature are done
    in TestDialectRegistry.
    c             C   sþ   |   t|¡ |   t|d ¡ | j t||dd | j t||dd | j t||dd |   tj||d¡ | j t||d d | j t||dd | j t||dd | j t||d d | j t||dd | j t||d d	 | j t||tjd
d | j t||tjd d d S )Nr   )Úbad_attr)Ú	delimiterZXXZfooé   )Ú	quotechar)Úlineterminator)ÚquotingÚ )r
   r   )ÚassertRaisesÚpy_compat_excÚcsvÚErrorÚ	QUOTE_ALL)ÚselfÚctorÚarg© r   ú.lib/python3.7/site-packages/unicodecsv/test.pyÚ_test_arg_valid#   s     

zTest_Csv._test_arg_validc             C   s   |   tjg ¡ d S )N)r   r   Úreader)r   r   r   r   Útest_reader_arg_valid5   s    zTest_Csv.test_reader_arg_validc             C   s   |   tjtƒ ¡ d S )N)r   r   Úwriterr   )r   r   r   r   Útest_writer_arg_valid8   s    zTest_Csv.test_writer_arg_validc             G   sÚ   ||Ž }|   |jjd¡ |   |jjd¡ |   |jjd ¡ |   |jjd¡ |   |jjd¡ |   |jjtj	¡ |   |jj
d¡ |   |jjd¡ |  tt|jd¡ |  tt|jdd¡ |  tt|jd¡ |  tt|jdd ¡ d S )	Nú,Tz
ú"Fr   ú:r
   )ÚassertEqualÚdialectr   ÚdoublequoteÚ
escapecharr	   r   r
   r   ÚQUOTE_MINIMALÚskipinitialspaceÚstrictr   r   ÚdelattrÚsetattr)r   r   ÚargsÚobjr   r   r   Ú_test_default_attrs;   s"    

zTest_Csv._test_default_attrsc             C   s   |   tjg ¡ d S )N)r)   r   r   )r   r   r   r   Útest_reader_attrsP   s    zTest_Csv.test_reader_attrsc             C   s   |   tjtƒ ¡ d S )N)r)   r   r   r   )r   r   r   r   Útest_writer_attrsS   s    zTest_Csv.test_writer_attrsc          
   G   sª   t dddddtjddd}|||Ž}|  |jjd¡ |  |jjd¡ |  |jjd¡ |  |jjd¡ |  |jj	d¡ |  |jj
tj¡ |  |jjd¡ |  |jjd¡ d S )Nr   Fú\úÚ*T)r   r    r!   r	   r   r
   r#   r$   )Údictr   Ú
QUOTE_NONEr   r   r   r    r!   r	   r   r
   r#   r$   )r   r   r'   Úkwargsr(   r   r   r   Ú_test_kw_attrsV   s    
zTest_Csv._test_kw_attrsc             C   s   |   tjg ¡ d S )N)r2   r   r   )r   r   r   r   Útest_reader_kw_attrsf   s    zTest_Csv.test_reader_kw_attrsc             C   s   |   tjtƒ ¡ d S )N)r2   r   r   r   )r   r   r   r   Útest_writer_kw_attrsi   s    zTest_Csv.test_writer_kw_attrsc             G   s¦   G dd„ dƒ}||f }||Ž }|   |jjd¡ |   |jjd¡ |   |jjd¡ |   |jjd¡ |   |jjd¡ |   |jjtj	¡ |   |jj
d¡ |   |jjd¡ d S )	Nc               @   s.   e Zd ZdZdZdZdZdZej	Z
dZdZdS )z-Test_Csv._test_dialect_attrs.<locals>.dialectú-Fú^ú$ú#TN)Ú__name__Ú
__module__Ú__qualname__r   r    r!   r	   r   r   r   r
   r#   r$   r   r   r   r   r   n   s   r   r5   Fr6   r7   r8   T)r   r   r   r    r!   r	   r   r
   r   r   r#   r$   )r   r   r'   r   r(   r   r   r   Ú_test_dialect_attrsl   s    	
zTest_Csv._test_dialect_attrsc             C   s   |   tjg ¡ d S )N)r<   r   r   )r   r   r   r   Útest_reader_dialect_attrs‚   s    z"Test_Csv.test_reader_dialect_attrsc             C   s   |   tjtƒ ¡ d S )N)r<   r   r   r   )r   r   r   r   Útest_writer_dialect_attrs…   s    z"Test_Csv.test_writer_dialect_attrsc          	   K   sv   t  ¡ \}}t |d¡}zDtj|f|Ž}| |¡ | d¡ |  | 	¡ ||j
j d¡ ¡ W d | ¡  t |¡ X d S )Nzw+br   zutf-8)ÚtempfileÚmkstempÚosÚfdopenr   r   ÚwriterowÚseekr   Úreadr   r	   ÚencodeÚcloseÚunlink)r   ÚfieldsÚexpectr1   ÚfdÚnameÚfileobjr   r   r   r   Ú_write_testˆ   s    


zTest_Csv._write_testc             C   sº   dd l }t|dƒo|jjdk}|  |r*tntj| jd d¡ |  dd¡ |  d gd¡ | jtj| jd gd tj	d G d	d
„ d
ƒ}|  t
| j|ƒ d¡ G dd„ dƒ}|  t
| j|ƒ gd¡ d S )Nr   Zpypy_version_infoé   r   r   ó    s   "")r
   c               @   s   e Zd Zdd„ Zdd„ ZdS )z.Test_Csv.test_write_arg_valid.<locals>.BadListc             S   s   dS )Né
   r   )r   r   r   r   Ú__len__¡   s    z6Test_Csv.test_write_arg_valid.<locals>.BadList.__len__c             S   s   |dkrt ‚d S )Né   )ÚIOError)r   Úir   r   r   Ú__getitem__¤   s    z:Test_Csv.test_write_arg_valid.<locals>.BadList.__getitem__N)r9   r:   r;   rR   rV   r   r   r   r   ÚBadList    s   rW   c               @   s   e Zd Zdd„ ZdS )z.Test_Csv.test_write_arg_valid.<locals>.BadItemc             S   s   t ‚d S )N)rT   )r   r   r   r   Ú__str__«   s    z6Test_Csv.test_write_arg_valid.<locals>.BadItem.__str__N)r9   r:   r;   rX   r   r   r   r   ÚBadItemª   s   rY   )ÚsysÚhasattrÚversion_infoÚmajorr   Ú	TypeErrorr   r   rN   r0   rT   )r   rZ   Zpypy3rW   rY   r   r   r   Útest_write_arg_valid•   s    zTest_Csv.test_write_arg_validc             C   s.   dd }|   ||gd | d¡gd ¡¡ d S )NÚXiPÃ  ó   ,zutf-8rS   )rN   ÚjoinrF   )r   Z	bigstringr   r   r   Útest_write_bigfield°   s    
zTest_Csv.test_write_bigfieldc             C   s”   |   dddgd¡ | jtj| j dddgdtjd | j dddgdtjd | j dddgdtjd | j dddgdtjd | j d	dgd
tjd d S )NÚar   zp,qs	   a,1,"p,q"s   a,1,p,q)r
   s   "a",1,"p,q"s   "a","1","p,q"za
bs	   "a
b","1")rN   r   r   r   r0   r"   ÚQUOTE_NONNUMERICr   )r   r   r   r   Útest_write_quoting¶   s    




zTest_Csv.test_write_quotingc             C   s"   | j dt d¡dgdtjd d S )Nrd   z1.1zp,qs   "a",1.1,"p,q")r
   )rN   ÚdecimalZDecimalr   re   )r   r   r   r   Útest_write_decimalÅ   s    zTest_Csv.test_write_decimalc             C   s°   | j dddgddd | jtj| j dddgdd d	d
 | j dddgddd	d
 | j dgddtjd | j dgddtjd	d | j dgddtjd | j dddgddtjd d S )Nrd   r   zp,qs	   a,1,"p,q"r,   )r!   zp,"q"s   a,1,"p,\"q\""F)r!   r    r   s   """")r!   r
   s   \")r!   r
   r    s   a,1,p\,q)rN   r   r   r   r"   r0   )r   r   r   r   Útest_write_escapeÉ   s"    





zTest_Csv.test_write_escapec          	   C   s®   G dd„ dƒ}t  |ƒ ¡}|  t|jdgg¡ t ¡ \}}t |d¡}zNt  |¡}|  t	|jd ¡ | ddgddgg¡ | 
d¡ |  | ¡ d	¡ W d | ¡  t |¡ X d S )
Nc               @   s   e Zd Zdd„ ZdS )z+Test_Csv.test_writerows.<locals>.BrokenFilec             S   s   t ‚d S )N)rT   )r   Zbufr   r   r   ÚwriteÞ   s    z1Test_Csv.test_writerows.<locals>.BrokenFile.writeN)r9   r:   r;   rj   r   r   r   r   Ú
BrokenFileÝ   s   rk   rd   zw+bÚbÚcÚdr   s
   a,b
c,d
)r   r   r   rT   Ú	writerowsr?   r@   rA   rB   r^   rD   r   rE   rG   rH   )r   rk   r   rK   rL   rM   r   r   r   Útest_writerowsÜ   s    

zTest_Csv.test_writerowsc             K   s&   t j|f|Ž}t|ƒ}|  ||¡ d S )N)r   r   Úlistr   )r   ÚinputrJ   r1   r   Úresultr   r   r   Ú
_read_testð   s    zTest_Csv._read_testc             C   sj   |   g g ¡ |   dgg g¡ | jtj| j dgd dd | jtj| j dgd dd | j dgdggdd d S )	NrP   s   "ab"cr   )r$   s   ab cÚabcr   )r    )rt   r   r   r   )r   r   r   r   Útest_read_oddinputsõ   s    zTest_Csv.test_read_oddinputsc             C   s–   |   dgddgg¡ |   dgddgg¡ |   dgddgg¡ |   dgddgg¡ |  tj| j dgg ¡ |  tj| j dgg ¡ |  tj| j d	gg ¡ d S )
Ns   a,brd   rl   s   a,b
s   a,b
s   a,bs   a,bc,ds   a,b
c,ds   a,b
c,d)rt   r   r   r   )r   r   r   r   Útest_read_eolÿ   s    zTest_Csv.test_read_eolc             C   s–   | j dgdddggdd | j dgddggdd | j d	gddggdd | j d
gddggdd | j dgddggdd | j dgddggdd d S )Ns   a,\b,crd   rl   rm   r,   )r!   s   a,b\,czb,cs   a,"b\,c"s   a,"b,\c"s	   a,"b,c\""zb,c"s   a,"b,c"\zb,c\)rt   )r   r   r   r   Útest_read_escape  s    zTest_Csv.test_read_escapec             C   s¬   |   dgdddgg¡ | j dgdddddggd dd | j dgdddddggtjdd	 | j d
gdddddggtjd |   dgddgg¡ | jt| j dgg gtjd d S )Ns	   1,",3,",5Ú1z,3,Ú5r   Ú3r,   )r   r!   )r
   r!   s   ,3,"5",7.3, 9r   rO   g333333@é	   )r
   s   "a
b", 7za
bz 7s   abc,3)rt   r   r0   re   r   Ú
ValueError)r   r   r   r   Útest_read_quoting  s    


zTest_Csv.test_read_quotingc             C   s¤   xžt  dddg¡t jdddgdddgdfD ]p}|  |jd¡ t|ƒ |  |jd	¡ t|ƒ |  |jd
¡ t|ƒ |  |jd¡ |  tt|¡ |  |jd¡ q,W d S )Ns   line,1s   line,2s   line,3rd   rl   rm   )Ú
fieldnamesr   r   rS   rO   )r   r   Ú
DictReaderr   Zline_numÚnextr   ÚStopIteration)r   Úrr   r   r   Útest_read_linenum  s    zTest_Csv.test_read_linenumc          	   C   s    t  ¡ \}}t |d¡}znt |¡}|  t|jd ¡ ddgddgg}| |¡ | 	d¡ x*t
t |¡ƒD ]\}}|  ||| ¡ qhW W d | ¡  t |¡ X d S )Nzw+bza
brl   rm   zx
dr   )r?   r@   rA   rB   r   r   r   r^   ro   rD   Ú	enumerater   r   rG   rH   )r   rK   rL   rM   r   ZrowsrU   Úrowr   r   r   Útest_roundtrip_quoteed_newlines,  s    


z(Test_Csv.test_roundtrip_quoteed_newlinesN)r9   r:   r;   Ú__doc__r   r   r   r)   r*   r+   r2   r3   r4   r<   r=   r>   rN   r_   rc   rf   rh   ri   rp   rt   rv   rw   rx   r~   r„   r‡   r   r   r   r   r      s6   
	r   c               @   sD   e Z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 )ÚTestDialectRegistryc             C   sæ   |   ttjd ¡ |   ttj¡ |   tjtjd ¡ |   tjtjd¡ |   ttj¡ |   tjtjd ¡ |   tjtjd¡ |   ttjd ¡ |   ttjd d ¡ |   ttjddd¡ | j ttjdd d | j ttjdd d |   ttjg ¡ d S )NZnonesuchr   )Zbadargument)r
   )r   r^   r   Úlist_dialectsÚget_dialectr   Úunregister_dialectÚregister_dialect)r   r   r   r   Útest_registry_badargs=  s    z)TestDialectRegistry.test_registry_badargsc          	   C   s~   G dd„ dt jƒ}d}t  ¡ |g }| ¡  t  ||¡ z4|  t  |¡jd¡ t  ¡ }| ¡  |  ||¡ W d t  |¡ X d S )Nc               @   s   e Zd ZdZdS )z5TestDialectRegistry.test_registry.<locals>.myexceltsvú	N)r9   r:   r;   r   r   r   r   r   Ú
myexceltsvO  s   r   r   )	r   ÚexcelrŠ   Úsortr   r   r‹   r   rŒ   )r   r   rL   Zexpected_dialectsZgot_dialectsr   r   r   Útest_registryN  s    z!TestDialectRegistry.test_registryc          	   C   s^   d}t j|dd z:|  t  |¡jd¡ |  tt  dg|¡ƒdddgg¡ W d t  |¡ X d S )	NZfedcbaú;)r   r   s   X;Y;Zr`   ÚYÚZ)	r   r   ZassertNotEqualr‹   r   r   rq   r   rŒ   )r   rL   r   r   r   Útest_register_kwargs]  s    &z(TestDialectRegistry.test_register_kwargsc             C   s$   G dd„ dt jƒ}|  t j|¡ d S )Nc               @   s   e Zd ZdZdS )z?TestDialectRegistry.test_incomplete_dialect.<locals>.myexceltsvr   N)r9   r:   r;   r   r   r   r   r   r   g  s   r   )r   ZDialectr   r   )r   r   r   r   r   Útest_incomplete_dialectf  s    z+TestDialectRegistry.test_incomplete_dialectc          	   C   s”   G dd„ dt jƒ}t ¡ \}}t |d¡}zP| d¡ | d¡ t j||ƒ d}|  	t
|ƒddg¡ |  	t
|ƒd	d
g¡ W d | ¡  t |¡ X d S )Nc               @   s   e Zd ZdZejZdZdS )z5TestDialectRegistry.test_space_dialect.<locals>.spaceú r,   N)r9   r:   r;   r   r   r0   r
   r!   r   r   r   r   Úspacel  s   rš   zw+bs   abc def
c1ccccc1 benzene
r   )r   ru   ÚdefZc1ccccc1Zbenzene)r   r‘   r?   r@   rA   rB   rj   rD   r   r   r   rG   rH   )r   rš   rK   rL   rM   Zrdrr   r   r   Útest_space_dialectk  s    

z&TestDialectRegistry.test_space_dialectc          	   C   sj  G dd„ dt jƒ}G dd„ dt jƒ}G dd„ dt jƒ}t  d|¡ zt ¡ \}}t |d¡}z8t  |¡}| dd	d
g¡ | 	d¡ |  
| ¡ d¡ W d | ¡  t |¡ X t ¡ \}}t |d¡}z:t  ||¡}| dd	d
g¡ | 	d¡ |  
| ¡ d¡ W d | ¡  t |¡ X t ¡ \}}t |d¡}z>t j||ƒ d}| dd	d
g¡ | 	d¡ |  
| ¡ d¡ W d | ¡  t |¡ X t ¡ \}}t |d¡}z<t j|dd}| dd	d
g¡ | 	d¡ |  
| ¡ d¡ W d | ¡  t |¡ X t ¡ \}}t |d¡}z>t j||dd}| dd	d
g¡ | 	d¡ |  
| ¡ d¡ W d | ¡  t |¡ X W d t  d¡ X d S )Nc               @   s   e Zd ZdZdS )z5TestDialectRegistry.test_dialect_apply.<locals>.testAr   N)r9   r:   r;   r   r   r   r   r   ÚtestA~  s   r   c               @   s   e Zd ZdZdS )z5TestDialectRegistry.test_dialect_apply.<locals>.testBr   N)r9   r:   r;   r   r   r   r   r   ÚtestB  s   rž   c               @   s   e Zd ZdZdS )z5TestDialectRegistry.test_dialect_apply.<locals>.testCú|N)r9   r:   r;   r   r   r   r   r   ÚtestC„  s   r    zw+br   rS   rO   r   s   1,2,3
s   1	2	3
)r   s   1:2:3
s   1|2|3
r”   )r   r   s   1;2;3
)r   r‘   r   r?   r@   rA   rB   r   rC   rD   r   rE   rG   rH   rŒ   )r   r   rž   r    rK   rL   rM   r   r   r   r   Útest_dialect_apply}  sf    





z&TestDialectRegistry.test_dialect_applyc             C   sT   | j ttjg dd | j ttjg d d | j ttjg dd | j ttjg dd d S )Nr   )r   )r   éÿÿÿÿ)r
   éd   )r   r^   r   r   )r   r   r   r   Útest_bad_dialectÃ  s    z$TestDialectRegistry.test_bad_dialectN)
r9   r:   r;   rŽ   r“   r—   r˜   rœ   r¡   r¤   r   r   r   r   r‰   <  s   	Fr‰   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestCsvBasec          	   C   sn   t  ¡ \}}t |d¡}z<| |¡ | d¡ tj|| jd}t	|ƒ}|  
||¡ W d | ¡  t |¡ X d S )Nzw+br   )r   )r?   r@   rA   rB   rj   rD   r   r   r   rq   r   rG   rH   )r   rr   Úexpected_resultrK   rL   rM   r   rI   r   r   r   ÚreaderAssertEqualÍ  s    

zTestCsvBase.readerAssertEqualc          	   C   sj   t  ¡ \}}t |d¡}z8tj|| jd}| |¡ | d¡ |  	| 
¡ |¡ W d | ¡  t |¡ X d S )Nzw+b)r   r   )r?   r@   rA   rB   r   r   r   ro   rD   r   rE   rG   rH   )r   rr   r¦   rK   rL   rM   r   r   r   r   ÚwriterAssertEqualÚ  s    

zTestCsvBase.writerAssertEqualN)r9   r:   r;   r§   r¨   r   r   r   r   r¥   Ì  s   r¥   c               @   sØ   e Zd Z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,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4S )5ÚTestDialectExcelr‘   c             C   s   |   ddgg¡ d S )Ns   abcru   )r§   )r   r   r   r   Útest_singleê  s    zTestDialectExcel.test_singlec             C   s   |   ddddddgg¡ d S )Ns	   1,2,3,4,5ry   Ú2r{   Ú4rz   )r§   )r   r   r   r   Útest_simpleí  s    zTestDialectExcel.test_simplec             C   s   |   dg ¡ d S )NrP   )r§   )r   r   r   r   Útest_blanklineð  s    zTestDialectExcel.test_blanklinec             C   s   |   dddgg¡ d S )Nra   r   )r§   )r   r   r   r   Útest_empty_fieldsó  s    z"TestDialectExcel.test_empty_fieldsc             C   s   |   ddgg¡ d S )Ns   ""r   )r§   )r   r   r   r   Útest_singlequotedö  s    z"TestDialectExcel.test_singlequotedc             C   s   |   dddgg¡ d S )Ns   "",r   )r§   )r   r   r   r   Útest_singlequoted_left_emptyù  s    z-TestDialectExcel.test_singlequoted_left_emptyc             C   s   |   dddgg¡ d S )Ns   ,""r   )r§   )r   r   r   r   Útest_singlequoted_right_emptyü  s    z.TestDialectExcel.test_singlequoted_right_emptyc             C   s   |   ddgg¡ d S )Ns   """"r   )r§   )r   r   r   r   Útest_single_quoted_quoteÿ  s    z)TestDialectExcel.test_single_quoted_quotec             C   s   |   ddgg¡ d S )Ns   """"""z"")r§   )r   r   r   r   Útest_quoted_quotes  s    z#TestDialectExcel.test_quoted_quotesc             C   s   |   ddgg¡ d S )Ns   a""bza""b)r§   )r   r   r   r   Útest_inline_quote  s    z"TestDialectExcel.test_inline_quotec             C   s   |   ddgg¡ d S )Ns   a"b"cza"b"c)r§   )r   r   r   r   Útest_inline_quotes  s    z#TestDialectExcel.test_inline_quotesc             C   s   |   ddgg¡ d S )Ns   "a"bZab)r§   )r   r   r   r   Útest_quotes_and_more  s    z%TestDialectExcel.test_quotes_and_morec             C   s   |   ddgg¡ d S )Ns   a"bza"b)r§   )r   r   r   r   Útest_lone_quote  s    z TestDialectExcel.test_lone_quotec             C   s   |   ddgg¡ d S )Ns   "a" "b"za "b")r§   )r   r   r   r   Útest_quote_and_quote  s    z%TestDialectExcel.test_quote_and_quotec             C   s   |   ddgg¡ d S )Ns    "a"z "a")r§   )r   r   r   r   Útest_space_and_quote  s    z%TestDialectExcel.test_space_and_quotec          	   C   s   |   dddddddgg¡ d S )Ns#   1,2,3,"I think, therefore I am",5,6ry   r«   r{   zI think, therefore I amrz   Ú6)r§   )r   r   r   r   Útest_quoted  s    zTestDialectExcel.test_quotedc             C   s    d}|   |dddddgg¡ d S )NsJ   1,2,3,"""I see,"" said the blind man","as he picked up his hammer and saw"ry   r«   r{   z"I see," said the blind manz"as he picked up his hammer and saw)r§   )r   Úvaluer   r   r   Útest_quoted_quote!  s
    z"TestDialectExcel.test_quoted_quotec             C   s*   d}|   |dddddgddd	d
gg¡ d S )NsR   1,2,3,"""I see,""
said the blind man","as he picked up his
hammer and saw"
9,8,7,6ry   r«   r{   z"I see,"
said the blind manz"as he picked up his
hammer and sawÚ9Ú8Ú7r»   )r§   )r   rr   r   r   r   Útest_quoted_nl(  s    zTestDialectExcel.test_quoted_nlc             C   s   |   dddddgg¡ d S )Ns	   12,12,1",Z12z1"r   )r§   )r   r   r   r   Útest_dubious_quote4  s    z#TestDialectExcel.test_dubious_quotec             C   s   |   g d¡ d S )NrP   )r¨   )r   r   r   r   Ú	test_null7  s    zTestDialectExcel.test_nullc             C   s   |   dggd¡ d S )Nru   s   abc
)r¨   )r   r   r   r   Útest_single_writer:  s    z#TestDialectExcel.test_single_writerc             C   s   |   dddddggd¡ d S )Nr   rS   ru   rO   é   s   1,2,abc,3,4
)r¨   )r   r   r   r   Útest_simple_writer=  s    z#TestDialectExcel.test_simple_writerc             C   s   |   dddddggd¡ d S )Nr   rS   za"bc"rO   rÆ   s   1,2,"a""bc""",3,4
)r¨   )r   r   r   r   Útest_quotesA  s    zTestDialectExcel.test_quotesc             C   s   |   dggd¡ d S )Nzabc,defs   "abc,def"
)r¨   )r   r   r   r   Útest_quote_fieldsepE  s    
z$TestDialectExcel.test_quote_fieldsepc             C   s   |   dddddggd¡ d S )Nr   rS   za
bcrO   rÆ   s   1,2,"a
bc",3,4
)r¨   )r   r   r   r   Útest_newlinesI  s    zTestDialectExcel.test_newlinesN)r9   r:   r;   r   rª   r­   r®   r¯   r°   r±   r²   r³   r´   rµ   r¶   r·   r¸   r¹   rº   r¼   r¾   rÂ   rÃ   rÄ   rÅ   rÇ   rÈ   rÉ   rÊ   r   r   r   r   r©   ç  s4   r©   c               @   s   e Zd ZejZdZdS )ÚEscapedExcelr,   N)r9   r:   r;   r   r0   r
   r!   r   r   r   r   rË   N  s   rË   c               @   s"   e Zd Zeƒ Zdd„ Zdd„ ZdS )ÚTestEscapedExcelc             C   s   |   dggd¡ d S )Nzabc,defs
   abc\,def
)r¨   )r   r   r   r   Útest_escape_fieldsepV  s    z%TestEscapedExcel.test_escape_fieldsepc             C   s   |   ddgg¡ d S )Ns
   abc\,def
zabc,def)r§   )r   r   r   r   Útest_read_escape_fieldsepY  s    z*TestEscapedExcel.test_read_escape_fieldsepN)r9   r:   r;   rË   r   rÍ   rÎ   r   r   r   r   rÌ   S  s   rÌ   c               @   s   e Zd ZejZdZdS )ÚQuotedEscapedExcelr,   N)r9   r:   r;   r   re   r
   r!   r   r   r   r   rÏ   ]  s   rÏ   c               @   s"   e Zd Zeƒ Zdd„ Zdd„ ZdS )ÚTestQuotedEscapedExcelc             C   s   |   dggd¡ d S )Nzabc,defs   "abc,def"
)r¨   )r   r   r   r   Útest_write_escape_fieldsepe  s    z1TestQuotedEscapedExcel.test_write_escape_fieldsepc             C   s   |   ddgg¡ d S )Ns   "abc\,def"
zabc,def)r§   )r   r   r   r   rÎ   h  s    z0TestQuotedEscapedExcel.test_read_escape_fieldsepN)r9   r:   r;   rÏ   r   rÑ   rÎ   r   r   r   r   rÐ   b  s   rÐ   c               @   s„   e Z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S ) ÚTestDictFieldsc          	   C   sœ   t  ¡ \}}t|dƒ}zltj|dddgd}| ¡  | d¡ |  | ¡ d¡ | 	dd	d
œ¡ | d¡ | ¡  |  | 
¡ d¡ W d | ¡  t |¡ X d S )Nzw+bÚf1Úf2Úf3)r   r   s
   f1,f2,f3
rQ   ru   )rÓ   rÕ   s	   10,,abc
)r?   r@   Úopenr   Ú
DictWriterÚwriteheaderrD   r   ÚreadlinerC   rE   rG   rA   rH   )r   rK   rL   rM   r   r   r   r   Útest_write_simple_dicto  s    


z%TestDictFields.test_write_simple_dictc          	   C   sn   t  ¡ \}}t|dƒ}z>tj|ddgd}| ¡  | d¡ |  | ¡  	d¡d¡ W d | 
¡  t |¡ X d S )Nzw+bõ   Ã±õ   Ã¶)r   r   zutf-8u   Ã±,Ã¶
)r?   r@   rÖ   r   r×   rØ   rD   r   rÙ   ÚdecoderG   rA   rH   )r   rK   rL   rM   r   r   r   r   Útest_write_unicode_header_dict  s    

z-TestDictFields.test_write_unicode_header_dictc             C   s   t ƒ }|  ttj|¡ d S )N)r   r   r^   r   r×   )r   rM   r   r   r   Útest_write_no_fields‹  s    z#TestDictFields.test_write_no_fieldsc          	   C   sv   t  ¡ \}}t |d¡}zD| d¡ | d¡ tj|dddgd}|  t	|ƒdd	d
dœ¡ W d | 
¡  t |¡ X d S )Nzw+bs	   1,2,abc
r   rÓ   rÔ   rÕ   )r   ry   r«   ru   )rÓ   rÔ   rÕ   )r?   r@   rA   rB   rj   rD   r   r€   r   r   rG   rH   )r   rK   rL   rM   r   r   r   r   Útest_read_dict_fields  s    


z$TestDictFields.test_read_dict_fieldsc          	   C   s€   t  ¡ \}}t |d¡}zN| d¡ | d¡ t |¡}|  |j	dddg¡ |  t
|ƒddd	d
œ¡ W d | ¡  t |¡ X d S )Nzw+bs   f1,f2,f3
1,2,abc
r   rÓ   rÔ   rÕ   ry   r«   ru   )rÓ   rÔ   rÕ   )r?   r@   rA   rB   rj   rD   r   r€   r   r   r   rG   rH   )r   rK   rL   rM   r   r   r   r   Útest_read_dict_no_fieldnames  s    



z+TestDictFields.test_read_dict_no_fieldnamesc          	   C   sŽ   t  ¡ \}}t |d¡}z\| d¡ | d¡ tj|tt 	|¡ƒd}|  
|jdddg¡ |  
t|ƒdd	d
dœ¡ W d | ¡  t |¡ X d S )Nzw+bs   f1,f2,f3
1,2,abc
r   )r   rÓ   rÔ   rÕ   ry   r«   ru   )rÓ   rÔ   rÕ   )r?   r@   rA   rB   rj   rD   r   r€   r   r   r   r   rG   rH   )r   rK   rL   Úfr   r   r   r   Ú#test_read_dict_fieldnames_from_file®  s    


z2TestDictFields.test_read_dict_fieldnames_from_filec          	   C   s¤   dd l }t ¡ \}}t |d¡}zj| d¡ | d¡ t |¡}t	|ƒ}x>| 
|g|¡D ],}|  |jdddg¡ |  |ddd	d
œ¡ qXW W d | ¡  t |¡ X d S )Nr   zw+bs   f1,f2,f3
1,2,abc
rÓ   rÔ   rÕ   ry   r«   ru   )rÓ   rÔ   rÕ   )Ú	itertoolsr?   r@   rA   rB   rj   rD   r   r€   r   Úchainr   r   rG   rH   )r   rä   rK   rL   râ   r   Úfirstr†   r   r   r   Útest_read_dict_fieldnames_chain½  s    


z.TestDictFields.test_read_dict_fieldnames_chainc          	   C   s|   t  ¡ \}}t |d¡}zJ| d¡ | d¡ tj|ddgd}|  t	|ƒddd	d
ddgdœ¡ W d | 
¡  t |¡ X d S )Nzw+bs   1,2,abc,4,5,6
r   rÓ   rÔ   )r   ry   r«   ru   r¬   rz   r»   )rÓ   rÔ   N)r?   r@   rA   rB   rj   rD   r   r€   r   r   rG   rH   )r   rK   rL   rM   r   r   r   r   Útest_read_longÍ  s    

zTestDictFields.test_read_longc          	   C   s~   t  ¡ \}}t |d¡}zL| d¡ | d¡ tj|ddgdd}|  t	|ƒdd	d
dddgdœ¡ W d | 
¡  t |¡ X d S )Nzw+bs   1,2,abc,4,5,6
r   rÓ   rÔ   Ú_rest)r   Úrestkeyry   r«   ru   r¬   rz   r»   )rÓ   rÔ   ré   )r?   r@   rA   rB   rj   rD   r   r€   r   r   rG   rH   )r   rK   rL   rM   r   r   r   r   Útest_read_long_with_restÛ  s    

z'TestDictFields.test_read_long_with_restc          	   C   sŠ   t  ¡ \}}t |d¡}zX| d¡ | d¡ tj|dd}|  |j	ddg¡ |  t
|ƒdd	d
dddgdœ¡ W d | ¡  t |¡ X d S )Nzw+bs   f1,f2
1,2,abc,4,5,6
r   ré   )rê   rÓ   rÔ   ry   r«   ru   r¬   rz   r»   )rÓ   rÔ   ré   )r?   r@   rA   rB   rj   rD   r   r€   r   r   r   rG   rH   )r   rK   rL   rM   r   r   r   r   Ú&test_read_long_with_rest_no_fieldnamesé  s    

z5TestDictFields.test_read_long_with_rest_no_fieldnamesc          
   C   sš   t  ¡ \}}t |d¡}zh| d¡ | d¡ tj|d ¡ dd}|  	t
|ƒddd	d
dddœ¡ |  	t
|ƒddd	ddddœ¡ W d | ¡  t |¡ X d S )Nzw+bs   1,2,abc,4,5,6
1,2,abc
r   z1 2 3 4 5 6ZDEFAULT)r   Zrestvalry   r«   ru   r¬   rz   r»   )ry   r«   r{   r¬   rz   r»   )r?   r@   rA   rB   rj   rD   r   r€   Úsplitr   r   rG   rH   )r   rK   rL   rM   r   r   r   r   Útest_read_short÷  s    

zTestDictFields.test_read_shortc          	   C   s<   dddg}t j|d ¡ d}|  t|ƒdddd	d
dœ¡ d S )Ns   2147483648,43.0e12,17,abc,def
s   147483648,43.0e2,17,abc,def
s   47483648,43.0,170,abc,def
zi1 float i2 s1 s2)r   Z
2147483648z43.0e12Z17ru   r›   )Zi1ÚfloatZi2Ús1Ús2)r   r€   rí   r   r   )r   Zsampler   r   r   r   Útest_read_multi	  s    zTestDictFields.test_read_multic          
   C   sX   t jdddgd ¡ d}|  t|ƒddddd	d
dœ¡ |  t|ƒddddd	d
dœ¡ d S )Ns   1,2,abc,4,5,6
s   
z1 2 3 4 5 6)r   ry   r«   ru   r¬   rz   r»   )ry   r«   r{   r¬   rz   r»   )r   r€   rí   r   r   )r   r   r   r   r   Útest_read_with_blanks  s    z$TestDictFields.test_read_with_blanksc          
   C   s8   t jdgd ¡ dd}|  t|ƒddddd	d
dœ¡ d S )Ns   1;2;abc;4;5;6
z1 2 3 4 5 6r”   )r   r   ry   r«   ru   r¬   rz   r»   )ry   r«   r{   r¬   rz   r»   )r   r€   rí   r   r   )r   r   r   r   r   Útest_read_semi_sep!  s
    z!TestDictFields.test_read_semi_sepc             C   s   t  tƒ ¡ d S )N)r   r€   r   )r   r   r   r   Útest_empty_file(  s    zTestDictFields.test_empty_fileN)r9   r:   r;   rÚ   rÞ   rß   rà   rá   rã   rç   rè   rë   rì   rî   rò   ró   rô   rõ   r   r   r   r   rÒ   l  s   	rÒ   c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestArrayWritesc          	   C   sž   dd„ t dƒD ƒ}t d|¡}t ¡ \}}t |d¡}zNtj|dd}| |¡ d 	d	d„ |D ƒ¡d
 }| 
d¡ |  | ¡ |¡ W d | ¡  t |¡ X d S )Nc             S   s   g | ]}d | ‘qS )é   r   )Ú.0rU   r   r   r   ú
<listcomp>-  s    z2TestArrayWrites.test_int_write.<locals>.<listcomp>r÷   rU   zw+br‘   )r   ra   c             S   s   g | ]}t |ƒ d ¡‘qS )zutf-8)ÚstrrF   )rø   rU   r   r   r   rù   5  s    s   
r   )ÚrangeÚarrayr?   r@   rA   rB   r   r   rC   rb   rD   r   rE   rG   rH   )r   Úcontentsrd   rK   rL   rM   r   Úexpectedr   r   r   Útest_int_write,  s    

zTestArrayWrites.test_int_writec          	      s´   dd„ t dƒD ƒ}t d|¡}t ¡ \}}t |d¡}zdtj|dd}| |¡ t	‰ t
jdkrbt‰ d	 ‡ fd
d„|D ƒ¡d }| d¡ |  | ¡ |¡ W d | ¡  t |¡ X d S )Nc             S   s   g | ]}d | d ‘qS )r÷   gš™™™™™¹?r   )rø   rU   r   r   r   rù   =  s    z5TestArrayWrites.test_double_write.<locals>.<listcomp>r÷   rn   zw+br‘   )r   )rS   é   rO   ra   c                s   g | ]}ˆ |ƒ  d ¡‘qS )zutf-8)rF   )rø   rU   )Ú
float_reprr   r   rù   G  s    s   
r   )rû   rü   r?   r@   rA   rB   r   r   rC   rú   rZ   r\   Úreprrb   rD   r   rE   rG   rH   )r   rý   rd   rK   rL   rM   r   rþ   r   )r  r   Útest_double_write<  s    


z!TestArrayWrites.test_double_writec          	      s´   dd„ t dƒD ƒ}t d|¡}t ¡ \}}t |d¡}zdtj|dd}| |¡ t	‰ t
jdkrbt‰ d	 ‡ fd
d„|D ƒ¡d }| d¡ |  | ¡ |¡ W d | ¡  t |¡ X d S )Nc             S   s   g | ]}d | d ‘qS )r÷   gš™™™™™¹?r   )rø   rU   r   r   r   rù   O  s    z4TestArrayWrites.test_float_write.<locals>.<listcomp>r÷   râ   zw+br‘   )r   )rS   r   rO   ra   c                s   g | ]}ˆ |ƒ  d ¡‘qS )zutf-8)rF   )rø   rU   )r  r   r   rù   Y  s    s   
r   )rû   rü   r?   r@   rA   rB   r   r   rC   rú   rZ   r\   r  rb   rD   r   rE   rG   rH   )r   rý   rd   rK   rL   rM   r   rþ   r   )r  r   Útest_float_writeN  s    


z TestArrayWrites.test_float_writec          	   C   s‚   t j}t ¡ \}}t |d¡}zJtj|dd}| |¡ d 	|¡ 
d¡d }| d¡ |  | ¡ |¡ W d | ¡  t |¡ X d S )Nzw+br‘   )r   r   zutf-8s   
r   )ÚstringZascii_lettersr?   r@   rA   rB   r   r   rC   rb   rF   rD   r   rE   rG   rH   )r   rd   rK   rL   rM   r   rþ   r   r   r   Útest_char_write`  s    

zTestArrayWrites.test_char_writeN)r9   r:   r;   rÿ   r  r  r  r   r   r   r   rö   +  s   rö   c               @   s   e Zd Zdd„ ZdS )ÚTestUnicodec             C   sB   t td d¡ƒdd}tj|dd}|  t|ƒddddgg¡ d S )	NuI   Martin von LÃ¶wis,Marc AndrÃ© Lemburg,Guido van Rossum,FranÃ§ois Pinard
z
iso-8859-1)Údata_encoding)Úencodingu   Martin von LÃ¶wisu   Marc AndrÃ© LemburgzGuido van Rossumu   FranÃ§ois Pinard)r   r   rF   r   r   r   rq   )r   râ   r   r   r   r   Útest_unicode_readp  s    zTestUnicode.test_unicode_readN)r9   r:   r;   r
  r   r   r   r   r  o  s   r  c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestUnicodeErrorsc             C   s<   t ƒ }tj|ddd}| dtdƒg¡ |  | ¡ d¡ d S )NÚcp1252Úxmlcharrefreplace)r	  ÚerrorsZhelloi+
  s   hello,&#2603;
)r   r   r   rC   Úchrr   Úgetvalue)r   rK   r   r   r   r   Útest_encode_error~  s    z#TestUnicodeErrors.test_encode_errorc             C   s@   t ƒ }tj|dgddd}| dtdƒi¡ |  | ¡ d¡ d S )NZcol1r  r  )r	  r  i,
  s	   &#2604;
)r   r   r×   rC   r  r   r  )r   rK   Zdwr   r   r   Útest_encode_error_dictwriter„  s
    

z.TestUnicodeErrors.test_encode_error_dictwriterc             C   sB   t td d¡ƒdd}tj|ddd}|  t|ƒd d d¡ d	S )
zAMake sure the specified error-handling mode is obeyed on readers.u
   LÃ¶wis,2,3z
iso-8859-1)r  ÚasciiÚignore)r	  r  r   ÚLwisN)r   r   rF   r   r   r   rq   )r   Úfiler   r   r   r   Útest_decode_error‹  s    z#TestUnicodeErrors.test_decode_errorc             C   sB   t td d¡ƒdd}tj|ddd}|  t|ƒd d d	¡ d
S )z;Make sure the error-handling mode is obeyed on DictReaders.u   name,height,weight
LÃ¶wis,2,3z
iso-8859-1)r  r  r  )r	  r  r   rL   r  N)r   r   rF   r   r€   r   rq   )r   r  r   r   r   r   Útest_decode_error_dictreader’  s    z.TestUnicodeErrors.test_decode_error_dictreaderN)r9   r:   r;   r  r  r  r  r   r   r   r   r  }  s   r  )!rü   rg   rA   r  rZ   r?   Z	unittest2ZunittestÚcodecsr   Úior   Z
unicodecsvr   Zunichrr  r^   ÚAttributeErrorr   ZTestCaser   r‰   r¥   r©   r‘   rË   rÌ   rÏ   rÐ   rÒ   rö   r  r  r   r   r   r   Ú<module>   s<     ! g

 @D