-
Notifications
You must be signed in to change notification settings - Fork 26
/
test_yamldecoder.py
57 lines (44 loc) · 2.13 KB
/
test_yamldecoder.py
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
from easyvvuq.decoders.yaml import YAMLDecoder
import os
import numpy as np
import pytest
@pytest.mark.parametrize("keys, vals", [
(['a'], [0.0]), # single scalar
(['a', 'b', 'c'], [0.0, 1.0, 2.0]), # multiple scalar
(['d'], [[1.0, 2.0, 3.0]]), # single vector
(['d', 'e'], [[1.0, 2.0, 3.0], [0.0, 1.0, 2.0]]), # multiple vector
(['a', 'b', 'd', 'e'], [0.0, 1.0, [1.0, 2.0, 3.0], [0.0, 1.0, 2.0]]),
])
def test_yamldecoder_data(keys, vals):
decoder = YAMLDecoder(os.path.join('yamldecoder', 'test.yml'), keys)
run_info = {'run_dir': 'tests'}
data = decoder.parse_sim_output(run_info)
for k, v in zip(keys, vals):
assert((data[k] == np.array([v])).all().all())
def test_yaml_nested():
decoder = YAMLDecoder(os.path.join('yamldecoder', 'nested.yml'),
[['root1', 'node1', 'leaf1'], ['root1', 'leaf2'], 'leaf3'])
run_info = {'run_dir': 'tests'}
data = decoder.parse_sim_output(run_info)
assert((data['root1.node1.leaf1'] == np.array([0.33])).all().all())
assert((data['root1.leaf2'] == np.array([0.32])).all().all())
assert((data['leaf3'] == np.array([0.2, 0.3])).all().all())
def test_get_restart_dict():
decoder = YAMLDecoder('nested.yml',
[['root1', 'node1', 'leaf1'], ['root1', 'leaf2'], 'leaf3'])
restart_dict = decoder.get_restart_dict()
assert(restart_dict['target_filename'] == 'nested.yml')
assert(restart_dict['output_columns'] ==
[['root1', 'node1', 'leaf1'], ['root1', 'leaf2'], 'leaf3'])
def test_sim_complete():
decoder = YAMLDecoder('nested.yml',
[['root1', 'node1', 'leaf1'], ['root1', 'leaf2'], 'leaf3'])
assert(decoder.sim_complete({'run_dir': os.path.join('tests', 'yamldecoder')}))
def test_init_exception():
with pytest.raises(RuntimeError):
YAMLDecoder(None, output_columns=[['root1', 'node1', 'leaf1'],
['root1', 'leaf2'], 'leaf3'])
with pytest.raises(RuntimeError):
YAMLDecoder('yamldecoder/nested.yaml', None)
with pytest.raises(RuntimeError):
YAMLDecoder('yamldecoder/nested.yaml', None)