File size: 2,779 Bytes
0d4b28f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
62
63
64
65
66
67
import json
import sys
from types import SimpleNamespace
import pytest
from synapse.cli import main

def test_cli_help(capsys):
    with pytest.raises(SystemExit) as result: main(['--help'])
    assert result.value.code==0
    assert 'capabilities' in capsys.readouterr().out
    assert 'autoprogram' in capsys.readouterr().out or True

def test_cli_run_budget_rejected(monkeypatch,tmp_path,capsys):
    class Runtime:
        def __init__(self,*a,**kw): pass
        def step(self,*a,**kw): raise AssertionError('must reject before executing')
    monkeypatch.setitem(sys.modules,'synapse.runtime',SimpleNamespace(LabRuntime=Runtime))
    with pytest.raises(SystemExit) as result: main(['--output',str(tmp_path),'run','--steps','10001'])
    assert result.value.code==2
    assert 'steps must be' in capsys.readouterr().err

def test_cli_status_real(tmp_path,capsys):
    assert main(['--output',str(tmp_path),'--nodes','16','status'])==0
    data=json.loads(capsys.readouterr().out)
    assert data['steps']==0 and data['graph']['neurons']>0

def test_cli_autoprogram(tmp_path,capsys):
    assert main(['--output',str(tmp_path),'--nodes','16','autoprogram','--diagnostic-episodes','1','--eval-episodes','1'])==0
    data=json.loads(capsys.readouterr().out)
    assert data['status']=='ok'
    assert 'diagnosis' in data

def test_cli_transplant(tmp_path,capsys):
    assert main(['--output',str(tmp_path),'--nodes','16','transplant','--episodes','1'])==0
    data=json.loads(capsys.readouterr().out)
    assert data['status']=='ok'
    assert 'arms' in data

def test_cli_metamorphic_and_spectral(tmp_path,capsys):
    assert main(['--output',str(tmp_path),'--nodes','16','metamorphic'])==0
    data=json.loads(capsys.readouterr().out)
    assert data['status']=='ok'
    assert 'relations' in data

    assert main(['--output',str(tmp_path),'--nodes','16','spectral'])==0
    data_spec=json.loads(capsys.readouterr().out)
    assert 'eigenvalues' in data_spec
    assert 'projection' in data_spec

def test_cli_supermix_commands(tmp_path, capsys):
    assert main(['--output', str(tmp_path), '--nodes', '16', 'neurogenesis']) == 0
    data = json.loads(capsys.readouterr().out)
    assert 'active_synapses' in data

    assert main(['--output', str(tmp_path), '--nodes', '16', 'homeostasis']) == 0
    data = json.loads(capsys.readouterr().out)
    assert 'vitals' in data

    assert main(['--output', str(tmp_path), '--nodes', '16', 'mimomix']) == 0
    data = json.loads(capsys.readouterr().out)
    assert 'modification' in data and 'trace' in data

    assert main(['--output', str(tmp_path), '--nodes', '16', 'ecology', '--task', 'ecosystem']) == 0
    data = json.loads(capsys.readouterr().out)
    assert data['task'] == 'ecosystem'
    assert 'ambient_light' in data