from pathlib import Path from src.gui.config_panel import experiment_overrides,validate_experiment_request from src.gui.gui_models import GuiExperimentRequest CONFIG=str(Path(__file__).parents[1]/"config"/"experiment.yaml") def request(**values):return GuiExperimentRequest(config_path=CONFIG,**values) def test_invalid_numeric_fields()->None: assert not validate_experiment_request(request(camera_index=-1)).valid assert not validate_experiment_request(request(voice_volume=1.1)).valid assert not validate_experiment_request(request(face_every=0)).valid assert not validate_experiment_request(request(max_face_persons=0)).valid def test_video_requires_existing_path()->None:assert not validate_experiment_request(request(input_type="video")).valid def test_prompt_without_audio_is_warning()->None: result=validate_experiment_request(request(voice_mode="prompt"));assert result.valid and result.warnings def test_valid_request_and_overrides()->None: r=request(voice_mode="control",signage_yaw_direction="negative");assert validate_experiment_request(r).valid values=experiment_overrides(r);assert values["voice_prompt"]["mode"]=="control" and values["turn_detection"]["signage_yaw_direction"]=="negative"