def test_float_inputs(self, single_plot_page: SinglePlotPage) -> None: values_to_enter = [ "0", "1", "-1", "+5", "0.1", "-0.1", "+0.1", "-.1", "+.1", "1e-6", "1.e5", "-1e+3", "-1.e-5", "a" ] expected_results = [ 0, 1, -1, 5, 0.1, -0.1, 0.1, -0.1, 0.1, 1e-6, 10, -1e3, -1e-5, None ] source = ColumnDataSource(dict(x=[1, 2], y=[1, 1])) plot = Plot(height=400, width=400, x_range=Range1d(0, 1), y_range=Range1d(0, 1), min_border=0) plot.add_glyph(source, Circle(x='x', y='y', size=20)) num_input = NumericInput(high=10, mode="float") num_input.js_on_change('value', CustomJS(code=RECORD("value", "cb_obj.value"))) page = single_plot_page(column(num_input, plot)) el = find_element_for(page.driver, num_input, "input") for val, res in zip(values_to_enter, expected_results): el.clear() enter_text_in_element(page.driver, el, val) results = page.results assert results['value'] == res
def test_js_on_change_executes(self, single_plot_page: SinglePlotPage) -> None: source = ColumnDataSource(dict(x=[1, 2], y=[1, 1])) plot = Plot(height=400, width=400, x_range=Range1d(0, 1), y_range=Range1d(0, 1), min_border=0) plot.add_glyph(source, Circle(x='x', y='y', size=20)) num_input = NumericInput() num_input.js_on_change('value', CustomJS(code=RECORD("value", "cb_obj.value"))) page = single_plot_page(column(num_input, plot)) el = find_element_for(page.driver, num_input, "input") enter_text_in_element(page.driver, el, "10") results = page.results assert results['value'] == 10 # double click to highlight and overwrite old text enter_text_in_element(page.driver, el, "20", click=2) results = page.results assert results['value'] == 20 # Check clicking outside input also triggers enter_text_in_element(page.driver, el, "30", click=2, enter=False) page.click_canvas_at_position(plot, 10, 10) results = page.results assert results['value'] == 30 assert page.has_no_console_errors()
def test_low_high(self, single_plot_page: SinglePlotPage) -> None: source = ColumnDataSource(dict(x=[1, 2], y=[1, 1])) plot = Plot(height=400, width=400, x_range=Range1d(0, 1), y_range=Range1d(0, 1), min_border=0) plot.add_glyph(source, Circle(x='x', y='y', size=20)) num_input = NumericInput(value=4, low=-1, high=10) num_input.js_on_change('value', CustomJS(code=RECORD("value", "cb_obj.value"))) page = single_plot_page(column(num_input, plot)) el = find_element_for(page.driver, num_input, "input") assert el.get_attribute('value') == "4" enter_text_in_element(page.driver, el, "30", click=2) assert el.get_attribute('value') == "10" enter_text_in_element(page.driver, el, "-10", click=2) assert el.get_attribute('value') == "-1"