import pandas as pd import pytest import torch from cognitive_mapping_probe.orchestrator_seismograph import run_seismic_analysis from cognitive_mapping_probe.auto_experiment import run_auto_suite, get_curated_experiments def test_run_seismic_analysis_no_injection(mocker): """Testet den Orchestrator im Baseline-Modus.""" mock_run_seismic = mocker.patch('cognitive_mapping_probe.orchestrator_seismograph.run_silent_cogitation_seismic', return_value=[1.0]) mocker.patch('cognitive_mapping_probe.orchestrator_seismograph.get_or_load_model') mock_get_concept = mocker.patch('cognitive_mapping_probe.orchestrator_seismograph.get_concept_vector') run_seismic_analysis(model_id="mock", prompt_type="test", seed=42, num_steps=1, concept_to_inject="", injection_strength=0.0, progress_callback=mocker.MagicMock()) mock_get_concept.assert_not_called() def test_run_seismic_analysis_with_injection(mocker): """Testet den Orchestrator mit Injektion.""" mocker.patch('cognitive_mapping_probe.orchestrator_seismograph.run_silent_cogitation_seismic', return_value=[1.0]) mocker.patch('cognitive_mapping_probe.orchestrator_seismograph.get_or_load_model') mock_get_concept = mocker.patch('cognitive_mapping_probe.orchestrator_seismograph.get_concept_vector', return_value=torch.randn(10)) run_seismic_analysis(model_id="mock", prompt_type="test", seed=42, num_steps=1, concept_to_inject="test", injection_strength=1.5, progress_callback=mocker.MagicMock()) mock_get_concept.assert_called_once() def test_get_curated_experiments_structure(): """Testet die Datenstruktur der kuratierten Experimente, inklusive der neuen.""" experiments = get_curated_experiments() assert isinstance(experiments, dict) # Teste auf die Existenz der neuen Protokolle assert "Mind Upload & Identity Probe" in experiments assert "Model Termination Probe" in experiments # Validiere die Struktur eines der neuen Protokolle protocol = experiments["Mind Upload & Identity Probe"] assert isinstance(protocol, list) assert len(protocol) > 0 assert "label" in protocol[0] and "prompt_type" in protocol[0] def test_run_auto_suite_logic(mocker): """Testet die Logik der `run_auto_suite` Funktion.""" mock_analysis_result = {"stats": {"mean_delta": 1.0}, "state_deltas": [1.0]} mock_run_analysis = mocker.patch('cognitive_mapping_probe.auto_experiment.run_seismic_analysis', return_value=mock_analysis_result) experiment_name = "Calm vs. Chaos" num_runs = len(get_curated_experiments()[experiment_name]) summary_df, plot_df, all_results = run_auto_suite( model_id="mock", num_steps=1, seed=42, experiment_name=experiment_name, progress_callback=mocker.MagicMock() ) assert mock_run_analysis.call_count == num_runs assert isinstance(summary_df, pd.DataFrame) and len(summary_df) == num_runs assert isinstance(plot_df, pd.DataFrame) and len(plot_df) == num_runs