
    e
)                     v    d dl mZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ ddlmZmZ  G d	 d
e          ZdS )    )productN)ColorBar)HoloMapHeatMap)RadialHeatMapPlot   )TestBokehPlotbokeh_rendererc                        e 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d Zd Z xZS )BokehRadialHeatMapPlotTestsc                 6   t                                                       d t          d          D             }d t          d          D             }t          t          d                    | _        t          t          ||           \  | _        | _        t          j
        ddg          t          j
        ddg          d| _        t          j
        d	t          j        g          t          j
        t          j        dt          j        z  g          d| _        t          d	ddd
d          }t          |          }t          | j        | j        | j        f                              |          | _        t%          j        | j                  | _        d S )Nc                     g | ]}d | S )zSeg  .0idxs     Qlib/python3.11/site-packages/holoviews/tests/plotting/bokeh/test_radialheatmap.py
<listcomp>z5BokehRadialHeatMapPlotTests.setUp.<locals>.<listcomp>       ...c\C\\...       c                     g | ]}d | S )zAnn r   r   s     r   r   z5BokehRadialHeatMapPlotTests.setUp.<locals>.<listcomp>   r   r            ?      ?r	   )o1o2r   g?T)start_angle
max_radiusradius_innerradius_outerradialr   )supersetUprangelistzzipr   xynparrayann_binspiseg_binsdictr   optselementr   get_plotplot)selfr*   r+   	plot_optsr2   	__class__s        r   r%   z!BokehRadialHeatMapPlotTests.setUp   sZ   ..U1XX.....U1XX...eAhhgamm,!xd44!xq	224 4  "xBE
33!x"%(899; ; Q$%&)&) $	& & &	 I&&& 788==dCC"+DL99			r   c                    t          | j                                                  }| j                            d|          }|                     |                                | j                                                   |                     |d         | j        d                    |                     |d         | j        d                    | j                            d|d          }|                     |                                | j                                                   |                     |d         | j        d                    |                     |d         | j        d                    dS )z7Test computation of bins for radius/annulars.

        radiusr   r   T)reverseN)sortedr.   keysr5   	_get_binsassertEqualr6   ordervaluess      r   test_radius_bin_computationz7BokehRadialHeatMapPlotTests.test_radius_bin_computation+   s4   
 t}))++,,$$Xu55(:(:(<(<===t}T':;;;t}T':;;;$$Xud$CC(:(:(<(<===t}T':;;;t}T':;;;;;r   c                    t          | j                                                  }| j                            d|          }|                     |                                | j                                                   |                     |d         | j        d                    |                     |d         | j        d                    | j                            d|d          }|                     |                                | j                                                   |                     |d         | j        d                    |                     |d         | j        d                    dS )z9Test computation of bins for radiants/segments.

        angler   r   TN)r<   r0   r=   r5   r>   r?   r@   s      r   test_angle_bin_computationz6BokehRadialHeatMapPlotTests.test_angle_bin_computation;   s1    t}))++,,$$We44(:(:(<(<===t}T':;;;t}T':;;;$$WeT::(:(:(<(<===t}T':;;;t}T':;;;;;r   c                 h    | j                             dd          }|                     |d           dS )z.Test correct computation of extents.

         )皙ɿrI   皙@rJ   N)r5   get_extentsr?   )r6   extentss     r   test_plot_extentsz-BokehRadialHeatMapPlotTests.test_plot_extentsJ   s8    
 )''B//"899999r   c                     g d}| j                             | j        |          \  }}|                     |t	          j        g d                     |                     |t	          j        g d                     dS )z-Test boundary computation function.

        )r   r   r   )r   r   r   )r	   r   r   N)r5   _get_boundsr.   r?   r,   r-   )r6   rA   startends       r   test_get_boundsz+BokehRadialHeatMapPlotTests.test_get_boundsR   s}    
 #""Y**4=%@@
s)9)9)9 : :;;;bh7788888r   c                 ,   t          | j                                                  }d| j        _        | j                            d|| j                  }|                     |d| j        d         i           d| j        _        | j                            d|| j                  }|                     || j                   ddg| j        _        | j                            d|| j                  }| j                            d| j        j        d          fd| j        j        D             }|                     ||           d	 | j        _        | j                            d|| j                  }|                     |d| j        d         i           d
S )zeTest computation of segment tick mappings. Check integers, list and
        function types.

        r	   rE   r   r   	New Tick1	New Tick2Tc                 "    i | ]}||         S r   r   r   r*   binss     r   
<dictcomp>zNBokehRadialHeatMapPlotTests.test_compute_seg_tick_mappings.<locals>.<dictcomp>q       :::AQQ:::r   c                     | dk    S Nr   r   r*   s    r   <lambda>zLBokehRadialHeatMapPlotTests.test_compute_seg_tick_mappings.<locals>.<lambda>u   
    Q$Y r   N)r<   r0   r=   r5   xticks_compute_tick_mappingr?   r>   r6   rA   ticks	ticks_cmprX   s       @r   test_compute_seg_tick_mappingsz:BokehRadialHeatMapPlotTests.test_compute_seg_tick_mappings]   sv   
 t}))++,, 		//NNt}T': ;<<<		//NN... (5		//NNy""7DI,<dCC::::)9:::		*** /.		//NNt}T': ;<<<<<r   c                 *   t          | j                                                  }d| j        _        | j                            d|| j                  }|                     |d| j        d         i           d| j        _        | j                            d|| j                  }|                     || j                   ddg| j        _        | j                            d|| j                  }| j                            d| j        j                  fd| j        j        D             }|                     ||           d | j        _        | j                            d|| j                  }|                     |d| j        d         i           d	S )
zeTest computation of annular tick mappings. Check integers, list and
        function types.

        r	   r:   r   r   rT   rU   c                 "    i | ]}||         S r   r   rW   s     r   rY   zNBokehRadialHeatMapPlotTests.test_compute_ann_tick_mappings.<locals>.<dictcomp>   rZ   r   c                     | dk    S r\   r   r]   s    r   r^   zLBokehRadialHeatMapPlotTests.test_compute_ann_tick_mappings.<locals>.<lambda>   r_   r   N)r<   r.   r=   r5   yticksra   r?   r>   rb   s       @r   test_compute_ann_tick_mappingsz:BokehRadialHeatMapPlotTests.test_compute_ann_tick_mappingsy   st    t}))++,, 		//%OOt}T': ;<<<		//%OO... (5		//%OOy""8TY-=>>::::)9:::		*** /.		//%OOt}T': ;<<<<<r   c                    | j         j                                        }| j                             d d                                           }d |D             |                     t          fd|D                                  d S )Nc                 "    h | ]}|d d         S Nr   r   r*   s     r   	<setcomp>zGBokehRadialHeatMapPlotTests.test_get_default_mapping.<locals>.<setcomp>   s     6661#2#666r   c                     g | ]}|v S r   r   r   r*   glyphs_plains     r   r   zHBokehRadialHeatMapPlotTests.test_get_default_mapping.<locals>.<listcomp>   s    ???1Q,.???r   )r5   _style_groupsr=   get_default_mapping
assertTrueall)r6   glyphsglyphs_mappedrs   s      @r   test_get_default_mappingz4BokehRadialHeatMapPlotTests.test_get_default_mapping   s    
 (--//	55dDAAFFHH66666???????@@AAAAAr   c                    t           j        dz  }t          j        |          dz   }t          j        |          dz   }dt           j        z  |z   }t	          t          j        |          t          j        |          t          j        d          t          j        |                    }| j                            dg| j                  }| 	                    ||           dS )zHTest correct computation of a single segment label data point.

        r   r	   g      ?r   r*   r+   textrE   N)
r,   r/   cossinr1   r-   r5   _get_seg_labels_datar0   r?   )r6   radiantr*   r+   rE   test_seg_datacmp_seg_datas          r   test_get_seg_labels_dataz4BokehRadialHeatMapPlotTests.test_get_seg_labels_data   s    
 %!)F7OOaF7OOabeg%rx{{!x{{"$(4..#%8E??4 4 4
 y55tfdmLL55555r   c                 0   t          t          j        d          t          j        | j        d         d         dz             t          j        d          dg          }| j                            dg| j                  }|                     ||           dS )zHTest correct computation of a single annular label data point.

        r	   r   r   r|   N)r1   r,   r-   r.   r5   _get_ann_labels_datar?   )r6   test_ann_datacmp_ann_datas      r   test_get_ann_labels_dataz4BokehRadialHeatMapPlotTests.test_get_ann_labels_data   s    
 rx{{!xd(;A(>q(@AA"$(4..$%3( ( (
 y55tfdmLL55555r   c                    t          | j                                                  | j        g}t          j        | j        d         d                   }d }|                      | j        j        |g|R  |           t          j        | j        d         d                   }dg}|                      | j        j        |g|R  |           t          j        | j        d         d                   }d}|                      | j        j        |g|R  |           t          j        | j        d         d                   }d}|                      | j        j        |g|R  |           dS )zbTest computation of marker positions for function, list, tuple and
        integer type.

        r   r	   c                     | dk    S r\   r   r]   s    r   r^   z>BokehRadialHeatMapPlotTests.test_get_markers.<locals>.<lambda>   s
    q$w r   r   )r   N)r<   r.   r=   r,   r-   r?   r5   _get_markers)r6   argstest_val
test_inputs       r   test_get_markersz,BokehRadialHeatMapPlotTests.test_get_markers   sq    t}))++,,dm< 8DM$/233&&
//
BTBBBHMMM 8DM$/233S
//
BTBBBHMMM 8DM$/233
//
BTBBBHMMM 8DM$/233
//
BTBBBHMMMMMr   c                 L   d| j         _        t          dgdg          }| j                             dg| j                  }dD ]`}t          ||         ||                   }|D ]?\  }}|                     t          j        |          t          j        |                     @adS )z;Test computation of xmarks data for single xmark.

        r	   )r	   r	   )r   r   )ysxsr   )r   r   N)	r5   xmarksr1   _get_xmarks_datar0   r)   r?   r,   r-   )r6   test_mark_datacmp_mark_datasub_list
test_pairs
test_value	cmp_values          r   test_get_xmarks_dataz0BokehRadialHeatMapPlotTests.test_get_xmarks_data   s    
 	&xj999	22D64=II$ 	L 	LH^H5}X7NOOJ)3 L L%
I  *!5!5rx	7J7JKKKKL	L 	Lr   c                     d| j         _        t          | j        d         d                   }| j                             dg| j                  }|                     ||           dS )z;Test computation of ymarks data for single ymark.

        r	   r   )r:   N)r5   ymarksr1   r.   _get_ymarks_datar?   )r6   r   r   s      r   test_get_ymarks_dataz0BokehRadialHeatMapPlotTests.test_get_ymarks_data   sa    
 	T]4%8%;<<<	22D64=II77777r   c                 8   | j                             | j        i i           \  }}}| j         j                                        }||fD ]P}|                                }d |D             |                     t          fd|D                                  QdS )zTest for presence of glyphs in data and mapping. Testing for correct
        values for data and mapping are covered via other unit tests and hence
        are skipped here.

        c                 "    h | ]}|d d         S rm   r   ro   s     r   rp   z<BokehRadialHeatMapPlotTests.test_get_data.<locals>.<setcomp>  s     :::qAcrcF:::r   c                     g | ]}|v S r   r   rr   s     r   r   z=BokehRadialHeatMapPlotTests.test_get_data.<locals>.<listcomp>  s     C C Cql!2 C C Cr   N)r5   get_datar3   rt   r=   rv   rw   )r6   datamappingstylerx   checkry   rs   s          @r   test_get_dataz)BokehRadialHeatMapPlotTests.test_get_data   s      $y11$,BGGgu(--//G_ 	F 	FE!JJLLM::M:::LOOC C C C CF C C CDDEEEE	F 	Fr   c                 |   | j         j        d         j        }|                     t	          |d                   t	          | j                             |                     t	          |d                   t	          | j                             |                     t	          |d                   | j                   dS )z3Test initialization of ColumnDataSources.

        annular_wedge_1_sourcer*   r+   r(   N)r5   handlesr   r?   r'   r*   r+   r(   )r6   
source_anns     r   test_plot_data_sourcez1BokehRadialHeatMapPlotTests.test_plot_data_source  s    
 Y&'?@E
jo..TV===jo..TV===jo..77777r   c           
      `   t          t          t          j                            ddd                    t          t          j                            ddd                    d          }t          j        |                    d                    }|                     |t                     d S )Nr   
   )d      )ABT)r#   )
r   r   r,   randomrandintr   r4   r2   assertIsInstancer   r6   hmr5   s      r   test_heatmap_holomapz0BokehRadialHeatMapPlotTests.test_heatmap_holomap  s    729#4#4QH#E#EFF"29#4#4QH#E#EFFH H I I&rwwdw';';<<d$566666r   c                     t          g d                              dd          }t          j        |          }|                     |j                            d          t                     d S )N)r   r   r	   )r   r	   r   )r	   r   r   Tr#   colorbarr   )r   r2   r   r4   r   r   getr   r   s      r   test_radial_heatmap_colorbarz8BokehRadialHeatMapPlotTests.test_radial_heatmap_colorbar  sf    66677<<DSW<XX&r**dl..z::HEEEEEr   c                    t          g d                              dd          }t          j        |          }|                     |j        d         j        d           |                     |j        d         j        d           |                     |j        d         j        d           |                     |j        d         j        d           d S )Nr   Tr   x_rangegg?y_range)r   r2   r   r4   r?   r   rP   rQ   r   s      r   test_radial_heatmap_rangesz6BokehRadialHeatMapPlotTests.test_radial_heatmap_ranges  s    66677<<DSW<XX&r**i06>>>i04d;;;i06>>>i04d;;;;;r   )__name__
__module____qualname__r%   rC   rF   rM   rR   re   rj   rz   r   r   r   r   r   r   r   r   r   r   __classcell__)r8   s   @r   r   r      sF       : : : : :8< < < < < <: : :	9 	9 	9= = =8= = =:	B 	B 	B6 6 6&6 6 6N N N8L L L	8 	8 	8F F F 	8 	8 	87 7 7F F F
< < < < < < <r   r   )	itertoolsr   numpyr,   bokeh.modelsr   holoviews.core.spacesr   holoviews.element.rasterr   holoviews.plotting.bokehr   	test_plotr
   r   r   r   r   r   <module>r      s              ! ! ! ! ! ! ) ) ) ) ) ) , , , , , , 6 6 6 6 6 6 4 4 4 4 4 4 4 4W< W< W< W< W<- W< W< W< W< W<r   