U
    f/e&!                     @   sX   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mZ G dd deZdS )    N)BooleanArray)BaseOpsUtilc                   @   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gdd Zdd Zej	
dejdddgfddddgfeddddgfddddgfeddddgfgdd Zdd Zej	
dejdddgfddddgfddddgfeddddgfeddddgfgdd Zdd Zej	
dejdddgfddddgfeddddgfeddddgfgdd Zej	
dddejdddgd  gd!d" ZdS )#TestLogicalOpsc                 C   sV   t jddd gdd}t||}t|d|td t|d|td d S NTFbooleanZdtype)pdarraygetattrtmassert_extension_array_equalnpbool_)selfall_logical_operatorsaop r   L/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/arrays/boolean/test_logical.pytest_numpy_scalars_ok   s    
z$TestLogicalOps.test_numpy_scalars_okc                    sd   | d}d|kr|n|d }ztt|}W n2 tk
r^   tt|dd    fdd}Y nX |S )N_xor   c                    s
    || S )Nr   )xyZropr   r   <lambda>       z1TestLogicalOps.get_op_from_name.<locals>.<lambda>)stripr
   operatorAttributeError)r   op_nameZshort_opnamer   r   r   r   get_op_from_name   s    
zTestLogicalOps.get_op_from_namec                 C   sJ   t jg dd}|}t||d}t|| t||d}t|| d S )Nr   r   TF)r   r	   r
   r   r   )r   r   r   r!   resultr   r   r   test_empty_ok    s    zTestLogicalOps.test_empty_okc              	   C   s   |}t jddd gdd}d}tjt|d t||ddg W 5 Q R X tjt|d t||tddg W 5 Q R X tjt|d" t||t jddgdd W 5 Q R X d S )NTFr   r   zLengths must match to comparematch)r   r	   pytestraises
ValueErrorr
   r   r   r   r!   r   msgr   r   r   #test_logical_length_mismatch_raises.   s    "z2TestLogicalOps.test_logical_length_mismatch_raisesc              	   C   sJ   |}t jddd gdd}d}tjt|d t||tj W 5 Q R X d S )NTFr   r   zGot float insteadr%   )r   r	   r'   r(   	TypeErrorr
   r   nanr*   r   r   r   test_logical_nan_raises<   s
    z&TestLogicalOps.test_logical_nan_raisesotherr   r   c              	   C   sH   t jddgdd}tjttt|jd t||| W 5 Q R X d S )NTFr   r   r%   )	r   r	   r'   r(   r-   strtype__name__r
   )r   r0   r   r   r   r   r    test_non_bool_or_na_other_raisesD   s    z/TestLogicalOps.test_non_bool_or_na_other_raisesc              
   C   s   t jdgd dgd  d gd  dd}t jddd gd dd}||B }t jdddddd dd d g	dd}t|| ||B }t|| t|t jdgd dgd  d gd  dd t|t jddd gd dd d S NT   Fr   r   r   r	   r   r   r   r   br#   expectedr   r   r   test_kleene_orJ   s$    (  & zTestLogicalOps.test_kleene_orzother, expectedTNFc                 C   sj   t jddd gdd}||B }t j|dd}t|| ||B }t|| t|t jddd gdd d S r   r7   r   r0   r:   r   r#   r   r   r   test_kleene_or_scalar_   s     z$TestLogicalOps.test_kleene_or_scalarc              
   C   s   t jdgd dgd  d gd  dd}t jddd gd dd}||@ }t jddd dddd dd g	dd}t|| ||@ }t|| t|t jdgd dgd  d gd  dd t|t jddd gd dd d S r5   r7   r8   r   r   r   test_kleene_andx   s$    (  & zTestLogicalOps.test_kleene_andc                 C   sj   t jddd gdd}||@ }t j|dd}t|| ||@ }t|| t|t jddd gdd d S r   r7   r<   r   r   r   test_kleene_and_scalar   s     z%TestLogicalOps.test_kleene_and_scalarc              
   C   s   t jdgd dgd  d gd  dd}t jddd gd dd}||A }t jddd ddd d d d g	dd}t|| ||A }t|| t|t jdgd dgd  d gd  dd t|t jddd gd dd d S r5   r7   r8   r   r   r   test_kleene_xor   s$    (  & zTestLogicalOps.test_kleene_xorc                 C   sj   t jddd gdd}||A }t j|dd}t|| ||A }t|| t|t jddd gdd d S r   r7   r<   r   r   r   test_kleene_xor_scalar   s    
 z%TestLogicalOps.test_kleene_xor_scalarr6   c                 C   s   t jtdddddddddg	tdgd dddg }t jdgd dgd  d gd  dd}t|tr|t j|dd}t|||}t|||}t	|| t|trd|j
|j< d|j
|j< t|||}t|||}t	|| d S )NTF   r6   r   r   )r   Zarraysr   r   r	   
isinstancelistr
   r   r   _dataZ_mask)r   r0   r   r   r9   r#   r:   r   r   r   test_no_masked_assumptions   s     (

z)TestLogicalOps.test_no_masked_assumptions)r3   
__module____qualname__r   r"   r$   r,   r/   r'   markZparametrizer4   r;   r   ZNAr   r   r=   r>   r?   r@   rA   rF   r   r   r   r   r      sR   




	
 r   )r   Znumpyr   r'   Zpandasr   Zpandas._testingZ_testingr   Zpandas.arraysr   Zpandas.tests.extension.baser   r   r   r   r   r   <module>   s   