| import gradio as gr | |
| class TestNumber: | |
| def test_component_functions(self): | |
| """ | |
| Preprocess, postprocess, serialize, get_config | |
| """ | |
| numeric_input = gr.Number(elem_id="num", elem_classes="first") | |
| assert numeric_input.preprocess(3) == 3.0 | |
| assert numeric_input.preprocess(None) is None | |
| assert numeric_input.postprocess(3) == 3 | |
| assert numeric_input.postprocess(3) == 3.0 | |
| assert numeric_input.postprocess(2.14) == 2.14 | |
| assert numeric_input.postprocess(None) is None | |
| assert numeric_input.get_config() == { | |
| "value": None, | |
| "name": "number", | |
| "show_label": True, | |
| "step": 1, | |
| "label": None, | |
| "minimum": None, | |
| "maximum": None, | |
| "container": True, | |
| "min_width": 160, | |
| "scale": None, | |
| "elem_id": "num", | |
| "elem_classes": ["first"], | |
| "visible": True, | |
| "interactive": None, | |
| "proxy_url": None, | |
| "info": None, | |
| "precision": None, | |
| "_selectable": False, | |
| "key": None, | |
| } | |
| def test_component_functions_integer(self): | |
| """ | |
| Preprocess, postprocess, serialize, get_template_context | |
| """ | |
| numeric_input = gr.Number(precision=0, value=42) | |
| assert numeric_input.preprocess(3) == 3 | |
| assert numeric_input.preprocess(None) is None | |
| assert numeric_input.postprocess(3) == 3 | |
| assert numeric_input.postprocess(3) == 3 | |
| assert numeric_input.postprocess(2.85) == 3 | |
| assert numeric_input.postprocess(None) is None | |
| assert numeric_input.get_config() == { | |
| "value": 42, | |
| "name": "number", | |
| "show_label": True, | |
| "step": 1, | |
| "label": None, | |
| "minimum": None, | |
| "maximum": None, | |
| "container": True, | |
| "min_width": 160, | |
| "scale": None, | |
| "elem_id": None, | |
| "elem_classes": [], | |
| "visible": True, | |
| "interactive": None, | |
| "proxy_url": None, | |
| "info": None, | |
| "precision": 0, | |
| "_selectable": False, | |
| "key": None, | |
| } | |
| def test_component_functions_precision(self): | |
| """ | |
| Preprocess, postprocess, serialize, get_template_context | |
| """ | |
| numeric_input = gr.Number(precision=2, value=42.3428) | |
| assert numeric_input.preprocess(3.231241) == 3.23 | |
| assert numeric_input.preprocess(None) is None | |
| assert numeric_input.postprocess(-42.1241) == -42.12 | |
| assert numeric_input.postprocess(5.6784) == 5.68 | |
| assert numeric_input.postprocess(2.1421) == 2.14 | |
| assert numeric_input.postprocess(None) is None | |
| def test_precision_none_with_integer(self): | |
| """ | |
| Preprocess, postprocess | |
| """ | |
| numeric_input = gr.Number(precision=None) | |
| assert numeric_input.preprocess(5) == 5 | |
| assert isinstance(numeric_input.preprocess(5), int) | |
| assert numeric_input.postprocess(5) == 5 | |
| assert isinstance(numeric_input.postprocess(5), int) | |
| def test_precision_none_with_float(self): | |
| """ | |
| Preprocess, postprocess | |
| """ | |
| numeric_input = gr.Number(value=5.5, precision=None) | |
| assert numeric_input.preprocess(5.5) == 5.5 | |
| assert isinstance(numeric_input.preprocess(5.5), float) | |
| assert numeric_input.postprocess(5.5) == 5.5 | |
| assert isinstance(numeric_input.postprocess(5.5), float) | |
| def test_in_interface_as_input(self): | |
| """ | |
| Interface, process | |
| """ | |
| iface = gr.Interface(lambda x: x**2, "number", "textbox") | |
| assert iface(2) == "4" | |
| def test_precision_0_in_interface(self): | |
| """ | |
| Interface, process | |
| """ | |
| iface = gr.Interface(lambda x: x**2, gr.Number(precision=0), "textbox") | |
| assert iface(2) == "4" | |
| def test_in_interface_as_output(self): | |
| """ | |
| Interface, process | |
| """ | |
| iface = gr.Interface(lambda x: int(x) ** 2, "textbox", "number") | |
| assert iface(2) == 4.0 | |
| def test_static(self): | |
| """ | |
| postprocess | |
| """ | |
| component = gr.Number() | |
| assert component.get_config().get("value") is None | |
| component = gr.Number(3) | |
| assert component.get_config().get("value") == 3.0 | |