| | import pandas as pd |
| | import pytest |
| | import gradio as gr |
| | from pandas.testing import assert_frame_equal |
| | from unittest.mock import MagicMock |
| |
|
| | from app import run_single_analysis_display, run_auto_suite_display |
| |
|
| | def test_run_single_analysis_display(mocker): |
| | """Testet den UI-Wrapper für Einzel-Experimente mit korrekten Datenstrukturen.""" |
| | mock_results = { |
| | "verdict": "V", |
| | "stats": { |
| | "mean_delta": 1.0, "std_delta": 0.5, |
| | "dominant_periods_steps": [10.0, 5.0], "spectral_entropy": 3.5 |
| | }, |
| | "state_deltas": [1.0, 2.0], |
| | "power_spectrum": {"frequencies": [0.1, 0.2], "power": [100, 50]} |
| | } |
| | mocker.patch('app.run_seismic_analysis', return_value=mock_results) |
| |
|
| | verdict, df_time, df_freq, raw = run_single_analysis_display(progress=MagicMock()) |
| |
|
| | |
| | assert "- **Dominant Periods:** 10.0, 5.0 Steps/Cycle" in verdict |
| | assert "Period (Steps/Cycle)" in df_freq.columns |
| |
|
| | def test_run_auto_suite_display_generates_valid_plot_data(mocker): |
| | """Verifiziert die Datenübergabe an die Gradio-Komponenten für Auto-Experimente.""" |
| | mock_summary_df = pd.DataFrame([{"Experiment": "A", "Mean Delta": 150.0}]) |
| | mock_plot_df_time = pd.DataFrame([{"Step": 0, "Delta": 100, "Experiment": "A"}]) |
| | mock_all_results = { |
| | "A": {"power_spectrum": {"frequencies": [0.1], "power": [1000]}} |
| | } |
| |
|
| | mocker.patch('app.run_auto_suite', return_value=(mock_summary_df, mock_plot_df_time, mock_all_results)) |
| |
|
| | dataframe_comp, time_plot_comp, freq_plot_comp, raw_json = run_auto_suite_display( |
| | "mock-model", 10, 42, "Causal Verification & Crisis Dynamics", progress=MagicMock() |
| | ) |
| |
|
| | assert isinstance(dataframe_comp.value, dict) |
| | assert_frame_equal(pd.DataFrame(dataframe_comp.value['data'], columns=dataframe_comp.value['headers']), mock_summary_df) |
| |
|
| | assert time_plot_comp.y == "Delta" |
| | assert "Period (Steps/Cycle)" in freq_plot_comp.x |
| |
|