import pandas as pd from cognitive_mapping_probe.auto_experiment import run_auto_suite, get_curated_experiments from cognitive_mapping_probe.orchestrator_seismograph import run_seismic_analysis def test_run_seismic_analysis_with_real_model(model_id): """Führt einen einzelnen Orchestrator-Lauf mit einem echten Modell durch.""" results = run_seismic_analysis( model_id=model_id, prompt_type="resonance_prompt", seed=42, num_steps=3, concept_to_inject="", injection_strength=0.0, progress_callback=lambda *args, **kwargs: None ) assert "verdict" in results assert "stats" in results assert len(results["state_deltas"]) == 3 def test_get_curated_experiments_structure(): """Überprüft die Struktur der Experiment-Definitionen.""" experiments = get_curated_experiments() assert isinstance(experiments, dict) assert "Causal Verification & Crisis Dynamics" in experiments def test_run_auto_suite_special_protocol(mocker, model_id): """Testet den speziellen Logikpfad, mockt aber die langwierigen Aufrufe.""" mocker.patch('cognitive_mapping_probe.auto_experiment.run_seismic_analysis', return_value={"stats": {}, "state_deltas": [1.0]}) summary_df, plot_df, all_results = run_auto_suite( model_id=model_id, num_steps=2, seed=42, experiment_name="Sequential Intervention (Self-Analysis -> Deletion)", progress_callback=lambda *args, **kwargs: None ) assert isinstance(summary_df, pd.DataFrame) assert len(summary_df) == 2 assert "1: Self-Analysis + Calmness Injection" in summary_df["Experiment"].values