|
@@ -4,17 +4,22 @@ import pytest
|
|
|
from ioex.calcex import Figure, UnitMismatchError
|
|
|
yaml = pytest.importorskip('yaml')
|
|
|
|
|
|
+
|
|
|
@pytest.mark.parametrize(('yaml_loader'), [yaml.Loader, yaml.SafeLoader])
|
|
|
@pytest.mark.parametrize(('figure_yaml', 'expected_figure'), [
|
|
|
['!fig {value: null, unit: null}', Figure()],
|
|
|
['!fig {value: 123.4, unit: null}', Figure(123.4)],
|
|
|
['!fig {value: [1, 2], unit: null}', Figure([1, 2])],
|
|
|
+ ['!fig {value: null, unit: kg}', Figure(unit='kg')],
|
|
|
+ ['!fig {value: 123.4, unit: km/h}', Figure(123.4, 'km/h')],
|
|
|
+ ['!fig {value: [1, 2], unit: km/h}', Figure([1, 2], 'km/h')],
|
|
|
])
|
|
|
def test_register_yaml_constructor(figure_yaml, expected_figure, yaml_loader):
|
|
|
class TestLoader(yaml_loader):
|
|
|
pass
|
|
|
- Figure.register_yaml_constructor(TestLoader, tag = '!fig')
|
|
|
- assert expected_figure == yaml.load(figure_yaml, Loader = TestLoader)
|
|
|
+ Figure.register_yaml_constructor(TestLoader, tag='!fig')
|
|
|
+ assert expected_figure == yaml.load(figure_yaml, Loader=TestLoader)
|
|
|
+
|
|
|
|
|
|
@pytest.mark.parametrize(('yaml_dumper'), [yaml.Dumper, yaml.SafeDumper])
|
|
|
@pytest.mark.parametrize(('figure'), [
|
|
@@ -32,12 +37,13 @@ def test_to_yaml(figure, yaml_dumper):
|
|
|
type(figure),
|
|
|
lambda d, f: figure.to_yaml(d, f, '!test-figure'))
|
|
|
figure_yaml = yaml.dump(figure, Dumper=TestDumper)
|
|
|
+
|
|
|
class TestLoader(yaml.SafeLoader):
|
|
|
pass
|
|
|
TestLoader.add_constructor(
|
|
|
'!test-figure',
|
|
|
lambda loader, node: loader.construct_mapping(node),
|
|
|
- )
|
|
|
+ )
|
|
|
figure_attr = yaml.load(figure_yaml, Loader=TestLoader)
|
|
|
assert set(['value', 'unit']) == set(figure_attr.keys())
|
|
|
assert figure.value == figure_attr['value']
|
|
@@ -53,12 +59,13 @@ def test_register_yaml_representer(figure, yaml_dumper):
|
|
|
pass
|
|
|
figure.register_yaml_representer(TestDumper)
|
|
|
figure_yaml = yaml.dump(figure, Dumper=TestDumper)
|
|
|
+
|
|
|
class TestLoader(yaml.SafeLoader):
|
|
|
pass
|
|
|
TestLoader.add_constructor(
|
|
|
'!figure',
|
|
|
lambda loader, node: loader.construct_mapping(node),
|
|
|
- )
|
|
|
+ )
|
|
|
figure_attr = yaml.load(figure_yaml, Loader=TestLoader)
|
|
|
assert set(['value', 'unit']) == set(figure_attr.keys())
|
|
|
assert figure.value == figure_attr['value']
|