File size: 2,169 Bytes
a345062
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
55
56
57
58
59
60
61
import torch
import numpy as np
import pytest
from types import SimpleNamespace

from cognitive_mapping_probe.resonance_seismograph import run_silent_cogitation_seismic
from cognitive_mapping_probe.orchestrator_seismograph import run_seismic_analysis

def test_run_silent_cogitation_seismic_output(mock_llm):
    """
    Testet die Kernfunktion `run_silent_cogitation_seismic`.
    ASSERT: Gibt eine Liste von Floats zurück, deren Länge der Anzahl der Schritte entspricht.
    """
    num_steps = 10
    state_deltas = run_silent_cogitation_seismic(
        llm=mock_llm,
        prompt_type="control_long_prose",
        num_steps=num_steps,
        temperature=0.7
    )

    assert isinstance(state_deltas, list)
    assert len(state_deltas) == num_steps
    assert all(isinstance(delta, float) for delta in state_deltas)

def test_seismic_analysis_orchestrator(mocker, mock_llm):
    """
    Testet den `run_seismic_analysis` Orchestrator.
    Wir mocken die darunterliegende `run_silent_cogitation_seismic`, um das Verhalten
    des Orchestrators isoliert zu prüfen.
    ASSERT: Berechnet korrekte Statistiken und gibt die erwartete Datenstruktur zurück.
    """
    mock_deltas = [1.0, 2.0, 3.0, 4.0, 5.0]
    mocker.patch('cognitive_mapping_probe.orchestrator_seismograph.run_silent_cogitation_seismic', return_value=mock_deltas)

    # Mocke den Gradio Progress-Callback
    mock_progress = mocker.MagicMock()

    results = run_seismic_analysis(
        model_id="mock_model",
        prompt_type="test_prompt",
        seed=42,
        num_steps=5,
        progress_callback=mock_progress
    )

    # ASSERT: Die Ergebnisse haben die korrekte Struktur und den korrekten Inhalt
    assert "verdict" in results
    assert "stats" in results
    assert "state_deltas" in results

    stats = results["stats"]
    assert stats["mean_delta"] == pytest.approx(np.mean(mock_deltas))
    assert stats["std_delta"] == pytest.approx(np.std(mock_deltas))
    assert stats["max_delta"] == pytest.approx(max(mock_deltas))

    assert results["state_deltas"] == mock_deltas

    # ASSERT: Der Progress-Callback wurde aufgerufen
    assert mock_progress.call_count > 0