forked from CADLabs/radCAD
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_hooks.py
More file actions
62 lines (56 loc) · 1.96 KB
/
Copy pathtest_hooks.py
File metadata and controls
62 lines (56 loc) · 1.96 KB
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
from radcad import Model, Simulation, Experiment
from tests.test_cases import basic
def test_hooks(capsys):
states = basic.states
state_update_blocks = basic.state_update_blocks
params = params = {
'a': [1,2],
'b': [1]
}
TIMESTEPS = 1
RUNS = 2
model = Model(initial_state=states, state_update_blocks=state_update_blocks, params=params)
simulation = Simulation(model=model, timesteps=TIMESTEPS, runs=RUNS)
experiment = Experiment(simulations=[simulation, simulation])
experiment.before_experiment = lambda experiment=None: print(f'before_experiment')
experiment.before_simulation = lambda simulation=None: print(f'before_simulation {simulation.index}')
experiment.before_run = lambda context=None: print(f'before_run {context.run}')
experiment.before_subset = lambda context=None: print(f'before_subset {context.subset}')
experiment.after_subset = lambda context=None: print(f'after_subset {context.subset}')
experiment.after_run = lambda context=None: print(f'after_run {context.run}')
experiment.after_simulation = lambda simulation=None: print(f'after_simulation {simulation.index}')
experiment.after_experiment = lambda experiment=None: print(f'after_experiment')
experiment.run()
captured = capsys.readouterr()
assert captured.out.replace('\n', '').replace(' ', '') == """
before_experiment
before_simulation 0
before_run 0
before_subset 0
after_subset 0
before_subset 1
after_subset 1
after_run 0
before_run 1
before_subset 0
after_subset 0
before_subset 1
after_subset 1
after_run 1
after_simulation 0
before_simulation 1
before_run 0
before_subset 0
after_subset 0
before_subset 1
after_subset 1
after_run 0
before_run 1
before_subset 0
after_subset 0
before_subset 1
after_subset 1
after_run 1
after_simulation 1
after_experiment
""".replace('\n', '').replace(' ', '')