1
0

test_duration_yaml.py 1.9 KB

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