
    eJ*                         d dl Zd dlZd dlZd dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dl m!Z! d dl"m#Z#  G d de!          Z$ G d de!          Z% G d	 d
e!          Z&dS )    N)RGB
AnnotationAreaBars
BoxWhiskerContoursCurveDataset	DimensionDivElement	ErrorBarsGraphHeatMap	HistogramImagePathPointsPolygonsQuadMeshRasterScatterSpikesTilesTriMeshVectorField)ComparisonTestCase)	BaseShapec                   |     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Z xZS )ElementConstructorTestzU
    Tests allowable data formats when constructing
    the basic Element types.
    c                 z   t          j        ddt           j        z  d          | _        t          j        t          | j                            | _        t          j        | j                  | _        t          j        | j                  | _        t          j	        | j        | j        f          }t          j	        | j        | j        f          }t          |          | _        t          ||g          | _        t          | j        | j        f          | _        t!                                                       d S )Nr         )nplinspacepixsarangelenhxssincoscolumn_stackr	   curver   pathr   	histogramsupersetUp)self	sine_datacos_data	__class__s      Plib/python3.11/site-packages/holoviews/tests/element/test_elementconstructors.pyr2   zElementConstructorTest.setUp+   s    +a25"--9S\\**6$'??6$'??OTWdh$788	?DGTX#6779%%
)X.//	"DHdh#788    c                 Z   g }t          j        t                                                    D ]f\  }}|dk    rt	          |t
          t          t          t          f          r5	  |g            B# t          $ r |
                    |           Y cw xY w|                     |g            d S )NSankey)paramconcrete_descendentsr   items
issubclassr   r   r   r   	ExceptionappendassertEqual)r3   failed_elementsnameels       r7   test_empty_element_constructorz5ElementConstructorTest.test_empty_element_constructor7   s    27;;AACC 	- 	-HD"x"z9c5ABB -2 - - -&&t,,,,,-"-----s   $A00BBc                     |                      t          t          | j        | j                            | j                   d S N)rA   r	   zipr'   r+   r.   r3   s    r7   test_chart_zipconstructz.ElementConstructorTest.test_chart_zipconstructC   s6    s47DH5566
CCCCCr8   c                 n    |                      t          | j        | j        f          | j                   d S rG   )rA   r	   r'   r+   r.   rI   s    r7   test_chart_tuple_constructz1ElementConstructorTest.test_chart_tuple_constructF   s1    233TZ@@@@@r8   c           	          |                      t          | j        t          j        | j        | j        f          f          | j                   d S rG   )rA   r   r'   r$   r-   r+   r,   r/   rI   s    r7   test_path_tuple_constructz0ElementConstructorTest.test_path_tuple_constructI   sD    tw488L(M(MNOOQUQZ[[[[[r8   c                     |                      t          | j        | j        f| j        | j        fg          | j                   d S rG   )rA   r   r'   r+   r,   r/   rI   s    r7   test_path_tuplelist_constructz4ElementConstructorTest.test_path_tuplelist_constructL   s?    2TWdh4GHII49UUUUUr8   c                     |                      t          t          t          | j        | j                            t          t          | j        | j                            g          | j                   d S rG   )rA   r   listrH   r'   r+   r,   r/   rI   s    r7   test_path_ziplist_constructz2ElementConstructorTest.test_path_ziplist_constructO   s[    tC$:$:;;T#dgtxBXBX=Y=YZ[[]a]fgggggr8   c           
          |                      t          t          t          | j        | j                                      | j                   d S rG   )rA   r   rR   rH   r*   r+   r0   rI   s    r7   test_hist_zip_constructz.ElementConstructorTest.test_hist_zip_constructR   s>    4DHdh(?(?#@#@AA4>RRRRRr8   c                     |                      t          t          j        | j        | j        f                    | j                   d S rG   )rA   r   r$   r-   r*   r+   r0   rI   s    r7   test_hist_array_constructz0ElementConstructorTest.test_hist_array_constructU   s;    2?DHdh3G#H#HII4>ZZZZZr8   c                 `    |                      t          | j                  | j                   d S rG   )rA   r   r+   r0   rI   s    r7   test_hist_yvalues_constructz2ElementConstructorTest.test_hist_yvalues_constructX   s*    48,,dn=====r8   c                 *   t          t          g dg df                    }|                    d          }|j        }|                     |t          j        g d                     |                     |t          j        g d                     d S )N)g?g333333?      ?)g @g@gffffff
@   )r   g?g?g333333?)r   r	   dimension_valuesedgesrA   r$   arrayr3   histvaluesr^   s       r7   test_hist_curve_constructz0ElementConstructorTest.test_hist_curve_construct[   s    ABBCC&&q))
///!:!:;;;););); < <=====r8   c                 4   t          t          t          d                              }|                    d          }|j        }|                     |t          j        d                     |                     |t          j        g d                     d S )N   r\   )g      r[   g      ?g      @)	r   r	   ranger]   r^   rA   r$   r(   r_   r`   s       r7   #test_hist_curve_int_edges_constructz:ElementConstructorTest.test_hist_curve_int_edges_constructb   s    uQxx))&&q))
1...)<)<)< = =>>>>>r8   c                     t          ddg          }t          ddgddgdt          j        gt          j        dggd	d
dgdgd          }|                     |j        |           d S )NAar\   Bbr"   rj   rm   rk   rn   r\   r"   xyzrp   rq   rr   uniquekdimsvdimslabelr   r
   r$   nanrA   griddedr3   hmapdatasets      r7   test_heatmap_constructz-ElementConstructorTest.test_heatmap_constructi       }566c
#sArv;QSQWYZP[B\]]!$c
3%xI I Iw/////r8   c                     t          ddg          }t          ddgddgdt          j        gt          j        dggd	d
dgdgd          }|                     |j        |           d S )Nrl   ri   rm   rj   rn   rk   r"   r\   ro   rp   rq   rr   rs   rt   rx   r{   s      r7   test_heatmap_construct_unsortedz6ElementConstructorTest.test_heatmap_construct_unsortedo   r   r8   c           	         d t          d          D             }t          |          }t          g dg dddt          j        gt          j        ddgdt          j        dggddd	gd
gd          }|                     |j        |           d S )Nc                 t    g | ]5}d D ]0}||k    t          d|z             t          d|z             ||z  f16S )r"   r   r\   A   a   chr.0ijs      r7   
<listcomp>zPElementConstructorTest.test_heatmap_construct_partial_sorted.<locals>.<listcomp>v   P    XXXqiXXSTVWSWSWRT3r!t99ac*SWSWSWSWr8   re   rj   rm   C)crn   rk   r   r"   ro   rp   rq   rr   rs   rt   )rf   r   r
   r$   ry   rA   rz   r3   datar|   r}   s       r7   %test_heatmap_construct_partial_sortedz<ElementConstructorTest.test_heatmap_construct_partial_sortedu   s    XXE!HHXXXt}}ooo"#Q"&!Q!RVQ PR R!$c
3%xI I I 	w/////r8   c           	      @   d t          d          D             }t          |                                          }t          g dg dt          j        ddgdt          j        dgddt          j        ggddd	gd
gd          }|                     |j        |           d S )Nc                 t    g | ]5}d D ]0}||k    t          d|z             t          d|z             ||z  f16S r   r   r   s      r7   r   zJElementConstructorTest.test_heatmap_construct_and_sort.<locals>.<listcomp>~   r   r8   re   r   )rk   rn   r   r   r"   ro   rp   rq   rr   rs   rt   )rf   r   sortr
   r$   ry   rA   rz   r   s       r7   test_heatmap_construct_and_sortz6ElementConstructorTest.test_heatmap_construct_and_sort}   s    XXE!HHXXXt}}!!##ooo"$&!Q!RVQ!Q PR R!$c
3%xI I I 	w/////r8   )__name__
__module____qualname____doc__r2   rE   rJ   rL   rN   rP   rS   rU   rW   rY   rc   rg   r~   r   r   r   __classcell__)r6   s   @r7   r    r    %   s8        

 
 
 
 

. 
. 
.D D DA A A\ \ \V V Vh h hS S S[ [ [> > >> > >? ? ?0 0 00 0 00 0 00 0 0 0 0 0 0r8   r    c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )ElementSignatureTestz6
    Test that Element signatures are consistent.
    c                     t          g dd          }|                     |j        t          d          g           |                     |j        t          d          g           d S Nrk   rn   )r	   rA   ru   r   rv   )r3   r.   s     r7   test_curve_string_signaturez0ElementSignatureTest.test_curve_string_signature   s[    b#s##y~~&6777y~~&677777r8   c                     t          g dd          }|                     |j        t          d          g           |                     |j        t          d          g           d S r   )r   rA   ru   r   rv   )r3   areas     r7   test_area_string_signaturez/ElementSignatureTest.test_area_string_signature   [    BS!!inn%5666inn%566666r8   c                     t          g dddg          }|                     |j        t          d          g           |                     |j        t          d          t          d          g           d S Nrk   rn   r   )r   rA   ru   r   rv   )r3   	errorbarss     r7   test_errorbars_string_signaturez4ElementSignatureTest.test_errorbars_string_signature   sg    b#Sz22	9S>>*:;;;9S>>9S>>*JKKKKKr8   c                     t          g dd          }|                     |j        t          d          g           |                     |j        t          d          g           d S r   )r   rA   ru   r   rv   )r3   barss     r7   test_bars_string_signaturez/ElementSignatureTest.test_bars_string_signature   r   r8   c                     t          g dd          }|                     |j        t          d          g           |                     |j        t          d          g           d S r   )r   rA   ru   r   rv   )r3   
boxwhiskers     r7    test_boxwhisker_string_signaturez5ElementSignatureTest.test_boxwhisker_string_signature   s]    C--
)IcNN+;<<<)IcNN+;<<<<<r8   c                     t          g dd          }|                     |j        t          d          g           |                     |j        t          d          g           d S r   )r   rA   ru   r   rv   )r3   scatters     r7   test_scatter_string_signaturez2ElementSignatureTest.test_scatter_string_signature   s[    "c3''3(89993(899999r8   c                     t          g ddgd          }|                     |j        t          d          t          d          g           |                     |j        t          d          g           d S r   )r   rA   ru   r   rv   )r3   pointss     r7   test_points_string_signaturez1ElementSignatureTest.test_points_string_signature   sg    S#J,,	#	#'GHHH	#'788888r8   c                    t          g ddgddg          }|                     |j        t          d          t          d          g           |                     |j        t          d          t          d          g           d S )Nrk   rn   r   d)r   rA   ru   r   rv   )r3   vectorfields     r7   !test_vectorfield_string_signaturez6ElementSignatureTest.test_vectorfield_string_signature   su    !"sCj3*==*Ys^^Ys^^,LMMM*Ys^^Ys^^,LMMMMMr8   c                    t          j        ddd          }t          j        ||          \  }}d|z  d|z  }}t          j        ||||f          }t          j        ||          }t          j        ||          }t          d          t          d          g}	t          ddd	d
t           j        z  f          t          d          g}
| 	                    |j
        |	           | 	                    |j        |
           | 	                    |                    d	          |j                                                   | 	                    |                    d          |j                                                   | 	                    |                    d
          |j                                                   | 	                    |                    d          |j                                                   d S )Nr\      re   rp   rq   AngleTr   r"   cyclicrf   	Magnitude)r$   r%   meshgridr   from_uvarctan2hypotr   r&   rA   ru   rv   r]   Tflatten)r3   rp   XYUVr   anglemagru   rv   s              r7   test_vectorfield_from_uvz-ElementSignatureTest.test_vectorfield_from_uv   s   KAq!!{1a  11ua!e1!)1aA,77
1a  hq!nn330gd1QruW+>>>k""
 	*E222*E22255a88!#++--HHH55a88!#++--HHH55a88%'//:K:KLLL55a88#%--//JJJJJr8   c                    t          j        ddd          }t          j        ||          \  }}d|z  d|z  }}t          j        |                                |                                |                                |                                d          }t          j        |ddgdd	g          }t          j        ||          }t          j	        ||          }	t          d          t          d          g}
t          d
dddt           j        z  f          t          d          g}|                     |j        |
           |                     |j        |           |                     |                    dd          |j                   |                     |                    dd          |	j                   d S )Nr   r\   r      )rp   rq   uvrp   rq   r   r   r   Tr   r"   r   r   F)flatre   )r$   r%   r   pd	DataFramer   r   r   r   r   r   r&   rA   ru   rv   r]   r   )r3   rp   r   r   r   r   dfr   r   r   ru   rv   s               r7   "test_vectorfield_from_uv_dataframez7ElementSignatureTest.test_vectorfield_from_uv_dataframe   s   KAq!!{1a  11ua!e1\	
 
   ")"sCj3*EE
1a  hq!nn330gd1QruW+>>>k""
 	*E222*E22255ae5DDejQQQ55ae5DDchOOOOOr8   c                     t          g ddg          }|                     |j        t          d          t          d          g           d S r   )r   rA   ru   r   )r3   r/   s     r7   test_path_string_signaturez/ElementSignatureTest.test_path_string_signature   sD    Bc
##inninn%EFFFFFr8   c                 x    t          g d          }|                     |j        t          d          g           d S )Nrk   )r   rA   ru   r   )r3   spikess     r7   test_spikes_string_signaturez1ElementSignatureTest.test_spikes_string_signature   s6    C	#'788888r8   c                     t          g ddg          }|                     |j        t          d          t          d          g           d S r   )r   rA   ru   r   )r3   contourss     r7   test_contours_string_signaturez3ElementSignatureTest.test_contours_string_signature   D    Bc
++)C..)C..)IJJJJJr8   c                     t          g ddg          }|                     |j        t          d          t          d          g           d S r   )r   rA   ru   r   )r3   polygonss     r7   test_polygons_string_signaturez3ElementSignatureTest.test_polygons_string_signature   r   r8   c                     t          g ddgd          }|                     |j        t          d          t          d          g           |                     |j        t          d          g           d S r   )r   rA   ru   r   rv   )r3   heatmaps     r7   test_heatmap_string_signaturez2ElementSignatureTest.test_heatmap_string_signature   sg    "sCj#..33(HIII3(899999r8   c                    t          t          j        dgg          ddgd          }|                     |j        t          d          t          d          g           |                     |j        t          d          g           d S )Nr   rk   rn   r   )r   r$   r_   rA   ru   r   rv   )r3   rasters     r7   test_raster_string_signaturez1ElementSignatureTest.test_raster_string_signature   ss    1##sS99	#	#'GHHH	#'788888r8   c                    t          t          j        ddgddgg          ddgd          }|                     |j        t          d          t          d          g           |                     |j        t          d          g           d S Nr   r\   rk   rn   r   )r   r$   r_   rA   ru   r   rv   r3   imgs     r7   test_image_string_signaturez0ElementSignatureTest.test_image_string_signature   s~    BHq!fq!f-..c
C@@Ys^^Ys^^$DEEEYs^^$455555r8   c                 L   t          t          j        d          ddgg d          }|                     |j        t          d          t          d          g           |                     |j        t          d          t          d          t          d          g           d S )N)r"   r"   re   rk   rn   )RGrm   r   r   rm   )r   r$   zerosrA   ru   r   rv   r   s     r7   test_rgb_string_signaturez.ElementSignatureTest.test_rgb_string_signature   s    "(9%%Sz???CCYs^^Ys^^$DEEEYs^^Ys^^Ys^^$TUUUUUr8   c           	      *   t          ddgddgt          j        ddgddgg          fddgd          }|                     |j        t          d          t          d          g           |                     |j        t          d          g           d S r   )r   r$   r_   rA   ru   r   rv   )r3   qmeshs     r7   test_quadmesh_string_signaturez3ElementSignatureTest.test_quadmesh_string_signature  s    1a&1a&"(QFQF3C*D*DESzSVWWy~~y~~&FGGGy~~&677777r8   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r8   r7   r   r      sS        8 8 8
7 7 7
L L L
7 7 7
= = =
: : :
9 9 9
N N N
K K K(P P P0G G G9 9 9K K KK K K: : :
9 9 9
6 6 6
V V V
8 8 8 8 8r8   r   c                   *    e Zd ZdZd Zd Zd Zd ZdS )ElementCastingTestsz
    Tests whether casting an element will faithfully copy data and
    parameters. Important to check for elements where data is not all
    held on .data attribute, e.g. Image bounds or Graph nodes and
    edgepaths.
    c                 n    t          g d          }|                     |t          |                     d S Nr"   )bounds)r   rA   r   s     r7   test_image_castingz&ElementCastingTests.test_image_casting  s6    Bq!!!eCjj)))))r8   c                 n    t          g d          }|                     |t          |                     d S r   )r   rA   )r3   rgbs     r7   test_rgb_castingz$ElementCastingTests.test_rgb_casting  s6    "Qc#hh'''''r8   c                 t    t          dgddgf          }|                     |t          |                     d S )N)r   r\   r   r   r   r   r\   r\   )r   rA   )r3   graphs     r7   test_graph_castingz&ElementCastingTests.test_graph_casting  s=    x)Y!7899e-----r8   c                 t    t          dgg df          }|                     |t          |                     d S )N)r   r\   r"   )r  r  )r\   r\   r"   )r   rA   )r3   trimeshs     r7   test_trimesh_castingz(ElementCastingTests.test_trimesh_casting  sA    I;(I(I(IJKK''"2"233333r8   N)r   r   r   r   r   r   r  r  r   r8   r7   r   r   
  sZ         * * *( ( (. . .4 4 4 4 4r8   r   )'numpyr$   pandasr   r;   	holoviewsr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   holoviews.element.comparisonr   holoviews.element.pathr   r    r   r   r   r8   r7   <module>r     s                                                                  8 < ; ; ; ; ; , , , , , ,^0 ^0 ^0 ^0 ^0/ ^0 ^0 ^0D@8 @8 @8 @8 @8- @8 @8 @8F4 4 4 4 4, 4 4 4 4 4r8   