123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- # -*- coding: utf-8 -*-
- import pytest
- from ioex.datetimeex import Duration
- @pytest.mark.parametrize(('init_kwargs'), [
- {'years': 0},
- {'years': 13},
- {'days': 0},
- {'days': 13},
- {'years': 1, 'days': 3},
- ])
- def test_init(init_kwargs):
- d = Duration(**init_kwargs)
- for attr in ['years', 'days']:
- if attr in init_kwargs:
- assert init_kwargs[attr] == getattr(d, attr)
- else:
- assert 0 == getattr(d, attr)
- def test_init_default():
- d = Duration()
- assert 0 == d.years
- assert 0 == d.days
- @pytest.mark.parametrize(('init_kwargs', 'exception_type'), [
- [{'years': -2}, ValueError],
- [{'years': '1'}, TypeError],
- [{'days': -2}, ValueError],
- [{'days': '1'}, TypeError],
- ])
- def test_init_fail(init_kwargs, exception_type):
- with pytest.raises(exception_type):
- Duration(**init_kwargs)
- @pytest.mark.parametrize(('years'), [
- 0,
- 13,
- ])
- def test_set_years(years):
- d = Duration()
- d.years = years
- assert d.years == years
- @pytest.mark.parametrize(('years', 'exception_type'), [
- [-2, ValueError],
- ['1', TypeError],
- ])
- def test_set_years_fail(years, exception_type):
- d = Duration()
- with pytest.raises(exception_type):
- d.years = years
- @pytest.mark.parametrize(('days'), [
- 0,
- 13,
- ])
- def test_set_days(days):
- d = Duration()
- d.days = days
- assert d.days == days
- @pytest.mark.parametrize(('days', 'exception_type'), [
- [-2, ValueError],
- ['1', TypeError],
- ])
- def test_set_days_fail(days, exception_type):
- d = Duration()
- with pytest.raises(exception_type):
- d.days = days
- @pytest.mark.parametrize(('init_params', 'iso'), [
- [{'years': 0}, 'P0Y'],
- [{'years': 30}, 'P30Y'],
- [{'years': 3}, 'P3Y'],
- [{'days': 30}, 'P30D'],
- [{'days': 3}, 'P3D'],
- [{'years': 10, 'days': 30}, 'P10Y30D'],
- ])
- def test_get_isoformat(init_params, iso):
- d = Duration(**init_params)
- assert d.isoformat == iso
- @pytest.mark.parametrize(('expected', 'source_iso'), [
- [Duration(years=0), 'P0Y'],
- [Duration(years=30), 'P30Y'],
- [Duration(years=3), 'P3Y'],
- [Duration(days=30), 'P30D'],
- [Duration(days=3), 'P3D'],
- [Duration(years=10, days=30), 'P10Y30D'],
- ])
- def test_from_iso(expected, source_iso):
- d = Duration.from_iso(source_iso)
- assert expected == d
- @pytest.mark.parametrize(('source_iso'), [
- 'Q0Y',
- '2017-05-19T20:02:22+02:00',
- ])
- def test_from_iso_fail(source_iso):
- with pytest.raises(ValueError):
- Duration.from_iso(source_iso)
- @pytest.mark.parametrize(('a', 'b'), [
- [Duration(), Duration(years=0, days=0)],
- [Duration(years=0), Duration(years=0)],
- [Duration(years=3), Duration(years=3)],
- [Duration(days=0), Duration(days=0)],
- [Duration(days=3), Duration(days=3)],
- [Duration(years=1, days=3), Duration(years=1, days=3)],
- ])
- def test_eq(a, b):
- assert a == b
- assert b == a
|