def test_set_widgets(document, comm): class Test(param.Parameterized): a = param.Number(default=1, bounds=(0, 10), precedence=1) b = param.String(default='A', precedence=2) pane = Param(Test()) model = pane.get_root(document, comm=comm) assert len(model.children) == 3 title, slider, text = model.children assert isinstance(title, Div) assert isinstance(slider, Slider) assert isinstance(text, TextInput) pane.widgets = {'a': LiteralInput(value=1, type=(float, int))} assert len(model.children) == 3 title, number, text = model.children assert isinstance(title, Div) assert isinstance(number, TextInput) assert isinstance(text, TextInput) pane.widgets = {'a': {'height': 100}} assert len(model.children) == 3 title, number, text = model.children assert isinstance(title, Div) assert isinstance(number, Slider) assert number.height == 100 assert isinstance(text, TextInput) pane.widgets = {'a': {'type': LiteralInput, 'height': 100}} assert len(model.children) == 3 title, number, text = model.children assert isinstance(title, Div) assert isinstance(number, TextInput) assert number.height == 100 assert isinstance(text, TextInput)
def test_set_widgets_throttled(document, comm): class Test(param.Parameterized): a = param.Number(default=0, bounds=(0, 10), precedence=1) test = Test() pane = Param(test) model = pane.get_root(document, comm=comm) pane.widgets = {"a": {"throttled": False}} assert len(model.children) == 2 _, number = model.children number.value = 1 assert number.value == 1 assert number.value_throttled != 1 assert test.a == 1 test.a = 2 assert number.value == 2 assert number.value_throttled != 2 assert test.a == 2 # By setting throttled to true, # `test.a` is linked to `number.value_throttled` # instead of `number.value`. pane.widgets = {"a": {"throttled": True}} assert len(model.children) == 2 _, number = model.children number.value_throttled = 3 assert number.value != 3 assert number.value_throttled == 3 assert test.a == 3 test.a = 4 assert number.value != 4 assert number.value_throttled == 4 assert test.a == 4