U
    fª/e  ã                   @   sf   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m	Z	m
Z
mZmZ d dlmZ G dd„ dƒZdS )é    N)ÚCategoricalDtype)ÚCategoricalÚ	DataFrameÚIndexÚSeriesÚisnac                   @   sæ  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zej	 
ddddœdfi dfddidfdedddddgƒidfg¡dd„ ƒZej	 
dddg¡dd „ ƒZd!d"„ Zej	 
d#dddge dddg¡fddejge dddg¡fddejge dddg¡fddejge dddg¡fg¡d$d%„ ƒZej	 
d#dddge dddg¡fddejge dddg¡fddejge dddg¡fddejge dddg¡fg¡d&d'„ ƒZej	 
d(dd)d*gejdd)gdd)d*gfdddgejddgdddgfg¡d+d,„ ƒZd-S ).ÚTestCategoricalMissingc                 C   s8   t  dddg¡}tddt jgƒ}| ¡ }t ||¡ d S )NFTÚaÚb)ÚnpÚarrayr   Únanr   ÚtmÚassert_numpy_array_equal)ÚselfÚexpÚcatÚres© r   úP/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/arrays/categorical/test_missing.pyÚ	test_isna   s    z TestCategoricalMissing.test_isnac                 C   sX   t tdƒƒ}tj ddd¡}d|d d d…< t||dd}t|ƒ t t	|ƒ|dk¡ d S )Né
   r   é   éÿÿÿÿé   T)Zfastpath)
ÚlistÚranger   ÚrandomÚrandintr   Úreprr   r   r   )r   Ú
categoriesÚlabelsr   r   r   r   Útest_na_flags_int_categories   s    z3TestCategoricalMissing.test_na_flags_int_categoriesc                 C   sÚ   t ddtjdgƒ}t |jtddgƒ¡ t |jtj	ddddgtj
d¡ tj|d< t |jtddgƒ¡ t |jtj	ddddgtj
d¡ t ddtjdgƒ}t |jtddgƒ¡ t |jtj	ddddgtj
d¡ d S )Nr	   r
   r   é   r   ©Údtype)r   r   r   r   Zassert_index_equalr    r   r   Ú_codesr   Úint8)r   Úcr   r   r   Útest_nan_handling'   s    "
"z(TestCategoricalMissing.test_nan_handlingc                 C   sD   t ddtjgƒ}| tddgƒ¡}t |jtjdddgdd¡ d S )Nr	   r
   r(   r   r   r'   r$   )	r   r   r   Z
_set_dtyper   r   r   Úcodesr   )r   r(   Úresultr   r   r   Útest_set_dtype_nans7   s    z*TestCategoricalMissing.test_set_dtype_nansc                 C   sB   t dddgƒ}tj|d< t dtjdgdddgd}t ||¡ d S )Nr#   é   é   )r    )r   r   r   r   Úassert_categorical_equal)r   r   r   r   r   r   Útest_set_item_nan<   s    
z(TestCategoricalMissing.test_set_item_nanzfillna_kwargs, msgr#   Zffill)ÚvalueÚmethodz)Cannot specify both 'value' and 'method'.z(Must specify a fill 'value' or 'method'.r2   Úbadz%Invalid fill method. Expecting .* badr1   r-   r.   é   r	   ú3Cannot setitem on a Categorical with a new categoryc              	   C   s<   t dddd d gƒ}tjt|d |jf |Ž W 5 Q R X d S )Nr#   r-   r.   ©Úmatch)r   ÚpytestÚraisesÚ
ValueErrorÚfillna)r   Zfillna_kwargsÚmsgr   r   r   r   Útest_fillna_raisesC   s    z)TestCategoricalMissing.test_fillna_raisesÚnamedTFc              	   C   sÐ   |rt  dd¡}ndd„ }ttj|ddƒ|ddƒd gtdƒ}| |ddƒ¡}t|ddƒ|ddƒ|ddƒgƒ}t ||¡ ttj|ddƒ|ddƒd gtdƒ}d}t	j
t|d	 | |ddƒ¡ W 5 Q R X d S )
NÚPointzx yc                  W   s   | S )Nr   )Úargsr   r   r   Ú<lambda>`   ó    zFTestCategoricalMissing.test_fillna_iterable_category.<locals>.<lambda>r   r#   r$   r5   r6   )ÚcollectionsÚ
namedtupler   r   r   Úobjectr;   r   r/   r8   r9   r:   )r   r>   r?   r   r+   Úexpectedr<   r   r   r   Útest_fillna_iterable_categoryZ   s    $ $z4TestCategoricalMissing.test_fillna_iterable_categoryc                 C   s˜   t dddd d gƒ}| d¡}| |¡}t ||¡ t|d ƒsBt‚t dddddg¡}| |¡}t dddddg|jd}t ||¡ t|d ƒs”t‚d S )NÚAÚBÚCr   r$   )	r   r;   r   r/   r   ÚAssertionErrorr   r   r%   )r   r   Úotherr+   rF   r   r   r   Útest_fillna_arrayn   s    


z(TestCategoricalMissing.test_fillna_arrayzvalues, expectedc              	   C   sx   t  dd¡b t|ƒ}| ¡ }t ||¡ t|ƒ ¡ }t|ƒ}t ||¡ t|ƒ ¡ }t|ƒ}t 	||¡ W 5 Q R X d S ©Nzmode.use_inf_as_naT)
ÚpdÚoption_contextr   r   r   r   r   Úassert_series_equalr   Úassert_frame_equal©r   ÚvaluesrF   r   r+   r   r   r   Útest_use_inf_as_na}   s    z)TestCategoricalMissing.test_use_inf_as_nac              	   C   sx   t |ƒ}t dd¡Z t|ƒ}t ||¡ tt|ƒƒ}t|ƒ}t ||¡ tt|ƒƒ}t|ƒ}t 	||¡ W 5 Q R X d S rN   )
r   rO   rP   r   r   r   r   rQ   r   rR   rS   r   r   r   Ú"test_use_inf_as_na_outside_context•   s    z9TestCategoricalMissing.test_use_inf_as_na_outside_contextza1, a2, categoriesr
   r(   c                 C   st   t |ƒ}t||dt||dk}t|ƒt|ƒk}t ||¡ t||dt||dk}t|ƒt|ƒk}t ||¡ d S )Nr$   )r   r   r   rQ   )r   Za1Za2r    Zcat_typer+   rF   r   r   r   Ú%test_compare_categorical_with_missing¯   s    	z<TestCategoricalMissing.test_compare_categorical_with_missingN)Ú__name__Ú
__module__Ú__qualname__r   r"   r)   r,   r0   r8   ÚmarkZparametrizer   r=   rG   rM   r   r   r   ÚinfrO   ZNArU   rV   rW   r   r   r   r   r      s\   þ
þùþ

üþ	
üþ	
þþr   )rC   Znumpyr   r8   Zpandas.core.dtypes.dtypesr   ZpandasrO   r   r   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   Ú<module>   s   