def test_area_selection_categorical(self): area = Area((['B', 'A', 'C', 'D', 'E'], [3, 2, 1, 3, 4])) expr, bbox, region = area._get_selection_expr_for_stream_value( bounds=(0, 1, 2, 3), x_selection=['B', 'A', 'C'] ) self.assertEqual(bbox, {'x': ['B', 'A', 'C']}) self.assertEqual(expr.apply(area), np.array([True, True, True, False, False])) self.assertEqual(region, NdOverlay({0: VSpan(0, 2)}))
def test_area_selection_numeric_index_cols(self): area = Area([3, 2, 1, 3, 2]) expr, bbox, region = area._get_selection_expr_for_stream_value( bounds=(1, 0, 3, 2), index_cols=['y'] ) self.assertEqual(bbox, {'x': (1, 3)}) self.assertEqual(expr.apply(area), np.array([False, True, True, False, True])) self.assertEqual(region, None)
def test_area_selection_numeric_inverted(self): area = Area([3, 2, 1, 3, 4]).opts(invert_axes=True) expr, bbox, region = area._get_selection_expr_for_stream_value( bounds=(0, 1, 2, 3)) self.assertEqual(bbox, {'x': (1, 3)}) self.assertEqual(expr.apply(area), np.array([False, True, True, True, False])) self.assertEqual(region, NdOverlay({0: HSpan(1, 3)}))