File size: 2,968 Bytes
8489475
a345062
21e8595
a345062
 
8489475
a345062
8489475
c4c82ea
8489475
c4c82ea
8489475
c4c82ea
8489475
a345062
8489475
c4c82ea
 
 
8489475
c4c82ea
8489475
21e8595
8489475
 
 
 
 
c4c82ea
 
8489475
c4c82ea
 
8489475
 
c4c82ea
21e8595
8489475
 
 
 
21e8595
8489475
 
 
 
 
 
 
a345062
8489475
c4c82ea
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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