|
|
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 |
|
|
|