test_duration_yaml.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # -*- coding: utf-8 -*-
  2. import pytest
  3. import copy
  4. from ioex.datetimeex import Duration
  5. yaml = pytest.importorskip('yaml')
  6. @pytest.mark.parametrize(('loader'), [yaml.Loader, yaml.SafeLoader])
  7. @pytest.mark.parametrize(('expected_duration', 'yaml_string'), [
  8. [Duration(years = 0), '!duration\nyears: 0'],
  9. [Duration(years = 32), '!duration\nyears: 32'],
  10. [Duration(years = 0), '!duration\n{}'],
  11. [Duration(years = 0), '!duration {}'],
  12. ])
  13. def test_from_yaml(expected_duration, yaml_string, loader):
  14. loader_copy = copy.deepcopy(loader)
  15. Duration.register_yaml_constructor(loader_copy)
  16. loaded_duration = yaml.load(yaml_string, Loader = loader_copy)
  17. assert expected_duration == loaded_duration
  18. @pytest.mark.parametrize(('loader'), [yaml.Loader, yaml.SafeLoader])
  19. @pytest.mark.parametrize(('expected_duration', 'yaml_string', 'tag'), [
  20. [Duration(years = 2), '!dur\nyears: 2', '!dur'],
  21. [Duration(years = 0), '!duration_tag {}', '!duration_tag'],
  22. ])
  23. def test_from_yaml(expected_duration, yaml_string, tag, loader):
  24. loader_copy = copy.deepcopy(loader)
  25. Duration.register_yaml_constructor(loader_copy, tag = tag)
  26. loaded_duration = yaml.load(yaml_string, Loader = loader_copy)
  27. assert expected_duration == loaded_duration
  28. @pytest.mark.parametrize(('dumper'), [yaml.Dumper, yaml.SafeDumper])
  29. @pytest.mark.parametrize(('duration', 'yaml_string'), [
  30. [Duration(years = 0), '!duration {}\n'],
  31. [Duration(years = 32), '!duration\nyears: 32\n'],
  32. ])
  33. def test_to_yaml(duration, yaml_string, dumper):
  34. dumper_copy = copy.deepcopy(dumper)
  35. Duration.register_yaml_representer(dumper_copy)
  36. assert yaml.dump(duration, Dumper = dumper_copy, default_flow_style = False) == yaml_string