U
    c:                     @   sV   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	 d dl
mZ G dd dZdS )    N)union_categoricals)CategoricalCategoricalIndexSeriesc                   @   s  e Zd Zejdedededfdddgddd	gdddddd	gfdd
dgddd	gdd
dddd	gfddejdgdejdgddejddejdgfe	
dde	
dde	
ddfe	j
dddde	j
dddde	j
ddddfe	dde	dde	ddfgejdeeegdd Zdd Zdd Zdd Zdd Zd d! Zejd"g d#ggd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBS )CTestUnionCategoricalsza, b, combinedabcZabdZabcabdr               333333?g333333@bacz
2014-01-01z
2014-01-05z
2014-01-06z
2014-01-07z
US/Central)tzboxc                 C   s4   t |t||t|g}t|}t|| d S Nr   r   tmassert_categorical_equal)selfr   r   Zcombinedr   resultexpected r   P/tmp/pip-unpacked-wheel-g7fro6k3/pandas/tests/reshape/test_union_categoricals.pytest_union_categorical   s    z,TestUnionCategoricals.test_union_categoricalc                 C   s\   t dddg}t dddg}t||g}t ddddddgddddddgd}t|| d S )Nxyzr   r   r   
categoriesr   r   r   r   r   ss2r   r   r   r   r   )test_union_categorical_ordered_appearance3   s     z?TestUnionCategoricals.test_union_categorical_ordered_appearancec                 C   sX   t dddgdd}t dddgdd}t||g}t ddddddgdd}t|| d S )Nr   r   r	   Torderedr!   r"   r   r   r   #test_union_categorical_ordered_true=   s
    z9TestUnionCategoricals.test_union_categorical_ordered_truec              	   C   sJ   t dddg}t dddg}d}tjt|d t||g W 5 Q R X d S )Nr   r   r	   r
   r   z$dtype of categories must be the samematch)r   pytestraises	TypeErrorr   )r   r#   r$   msgr   r   r   "test_union_categorical_match_typesD   s
    z8TestUnionCategoricals.test_union_categorical_match_typesc              	   C   s*   d}t jt|d tg  W 5 Q R X d S )NzNo Categoricals to unionr)   )r+   r,   
ValueErrorr   )r   r.   r   r   r   test_union_categorical_emptyL   s    z2TestUnionCategoricals.test_union_categorical_emptyc                 C   s  t tddtjgtddtjgg}tddtjddtjg}t|| t tddgtddtjgg}tddddtjg}t|| tdtdtjg}tjtdtdg}t t|t|g}t|| tdtdtdgd	}t|| t ttj	tjtjgt
d
tdgg}ttjtjdg}t|| t ttjtjgttjtjgg}ttjtjtjtjg}t|| d S )Nr   r	   r
   ABz
2011-01-01z
2011-03-01z
2011-02-01r   ZdtypeX)r   r   npnanr   r   pdZ	TimestampZNaTarrayobject)r   resexpZval1Zval2r   r   r   test_union_categoricals_nanQ   sB    z1TestUnionCategoricals.test_union_categoricals_nanval1c                 C   s,   t tg t|g}t|}t|| d S r   r   )r   r>   r;   r<   r   r   r   test_union_categoricals_empty}   s    z3TestUnionCategoricals.test_union_categoricals_emptyc              	   C   s|   t ddddgddddgd}t dddtjgddddgd}t||g}t dddddddtjgddddgd}t|| d S )Nr   r	   r
   r   r   r   r6   r7   r   r   r   r   c1c2r;   r<   r   r   r   $test_union_categorical_same_category   s
    &z:TestUnionCategoricals.test_union_categorical_same_categoryc                 C   sj   t dddgdddgd}t dddgdddgd}t||g}t ddddddgdddgd}t|| d S )Nr   r   r   r   r!   rB   r   r   r   (test_union_categorical_same_category_str   s
    z>TestUnionCategoricals.test_union_categorical_same_category_strc                 C   sj   t dddgdddgd}t dddgdddgd}t||g}t ddddddgdddgd}t|| d S )Nr   r   r   r   r!   r   rC   rD   r   r   r   r   r   6test_union_categorical_same_categories_different_order   s     zLTestUnionCategoricals.test_union_categorical_same_categories_different_orderc              	   C   s8  t dddgdd}t dddgdd}d}tjt|d t||g W 5 Q R X t||g}t ddddddgdd}t|| t dddtjgdd}t ddgdddgdd	}t||g}t dddtjddgdd}t|| t dddgdd}t dddgdddgdd	}d
}tjt|d t||g W 5 Q R X d S )Nr   r	   r
   Tr&   F$Categorical.ordered must be the samer)   r    r'   >to union ordered Categoricals, all categories must be the same)	r   r+   r,   r-   r   r   r   r6   r7   )r   rC   rD   r.   r;   r<   r   r   r   test_union_categoricals_ordered   s$    z5TestUnionCategoricals.test_union_categoricals_orderedc              	   C   s  t dddgdd}t dddgdd}t||gdd}t ddddddg}t|| d}tjt|d	 t||gdd W 5 Q R X t||gdd}t ddddddg}t|| t||gdd}t ddddddgdddgdd
}t|| t dddtjgdd}t ddgdddgdd
}t||gdd}t dddtjddg}t|| t dddgdd}t dddgdddgdd
}t||gdd}t ddddddg}t|| t||gddd}t ddddddgdddgd}t|| t dddgdd}t dddgdd}t||gdd}t ddddddg}t|| d}tjt|d	 t||gdd W 5 Q R X tjt|d	 t||g W 5 Q R X d S )Nr   r	   r
   Tr&   F)ignore_orderrI   r)   rJ   )rM   sort_categoriesr   r         rK   )	r   r   r   r   r+   r,   r-   r6   r7   )r   rC   rD   r;   r<   r.   r   r   r   r   r   $test_union_categoricals_ignore_order   sJ     z:TestUnionCategoricals.test_union_categoricals_ignore_orderc              	   C   s  t dddg}t dddg}t||gdd}t ddddddgddddddgd	}t|| t ddgdddgd	}t ddgdddgd	}t||gdd}t ddddgdddgd	}t|| t ddgdddgd	}t ddgdddgd	}t||gdd}t ddddgdddgd	}t|| t ddgdddgd	}t ddgdddgd	}t||gdd}t ddddgdddgd	}t|| t dtjg}t tjdg}t||gdd}t dtjtjdgddgd	}t|| t tjg}t tjg}t||gdd}t tjtjg}t|| t g }t g }t||gdd}t g }t|| t ddgdddgdd
}t ddgdddgdd
}d}tjt|d t||gdd W 5 Q R X d S )Nr   r   r   r   r   r   TrN   r   rJ   z9Cannot use sort_categories=True with ordered Categoricalsr)   )	r   r   r   r   r6   r7   r+   r,   r-   r   rC   rD   r   r   r.   r   r   r   test_union_categoricals_sort   sV     z2TestUnionCategoricals.test_union_categoricals_sortc                 C   s`   t dddg}t dddg}t||gdd}t ddddddgddddddgd	}t|| d S )
Nr   r   r   r   r   r   FrR   r   r!   rG   r   r   r   "test_union_categoricals_sort_false!  s     z8TestUnionCategoricals.test_union_categoricals_sort_falsec                 C   sf   t ddgdddgd}t ddgdddgd}t||gdd}t ddddgdddgd}t|| d S Nr   r   r   r   FrR   r!   rG   r   r   r   +test_union_categoricals_sort_false_fastpath+  s
    zATestUnionCategoricals.test_union_categoricals_sort_false_fastpathc                 C   sf   t ddgdddgd}t ddgdddgd}t||gdd}t ddddgdddgd}t|| d S rV   r!   rG   r   r   r   -test_union_categoricals_sort_false_skipresort3  s
    zCTestUnionCategoricals.test_union_categoricals_sort_false_skipresortc                 C   sX   t dtjg}t tjdg}t||gdd}t dtjtjdgddgd}t|| d S )Nr   r   FrR   r   rA   rG   r   r   r   *test_union_categoricals_sort_false_one_nan;  s
    z@TestUnionCategoricals.test_union_categoricals_sort_false_one_nanc                 C   sH   t tjg}t tjg}t||gdd}t tjtjg}t|| d S NFrR   rA   rG   r   r   r   +test_union_categoricals_sort_false_only_nanB  s
    zATestUnionCategoricals.test_union_categoricals_sort_false_only_nanc                 C   s8   t g }t g }t||gdd}t g }t|| d S rZ   r!   rG   r   r   r   (test_union_categoricals_sort_false_emptyI  s
    z>TestUnionCategoricals.test_union_categoricals_sort_false_emptyc                 C   sl   t ddgdddgdd}t ddgdddgdd}t||gdd}t ddddgdddgdd}t|| d S )Nr   r   r   TrJ   FrR   r!   rG   r   r   r   /test_union_categoricals_sort_false_ordered_trueP  s    
  zETestUnionCategoricals.test_union_categoricals_sort_false_ordered_truec              	   C   s   t ddg}tddgdd}t||g}t ddddg}t|| t|}t||g}t|| t|}t||g}t|| d}tjt|d t|dddgg W 5 Q R X d S )Nr   r   r   categoryr4   z-all components to combine must be Categoricalr)   )	r   r   r   r   r   r   r+   r,   r-   rS   r   r   r   test_union_categorical_unwrapY  s    z3TestUnionCategoricals.test_union_categorical_unwrapN)$__name__
__module____qualname__r+   markZparametrizelistr6   r7   r8   Z
date_rangeZperiod_ranger   r   r   r   r%   r(   r/   r1   r=   r@   rE   rF   rH   rL   rQ   rT   rU   rW   rX   rY   r[   r\   r]   r_   r   r   r   r   r      s\     







,

46
	r   )Znumpyr6   r+   Zpandas.core.dtypes.concatr   Zpandasr8   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   <module>   s   