U
    sVc                     @   sT   d dl Zd dlmZ d dlmZ d dlZd dlm	Z
 d dlmZ G dd deZdS )    N)is_extension_array_dtype)ExtensionDtype)BaseExtensionTestsc                   @   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S )BaseInterfaceTestsz,Tests that the basic interface is satisfied.c                 C   s   t |dkstd S Nd   )lenAssertionErrorselfdata r   I/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/extension/base/interface.pytest_len   s    zBaseInterfaceTests.test_lenc                 C   s   |j dkstd S r   )sizer	   r
   r   r   r   	test_size   s    zBaseInterfaceTests.test_sizec                 C   s   |j dkstd S )N   )ndimr	   r
   r   r   r   	test_ndim   s    zBaseInterfaceTests.test_ndimc                 C   s   |j dkstd S )NT)Z_can_hold_nar	   r
   r   r   r   test_can_hold_na_valid   s    z)BaseInterfaceTests.test_can_hold_na_validc                 C   s   |j j}||   }|d |ks&t|d |ks6t||ksBt||ksNttjD ]6}||ksTt|t|krrqT||ks~t||ksTtqTd S )Nr   )dtypena_valueisnar	   tmZNULL_OBJECTStype)r   r   data_missingr   Zna_value_objr   r   r   test_contains   s    
z BaseInterfaceTests.test_containsc                 C   s(   t |}|jdd}||jks$td S )NF)index)pdSeriesZmemory_usagenbytesr	   )r   r   sresultr   r   r   test_memory_usage9   s    
z$BaseInterfaceTests.test_memory_usagec                 C   sN   t |}|d |d kstt j|td}t jt|td}t|| d S )Nr   r   )nparrayr	   objectlistr   Zassert_numpy_array_equalr   r   r"   expectedr   r   r   test_array_interface>   s
    
z'BaseInterfaceTests.test_array_interfacec                 C   s@   t |stt |jstt t|s,tt|jts<td S N)r   r	   r   r   r   
isinstancer   r
   r   r   r   test_is_extension_array_dtypeF   s    z0BaseInterfaceTests.test_is_extension_array_dtypec                 C   s    t |drtt |drtd S )NvaluesZ_values)hasattrr	   r
   r   r   r   test_no_values_attributeL   s    z+BaseInterfaceTests.test_no_values_attributec                 C   s4   t |}t|jdr0|jjd j|jjks0td S )Nblocksr   )	r   r   r0   Z_mgrr2   Z
is_numericr   Z_is_numericr	   r   r   r"   r   r   r   test_is_numeric_honoredR   s    
z*BaseInterfaceTests.test_is_numeric_honoredc                 C   sT   |  }t|rP|dst| s*t|dr8t| rDt|jjsPtd S )Nanyall)r   r   Z_reducer	   r5   r6   r   Z_is_boolean)r   r   nar   r   r   test_isna_extension_arrayW   s    z,BaseInterfaceTests.test_isna_extension_arrayc                 C   s@   |d |d kst | }|d |d< |d |d ks<t d S )Nr   r   )r	   copyr3   r   r   r   	test_copyd   s    zBaseInterfaceTests.test_copyc                 C   sl   |d |d kst | }||k	s(t t|t|ks<t |d |d< |d |d ks\t |jd d d S )Nr   r   r$   )r	   viewr   r3   r   r   r   	test_viewl   s    zBaseInterfaceTests.test_viewc                 C   s.   |  }t|}t|tst||ks*td S r,   )tolistr(   r-   r	   r)   r   r   r   test_tolist{   s    zBaseInterfaceTests.test_tolistN)__name__
__module____qualname____doc__r   r   r   r   r   r#   r+   r.   r1   r4   r8   r:   r<   r>   r   r   r   r   r      s   r   )Znumpyr%   Zpandas.core.dtypes.commonr   Zpandas.core.dtypes.dtypesr   Zpandasr   Zpandas._testingZ_testingr   Z pandas.tests.extension.base.baser   r   r   r   r   r   <module>   s   