Source code for standard_names.tests.test_io
#!/usr/bin/env python
"""Unit tests for standard_names.io module."""
from six.moves import StringIO
from standard_names import StandardName, BadNameError
from standard_names.utilities import from_model_file
_SINGLE_MODEL_FILE_STREAM = StringIO(
"""
%YAML 1.2
---
model name: topoflow
exchange items:
- air__density
- air__emissivity
..."""
)
_MULTIPLE_MODEL_FILE_STREAM = StringIO(
"""
%YAML 1.2
---
model name: topoflow
exchange items:
- air__density
- air__emissivity
---
model name: sedflux
exchange items:
- air__density
- water__temperature
..."""
)
_SINGLE_MODEL_FILE_STREAM_WITH_INTENT = StringIO(
"""
%YAML 1.2
---
model name: topoflow
exchange items:
input:
- air__density
output:
- air__density
- air__emissivity
..."""
)
[docs]def test_from_model_file():
"""Read from a YAML model file that contains one model."""
names = from_model_file(_SINGLE_MODEL_FILE_STREAM)
assert "air__density" in names
assert "air__emissivity" in names
assert len(names) == 2
[docs]def test_from_multiple_model_file():
"""Read from a YAML model file that contains multiple models."""
names = from_model_file(_MULTIPLE_MODEL_FILE_STREAM)
assert "air__density" in names
assert "air__emissivity" in names
assert "water__temperature" in names
assert len(names) == 3
[docs]def test_from_model_file_with_intent():
"""
Read from a YAML model file that contains one model but that indicates
intent of variables.
"""
names = from_model_file(_SINGLE_MODEL_FILE_STREAM_WITH_INTENT)
assert "air__density" in names
assert "air__emissivity" in names
assert len(names) == 2