U
    O8c5                     @   s   d dl Z d dlmZ d dlZd dlmZmZmZm	Z	 d dl
mZmZmZmZmZmZ G dd dZG dd dZd	d
 ZG dd dZG dd dZdS )    N)date)assert_assert_equalassert_allcloseassert_raises)LineSplitterNameValidatorStringConverterhas_nested_fields
easy_dtypeflatten_dtypec                   @   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S )TestLineSplitterzTests the LineSplitter class.c                 C   sF   d}t  |}t|dddddg t d|}t|dddddg dS )	zTest LineSplitter w/o delimiter 1 2 3 4  5 # test12345 Nr   r   selfstrgtest r   A/tmp/pip-unpacked-wheel-fd_gsd75/numpy/lib/tests/test__iotools.pytest_no_delimiter   s
    
z"TestLineSplitter.test_no_delimiterc                 C   sD   d}t d|}t|ddddddg t d	|}t|d
dg dS )zTest space delimiterr    r   r   r   r   r   r   z  z1 2 3 4Nr   r   r   r   r   test_space_delimiter   s
    z%TestLineSplitter.test_space_delimiterc                 C   sH   d}t d|}t|dddddg d}t d|}t|d	d
dg dS )zTest tab delimiterz 1	 2	 3	 4	 5  6	r   r   r   r   5  6z 1  2	 3  4	 5  6z1  23  4Nr   r   r   r   r   test_tab_delimiter!   s    z#TestLineSplitter.test_tab_delimiterc                 C   sz   d}t d|}t|ddddddg d	}t d|}t|ddddddg d
}t ddd|}t|ddddddg dS )zTest LineSplitter on delimiterz
1,2,3,4,,5,r   r   r   r   r   r   z 1,2,3,4,,5 # tests    1,2,3,4,,5 % test   ,   %)	delimitercommentsNr   r   r   r   r   test_other_delimiter*   s    z%TestLineSplitter.test_other_delimiterc              	   C   sd   d}t d|}t|dddddddg d	}t d
|}t|dg d	}t d|}t|dg dS )z'Test LineSplitter w/ fixed-width fieldsz  1  2  3  4     5   # test   r   r   r   r   r   r     1     3  4  5  6# test   z1     3  4  5  6   Nr   r   r   r   r   test_constant_fixed_width9   s    z*TestLineSplitter.test_constant_fixed_widthc                 C   sF   d}t d|}t|ddddg d}t d|}t|ddd	g d S )
Nr*   )r)      r.   r)   r   r   z4  56)r.   r.   	   r!   r    r   r   r   r   r   test_variable_fixed_widthG   s    z*TestLineSplitter.test_variable_fixed_widthN)
__name__
__module____qualname____doc__r   r   r"   r(   r-   r1   r   r   r   r   r      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 )TestNameValidatorc                 C   s   ddddg}t  |}t|ddddg t dd|}t|dddd	g t d
d|}t|dddd	g t dd|}t|ddddg ttt dd dS )zTest case sensitivityAabcF)Zcase_sensitiveZA_1BCupperlowerZa_1ZfoobarN)r   validater   r   
ValueError)r   namesr   r   r   r   test_case_sensitivityU   s    z'TestNameValidator.test_case_sensitivityc                 C   s<   ddddg}t dddgd}||}t|dddd	g d
S )zTest excludelistdatesdataz
Other Datamask)ZexcludelistZdates_Zdata_Z
Other_DataZmask_N)r   r?   r   )r   rA   	validatorr   r   r   r   test_excludelistd   s    
z"TestNameValidator.test_excludelistc                 C   sj   d}t  }t||dddg d}t||dddg d}t||dddg d}t||d	dd
g dS )zTest validate missing namesr8   r9   r:   r8   r9   r:   )r   r9   r:   f0)r8   r9   r   )r   rI   r   f1f2Nr   r   r   namelistrF   r   r   r   test_missing_namesk   s    z$TestNameValidator.test_missing_namesc                 C   s>   d}t  }t||ddd t||ddddd	d
ddg dS )zTest validate nb namesrH      nbfields)r8      zg%i)rR   
defaultfmtr8   r9   r:   Zg0Zg1NrL   rM   r   r   r   test_validate_nb_namesw   s    z(TestNameValidator.test_validate_nb_namesc                 C   s6   d}t  }t||dk t||dddddg dS )zTest validate no namesNr)   rQ   rI   rJ   rK   )r   r   r   rM   r   r   r   test_validate_wo_names   s    z(TestNameValidator.test_validate_wo_namesN)r2   r3   r4   rB   rG   rO   rU   rV   r   r   r   r   r6   S   s
   r6   c                 C   s   t t| dd d  S )Nz%Y-%m-%dr)   )r   timestrptime)sr   r   r   _bytes_to_date   s    rZ   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S )TestStringConverterzTest StringConverterc                 C   s&   t td}t|jd t|jd dS )z"Test creation of a StringConverteriayrP   N)r	   intr   _statusdefaultr   	converterr   r   r   test_creation   s    
z!TestStringConverter.test_creationc                 C   s  t  }t|jd t|dd t|jd ddlm  m} t||j	j
||jj
k }t|dd t|jd|  t|dd t|jd	|  t|d
td
 t|jd|  dD ]8}||}tt|tk t|d t|jd|  qdS )zTests the upgrade method.r   0rP   NZ17179869184l        z0.g           Z0jr)   )r8      ar8      )r	   r   r]   upgradeZnumpy.core.numericcorenumericr\   dtypeint_itemsizeint64r   complexr   typestr)r   r`   ZnxZstatus_offsetrY   resr   r   r   test_upgrade   s"     

z TestStringConverter.test_upgradec                 C   sx   t dd}|d t|dd t|d|j t|d|j t|d|j z|d W n tk
rr   Y nX d	S )
z Tests the use of missing values.)missingmissed)missing_valuesrb   r   r   rr   rs   ZmissN)r	   rf   r   r^   r@   r_   r   r   r   test_missing   s    

z TestStringConverter.test_missingc                 C   s   t }tjdd }zxt|tddd t|tddd}|d}t|tddd |d}t|tddd |d}t|tddd W 5 |t_X dS )	zTests updatemapperNi  rP   z
2001-01-01i  z
2009-01-01i  r   )rZ   r	   _mapperZupgrade_mapperr   r   )r   Z
dateparserZ_original_mapperconvertr   r   r   r   test_upgrademapper   s    z&TestStringConverter.test_upgrademapperc                 C   s4   t jdd }t t}t|j| tt|d dS )zAMake sure that string-to-object functions are properly recognizedNr^   )r	   rv   rZ   r   r   hasattr)r   Z
old_mapperconvr   r   r   test_string_to_object   s    z)TestStringConverter.test_string_to_objectc                 C   sp   t dddd}|d t|jd t|jtt t dddd}|d t|jd t|jtt dS )z+Make sure we don't lose an explicit defaultNr   i)rt   r^   z
3.14159265r   )r	   rf   r   r^   rn   npri   floatr_   r   r   r   test_keep_default   s    
  
z%TestStringConverter.test_keep_defaultc                 C   s   t tddd}t|jd dS )z'Check that we don't lose a default of 0r   N/Ar^   rt   N)r	   r\   r   r^   r_   r   r   r   test_keep_default_zero   s    z*TestStringConverter.test_keep_default_zeroc                 C   s"   t tddd}t|jddh dS )z*Check that we're not losing missing valuesr   r   r   r   N)r	   r\   r   rt   r_   r   r   r   test_keep_missing_values   s     z,TestStringConverter.test_keep_missing_valuesc                 C   s:   t tjdd}d}t||dk d}t||dk dS )z/Check that int64 integer types can be specifiedr   r^   z-9223372036854775807l Z9223372036854775807l    N)r	   r|   rl   r   r   r`   valr   r   r   test_int64_dtype   s
    z$TestStringConverter.test_int64_dtypec                 C   s&   t tjdd}d}t||dk dS )z0Check that uint64 integer types can be specifiedr   r   Z9223372043271415339l   +&|    N)r	   r|   Zuint64r   r   r   r   r   test_uint64_dtype  s    z%TestStringConverter.test_uint64_dtypeN)r2   r3   r4   r5   ra   rq   ru   rx   r{   r~   r   r   r   r   r   r   r   r   r[      s   %r[   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestMiscFunctionsc                 C   sh   t t}tt|d t ddtfg}tt|d t dtfddtfdgfg}tt|d dS )	zTest has_nested_dtypeF)r7   z|S3r;   r7   ZBA)BB|S1TN)r|   ri   r}   r   r
   r\   r   Zndtyper   r   r   test_has_nested_dtype  s    
z'TestMiscFunctions.test_has_nested_dtypec                 C   s2  t }tt|tt  d}tt|tddg tt|ddtddg d}tt|dd	td
dg d}tt|dd	td
dg d}tt|dd	tddg tt|dddtd
dg dtfdt fg}tt|tdtfdt fg tt|dd	tdtfdt fg tt|dd	tdtfdt fg tt|dd	tdtfdt fg tt t f}tt|tdtfdt fdt fg tt t f}tt|dd	tdtfdt fdt fg tt }tt|dd	tdd dD  tt }tt|dddgddtdd d D  d!S )"zTest ndtype on dtypeszi4, f8)rI   i4)rJ   f8z
field_%03i)rT   )Z	field_000r   )Z	field_001r   za, b)rA   )r8   r   r9   r   za, b, cz, br8   zf%02i)rA   rT   )f00r   r7   r;   za,br9   rI   za,b,crJ   rK   r:   c                 S   s   g | ]}|t fqS r   r}   .0_r   r   r   
<listcomp>G  s     z5TestMiscFunctions.test_easy_dtype.<locals>.<listcomp>rH   r   c                 S   s   g | ]}|t fqS r   r   r   r   r   r   r   L  s     )r   Zf01Zf02N)r}   r   r   r|   ri   r\   r   r   r   r   test_easy_dtype  sh     



z!TestMiscFunctions.test_easy_dtypec                 C   s   t ddg}t|}t|ttg t dddgfdtfg}t|}t|t dt dtg t dtd	ffdtd
ffg}t|}t|ttg t|d}t|tgd	 tgd
   t ddg}t|}t|ttg dS )zTesting flatten_dtype)r8   r   r   r8   )Zaar   )ab|S2r9   r   r   rc   r)   T))r8   r7   r   ))r9   r;   r   N)r|   ri   r   r   r}   r\   )r   dtZdt_flatr   r   r   test_flatten_dtypeN  s    
z$TestMiscFunctions.test_flatten_dtypeN)r2   r3   r4   r   r   r   r   r   r   r   r   
  s   	9r   )rW   datetimer   Znumpyr|   Znumpy.testingr   r   r   r   Znumpy.lib._iotoolsr   r   r	   r
   r   r   r   r6   rZ   r[   r   r   r   r   r   <module>   s    E6}