|  | import pytest | 
					
						
						|  |  | 
					
						
						|  | import gradio as gr | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | class TestTextbox: | 
					
						
						|  | def test_component_functions(self): | 
					
						
						|  | """ | 
					
						
						|  | Preprocess, postprocess, serialize, tokenize, get_config | 
					
						
						|  | """ | 
					
						
						|  | text_input = gr.Textbox() | 
					
						
						|  | assert text_input.preprocess("Hello World!") == "Hello World!" | 
					
						
						|  | assert text_input.postprocess("Hello World!") == "Hello World!" | 
					
						
						|  | assert text_input.postprocess(None) is None | 
					
						
						|  | assert text_input.postprocess("Ali") == "Ali" | 
					
						
						|  | assert text_input.postprocess(2) == "2" | 
					
						
						|  | assert text_input.postprocess(2.14) == "2.14" | 
					
						
						|  | assert text_input.get_config() == { | 
					
						
						|  | "lines": 1, | 
					
						
						|  | "max_lines": 20, | 
					
						
						|  | "placeholder": None, | 
					
						
						|  | "value": None, | 
					
						
						|  | "name": "textbox", | 
					
						
						|  | "show_copy_button": False, | 
					
						
						|  | "show_label": True, | 
					
						
						|  | "type": "text", | 
					
						
						|  | "label": None, | 
					
						
						|  | "container": True, | 
					
						
						|  | "min_width": 160, | 
					
						
						|  | "scale": None, | 
					
						
						|  | "elem_id": None, | 
					
						
						|  | "elem_classes": [], | 
					
						
						|  | "visible": True, | 
					
						
						|  | "interactive": None, | 
					
						
						|  | "proxy_url": None, | 
					
						
						|  | "rtl": False, | 
					
						
						|  | "text_align": None, | 
					
						
						|  | "autofocus": False, | 
					
						
						|  | "_selectable": False, | 
					
						
						|  | "key": None, | 
					
						
						|  | "info": None, | 
					
						
						|  | "autoscroll": True, | 
					
						
						|  | "max_length": None, | 
					
						
						|  | "submit_btn": False, | 
					
						
						|  | "stop_btn": False, | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  | @pytest.mark.asyncio | 
					
						
						|  | async def test_in_interface_as_input(self): | 
					
						
						|  | """ | 
					
						
						|  | Interface, process | 
					
						
						|  | """ | 
					
						
						|  | iface = gr.Interface(lambda x: x[::-1], "textbox", "textbox") | 
					
						
						|  | assert iface("Hello") == "olleH" | 
					
						
						|  |  | 
					
						
						|  | def test_in_interface_as_output(self): | 
					
						
						|  | """ | 
					
						
						|  | Interface, process | 
					
						
						|  |  | 
					
						
						|  | """ | 
					
						
						|  | iface = gr.Interface(lambda x: x[-1], "textbox", gr.Textbox()) | 
					
						
						|  | assert iface("Hello") == "o" | 
					
						
						|  | iface = gr.Interface(lambda x: x / 2, "number", gr.Textbox()) | 
					
						
						|  | assert iface(10) == "5.0" | 
					
						
						|  |  | 
					
						
						|  | def test_static(self): | 
					
						
						|  | """ | 
					
						
						|  | postprocess | 
					
						
						|  | """ | 
					
						
						|  | component = gr.Textbox("abc") | 
					
						
						|  | assert component.get_config().get("value") == "abc" | 
					
						
						|  |  | 
					
						
						|  | def test_override_template(self): | 
					
						
						|  | """ | 
					
						
						|  | override template | 
					
						
						|  | """ | 
					
						
						|  | component = gr.TextArea(value="abc") | 
					
						
						|  | assert component.get_config().get("value") == "abc" | 
					
						
						|  | assert component.get_config().get("lines") == 7 | 
					
						
						|  | component = gr.TextArea(value="abc", lines=4) | 
					
						
						|  | assert component.get_config().get("value") == "abc" | 
					
						
						|  | assert component.get_config().get("lines") == 4 | 
					
						
						|  |  | 
					
						
						|  | def test_faulty_type(self): | 
					
						
						|  | with pytest.raises( | 
					
						
						|  | ValueError, match='`type` must be one of "text", "password", or "email".' | 
					
						
						|  | ): | 
					
						
						|  | gr.Textbox(type="boo") | 
					
						
						|  |  | 
					
						
						|  | def test_max_lines(self): | 
					
						
						|  | assert gr.Textbox(type="password").get_config().get("max_lines") == 1 | 
					
						
						|  | assert gr.Textbox(type="email").get_config().get("max_lines") == 1 | 
					
						
						|  | assert gr.Textbox(type="text").get_config().get("max_lines") == 20 | 
					
						
						|  | assert gr.Textbox().get_config().get("max_lines") == 20 | 
					
						
						|  |  |