a
    ø´þ`Ø  ã                   @   s|   d dl Z d dlmZ d dlmZ d dlZd dlZd dlm	Z	 d dl
mZmZ d dlmZ G dd„ deƒZG d	d
„ d
eƒZdS )é    N)ÚSkipTest)Úparameterized)ÚStore)ÚImageÚQuadMesh)ÚComparisonTestCasec                   @   sî   e Zd Zdd„ Zdd„ Ze ddg¡dd„ ƒZe ddg¡d	d
„ ƒZe ddg¡dd„ ƒZ	dd„ Z
dd„ Zdd„ Ze ddg¡dd„ ƒZe ddg¡dd„ ƒZe ddg¡dd„ ƒZe ddg¡dd„ ƒZdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%S )&ÚTestDatashaderc                 C   sf   zdd l }W n   tdƒ‚Y n0 tjdk r4tdƒ‚dd l}tjg d¢g d¢g d¢gg d¢d	| _d S )
Nr   zDatashader not availableì        ú*Datashader does not work on 32-bit systems)é   é   ÚAgš™™™™™¹?)é   é   ÚBgš™™™™™É?)é   é   ÚCg333333Ó?)ÚxÚyÚcategoryÚnumber)Úcolumns)Ú
datashaderr   ÚsysÚmaxsizeZhvplot.pandasÚpdÚ	DataFrameÚdf)Úselfr   Úhvplot© r!   ú:lib/python3.9/site-packages/hvplot/tests/testoperations.pyÚsetUp   s    
ÿzTestDatashader.setUpc                 C   sT   ddl m} | jjjddddd}|jjd jjjj	}|  
||¡ |  |jd¡ d S )Nr   )Ú	count_catr   r   r   T)ÚbyÚ	rasterize)Údatashader.reductionsr$   r   r    ÚscatterÚcallbackÚinputsÚ	operationÚpÚ
aggregatorÚassertIsInstanceÚassertEqualÚcolumn)r   r$   ÚdmapÚaggr!   r!   r"   Útest_rasterize_by_cat   s
    z$TestDatashader.test_rasterize_by_cat)r&   )Ú	datashadec                 C   sZ   ddl m} | jjjdddi|di¤Ž}|jjd jjjj	}|  
||¡ |  |jd¡ d S )	Nr   ©Úmeanr   r   Úcr   T)r   r   )r'   r6   r   r    r(   r)   r*   r+   r,   r-   r.   r/   r0   )r   r+   r6   r1   r2   r!   r!   r"   Útest_color_dim_with_default_agg"   s
    z.TestDatashader.test_color_dim_with_default_aggc                 C   s\   ddl m} | jjjd	dddœ|di¤Ž}|jjd jjjj	}|  
||¡ |  |jd¡ d S )
Nr   )Úsumr   r   r   r9   )r7   r-   T)r   r   )r'   r9   r   r    r(   r)   r*   r+   r,   r-   r.   r/   r0   )r   r+   r9   r1   r2   r!   r!   r"   Útest_color_dim_with_string_agg*   s
    z-TestDatashader.test_color_dim_with_string_aggc                 C   sx   ddl m} | jjdd}| jjjd	ddi|di¤Ž}|jjd jjj	j
}|  ||¡ |  |jd¡ | | j¡stJ ‚d S )
Nr   r5   T)Zdeepr   r   r7   Z_color)r   r   )r'   r6   r   Úcopyr    r(   r)   r*   r+   r,   r-   r.   r/   r0   Zequals)r   r+   r6   Zoriginal_datar1   r2   r!   r!   r"   Útest_color_dim_also_an_axis2   s    z*TestDatashader.test_color_dim_also_an_axisc                 C   s>   | j jjdddddd}t d|d¡j}|  | d¡d	¡ d S )
Nr   r   FT)r7   Údynamicr&   ÚbokehÚstyleÚcmapÚkbc_r©r   r    r(   r   Úlookup_optionsÚkwargsr/   Úget©r   ÚplotÚoptsr!   r!   r"   Ú:test_rasterize_color_dim_with_new_column_gets_default_cmap<   s    zITestDatashader.test_rasterize_color_dim_with_new_column_gets_default_cmapc                 C   s<   | j jjddddd}t d|d¡j}|  | d¡d	¡ d S )
Nr   r   FT)r=   r&   r>   r?   r@   rA   rB   rF   r!   r!   r"   Útest_rasterize_default_cmapA   s    z*TestDatashader.test_rasterize_default_cmapc                 C   s>   | j jjdddddd}t d|d¡j}|  | d	¡d¡ d S )
Nr   r   FT)r   r   )r=   r&   Úclimr>   rG   rK   rB   rF   r!   r!   r"   Útest_rasterize_set_climF   s    z&TestDatashader.test_rasterize_set_clim)Zaspect)Zdata_aspectc                 C   sj   | j jf ddddœ|di¤Ž}t d|d d¡j}|  || d¡ |  | d	¡d ¡ |  | d
¡d ¡ d S )Nr   r   T©r   r   r4   r   r>   r!   rG   ÚheightÚframe_height©r   r    r   rC   rD   r/   rE   ©r   ÚoptrG   rH   r!   r!   r"   Útest_aspect_with_datashadeK   s
    z)TestDatashader.test_aspect_with_datashadec                 C   sl   | j jf dddddœ|di¤Ž}t d|d d	¡j}|  || d¡ |  | d
¡d ¡ |  | d¡d ¡ d S )Nr   r   TF)r   r   r4   r=   r   r>   r!   rG   rN   rO   rP   rQ   r!   r!   r"   Ú/test_aspect_with_datashade_and_dynamic_is_falseS   s
     z>TestDatashader.test_aspect_with_datashade_and_dynamic_is_falsec                 C   s~   | j jf dddddœ|di¤Ž}t d|d d	¡j}|  || d¡ |  | d
¡d¡ |  | d¡d ¡ |  | d¡d ¡ d S )Nr   r   é–   T)r   r   rO   r4   r   r>   r!   rG   rO   rN   Úframe_widthrP   rQ   r!   r!   r"   Ú+test_aspect_and_frame_height_with_datashade[   s     z:TestDatashader.test_aspect_and_frame_height_with_datashadec                 C   s€   | j jf ddddddœ|di¤Ž}t d|d	 d
¡j}|  || d¡ |  | d¡d¡ |  | d¡d ¡ |  | d¡d ¡ d S )Nr   r   rU   TF)r   r   rO   r4   r=   r   r>   r!   rG   rO   rN   rV   rP   rQ   r!   r!   r"   Ú@test_aspect_and_frame_height_with_datashade_and_dynamic_is_falsed   s    "zOTestDatashader.test_aspect_and_frame_height_with_datashade_and_dynamic_is_falsec              	   C   sl   ddddœ}| j jjddd|dd	 |  t¡* | j jjddddd
|d W d   ƒ n1 s^0    Y  d S )Nz#ff0000z#00ff00z#0000ff)r   r   r   r   r   r   T)r   r   r%   r@   r4   rA   )r   r   r%   r4   r@   Ú	color_key)r   r    ZpointsZassertRaisesÚ	TypeError)r   rY   r!   r!   r"   Útest_cmap_can_be_color_keym   s    ÿz)TestDatashader.test_cmap_can_be_color_keyc                 C   s<   | j jdddd}t d|d d¡j}d| d	¡vs8J ‚d S )
Nr   r   TrM   r>   r!   rG   ÚhoverÚtools©r   r    r   rC   rD   rE   rF   r!   r!   r"   Ú9test_when_datashade_is_true_set_hover_to_false_by_defaultt   s    zHTestDatashader.test_when_datashade_is_true_set_hover_to_false_by_defaultc                 C   s>   | j jddddd}t d|d d¡j}d| d	¡v s:J ‚d S )
Nr   r   T)r   r   r4   r\   r>   r!   rG   r\   r]   r^   rF   r!   r!   r"   Ú3test_when_datashade_is_true_hover_can_still_be_truey   s    zBTestDatashader.test_when_datashade_is_true_hover_can_still_be_truec                 C   s<   t  tj d¡ ¡ ¡}|jdddd}| d¡dks8J ‚d S )Néd   )r   i N  TF)Zxlimr4   r=   r   )r   r   ÚnpZrandomZrandnZcumsumr    Úrange)r   ÚdataZimgr!   r!   r"   Útest_xlim_affects_x_range~   s    z(TestDatashader.test_xlim_affects_x_rangeN)Ú__name__Ú
__module__Ú__qualname__r#   r3   r   Úexpandr8   r:   r<   rI   rJ   rL   rS   rT   rW   rX   r[   r_   r`   re   r!   r!   r!   r"   r      s.   


	



r   c                   @   sP   e Zd Zdd„ Ze defdefg¡dd„ ƒZe defdefg¡dd„ ƒZ	d	S )
ÚTestChart2Dc                 C   sˆ   zdd l }dd l}W n   tdƒ‚Y n0 tjdk r<tdƒ‚dd l}t dd¡ dd¡}t d¡}t d¡}|j	|||dœdd	| _
d S )
Nr   z"xarray or datashader not availabler	   r
   é<   r   é
   )r   r   )ZcoordsZdims)Zxarrayr   r   r   r   Zhvplot.xarrayrb   ZarangeZreshapeZ	DataArrayÚda)r   ZxrZdsr    rd   r   r   r!   r!   r"   r#   †   s    


þzTestChart2D.setUpZimageZquadmeshc                 C   sR   | j j|d}t|jj d¡ d¡dkƒs.J ‚t|jj d¡ d¡dkƒsNJ ‚d S )N)Úkindr   r   r   r   ©rm   r    Úallrd   r   ÚdiffÚroundr   ©r   rn   ÚelementrG   r!   r!   r"   Útest_plot_resolution–   s     z TestChart2D.test_plot_resolutionc                 C   sZ   | j j|ddddd}t|jj d¡ d¡dkƒs6J ‚t|jj d¡ d¡dkƒsVJ ‚d S )	NFTr   r   )rn   r=   r&   Z
x_samplingZ
y_samplingr   r   r   ro   rs   r!   r!   r"   Ú#test_plot_resolution_with_rasterizeœ   s
    ÿ z/TestChart2D.test_plot_resolution_with_rasterizeN)
rf   rg   rh   r#   r   ri   r   r   ru   rv   r!   r!   r!   r"   rj   „   s
   
rj   )r   Zunittestr   r   Znumpyrb   Zpandasr   Z	holoviewsr   Zholoviews.elementr   r   Zholoviews.element.comparisonr   r   rj   r!   r!   r!   r"   Ú<module>   s   v