示例#1
0
def test_rfc_3339_extended():
    text = "2016-10-06T12:34:56.123456+05:30"

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 6 == parsed.day
    assert 12 == parsed.hour
    assert 34 == parsed.minute
    assert 56 == parsed.second
    assert 123456 == parsed.microsecond
    assert 19800 == parsed.utcoffset().total_seconds()

    text = "2016-10-06T12:34:56.000123+05:30"

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 6 == parsed.day
    assert 12 == parsed.hour
    assert 34 == parsed.minute
    assert 56 == parsed.second
    assert 123 == parsed.microsecond
    assert 19800 == parsed.utcoffset().total_seconds()
示例#2
0
def test_ymd_hms():
    text = "2016-10-06 12:34:56"

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 6 == parsed.day
    assert 12 == parsed.hour
    assert 34 == parsed.minute
    assert 56 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "2016-10-06 12:34:56.123456"

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 6 == parsed.day
    assert 12 == parsed.hour
    assert 34 == parsed.minute
    assert 56 == parsed.second
    assert 123456 == parsed.microsecond
    assert parsed.tzinfo is None
示例#3
0
def test_iso8601_ordinal():
    text = "2012-007"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 1 == parsed.month
    assert 7 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "2012007"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 1 == parsed.month
    assert 7 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None
示例#4
0
def test_iso8601_ordinal():
    text = "2012-007"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 1 == parsed.month
    assert 7 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "2012007"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 1 == parsed.month
    assert 7 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None
示例#5
0
def test_rfc_3339_extended():
    text = "2016-10-06T12:34:56.123456+05:30"

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 6 == parsed.day
    assert 12 == parsed.hour
    assert 34 == parsed.minute
    assert 56 == parsed.second
    assert 123456 == parsed.microsecond
    assert 19800 == parsed.utcoffset().total_seconds()

    text = "2016-10-06T12:34:56.000123+05:30"

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 6 == parsed.day
    assert 12 == parsed.hour
    assert 34 == parsed.minute
    assert 56 == parsed.second
    assert 123 == parsed.microsecond
    assert 19800 == parsed.utcoffset().total_seconds()
示例#6
0
def test_ymd_hms():
    text = '2016-10-06 12:34:56'

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 6 == parsed.day
    assert 12 == parsed.hour
    assert 34 == parsed.minute
    assert 56 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = '2016-10-06 12:34:56.123456'

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 6 == parsed.day
    assert 12 == parsed.hour
    assert 34 == parsed.minute
    assert 56 == parsed.second
    assert 123456 == parsed.microsecond
    assert parsed.tzinfo is None
示例#7
0
def test_iso_8601_date():
    text = "2012"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 1 == parsed.month
    assert 1 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "2012-05-03"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 5 == parsed.month
    assert 3 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "20120503"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 5 == parsed.month
    assert 3 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "2012-05"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 5 == parsed.month
    assert 1 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None
示例#8
0
def test_iso8601_week_number_with_time():
    text = "2012-W05T09"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 1 == parsed.month
    assert 30 == parsed.day
    assert 9 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "2012W05T09"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 1 == parsed.month
    assert 30 == parsed.day
    assert 9 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "2012-W05-5T09"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 2 == parsed.month
    assert 3 == parsed.day
    assert 9 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "2012W055T09"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 2 == parsed.month
    assert 3 == parsed.day
    assert 9 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None
示例#9
0
def test_strict():
    text = "4 Aug 2015 - 11:20 PM"

    with pytest.raises(ParserError):
        parse(text)

    parsed = parse(text, strict=False)
    assert 2015 == parsed.year
    assert 8 == parsed.month
    assert 4 == parsed.day
    assert 23 == parsed.hour
    assert 20 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None
示例#10
0
def test_edge_cases():
    text = "2013-11-1"

    parsed = parse(text, strict=False)
    assert 2013 == parsed.year
    assert 11 == parsed.month
    assert 1 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "10-01-01"

    parsed = parse(text, strict=False)
    assert 2010 == parsed.year
    assert 1 == parsed.month
    assert 1 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "31-01-01"

    parsed = parse(text, strict=False)
    assert 2031 == parsed.year
    assert 1 == parsed.month
    assert 1 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "32-01-01"

    parsed = parse(text, strict=False)
    assert 2032 == parsed.year
    assert 1 == parsed.month
    assert 1 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None
示例#11
0
def test_exif_edge_case():
    text = "2016:12:26 15:45:28"

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 12 == parsed.month
    assert 26 == parsed.day
    assert 15 == parsed.hour
    assert 45 == parsed.minute
    assert 28 == parsed.second
示例#12
0
def test_iso8601_time():
    now = pendulum.datetime(2015, 11, 12)

    text = "201205"

    parsed = parse(text, now=now)

    assert 2015 == parsed.year
    assert 11 == parsed.month
    assert 12 == parsed.day
    assert 20 == parsed.hour
    assert 12 == parsed.minute
    assert 5 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "20:12:05"

    parsed = parse(text, now=now)

    assert 2015 == parsed.year
    assert 11 == parsed.month
    assert 12 == parsed.day
    assert 20 == parsed.hour
    assert 12 == parsed.minute
    assert 5 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "20:12:05.123456"

    parsed = parse(text, now=now)

    assert 2015 == parsed.year
    assert 11 == parsed.month
    assert 12 == parsed.day
    assert 20 == parsed.hour
    assert 12 == parsed.minute
    assert 5 == parsed.second
    assert 123456 == parsed.microsecond
    assert parsed.tzinfo is None
示例#13
0
def test_y():
    text = "2016"

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 1 == parsed.month
    assert 1 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None
示例#14
0
def test_ymd():
    text = '2016-10-06'

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 6 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None
示例#15
0
def test_rfc_3339():
    text = '2016-10-06T12:34:56+05:30'

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 6 == parsed.day
    assert 12 == parsed.hour
    assert 34 == parsed.minute
    assert 56 == parsed.second
    assert 0 == parsed.microsecond
    assert 19800 == parsed.utcoffset().total_seconds()
示例#16
0
def test_ymd_one_character():
    text = "2016-2-6"

    parsed = parse(text, strict=False)

    assert 2016 == parsed.year
    assert 2 == parsed.month
    assert 6 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None
示例#17
0
def test_exact():
    text = "2012"

    parsed = parse(text, exact=True)

    assert isinstance(parsed, datetime.date)
    assert 2012 == parsed.year
    assert 1 == parsed.month
    assert 1 == parsed.day

    text = "2012-03"

    parsed = parse(text, exact=True)

    assert isinstance(parsed, datetime.date)
    assert 2012 == parsed.year
    assert 3 == parsed.month
    assert 1 == parsed.day

    text = "2012-03-13"

    parsed = parse(text, exact=True)

    assert isinstance(parsed, datetime.date)
    assert 2012 == parsed.year
    assert 3 == parsed.month
    assert 13 == parsed.day

    text = "2012W055"

    parsed = parse(text, exact=True)

    assert isinstance(parsed, datetime.date)
    assert 2012 == parsed.year
    assert 2 == parsed.month
    assert 3 == parsed.day

    text = "2012007"

    parsed = parse(text, exact=True)

    assert isinstance(parsed, datetime.date)
    assert 2012 == parsed.year
    assert 1 == parsed.month
    assert 7 == parsed.day

    text = "20:12:05"

    parsed = parse(text, exact=True)

    assert isinstance(parsed, datetime.time)
    assert 20 == parsed.hour
    assert 12 == parsed.minute
    assert 5 == parsed.second
    assert 0 == parsed.microsecond
示例#18
0
def test_invalid():
    text = "201610T"

    with pytest.raises(ParserError):
        parse(text)

    text = "2012-W54"

    with pytest.raises(ParserError):
        parse(text)

    text = "2012-W13-8"

    with pytest.raises(ParserError):
        parse(text)

    # W53 in normal year (not long)
    text = "2017W53"

    with pytest.raises(ParserError):
        parse(text)
示例#19
0
def test_invalid():
    text = '201610T'

    with pytest.raises(ParserError):
        parse(text)

    text = '2012-W54'

    with pytest.raises(ParserError):
        parse(text)

    text = '2012-W13-8'

    with pytest.raises(ParserError):
        parse(text)
示例#20
0
def test_parse_duration():
    text = 'P2Y3M4DT5H6M7S'
    parsed = parse(text)

    assert parsed.years == 2
    assert parsed.months == 3
    assert parsed.weeks == 0
    assert parsed.remaining_days == 4
    assert parsed.hours == 5
    assert parsed.minutes == 6
    assert parsed.remaining_seconds == 7
    assert parsed.microseconds == 0

    text = 'P1Y2M3DT4H5M6.5S'
    parsed = parse(text)

    assert parsed.years == 1
    assert parsed.months == 2
    assert parsed.weeks == 0
    assert parsed.remaining_days == 3
    assert parsed.hours == 4
    assert parsed.minutes == 5
    assert parsed.remaining_seconds == 6
    assert parsed.microseconds == 500000

    text = 'P1Y2M3DT4H5M6,5S'
    parsed = parse(text)

    assert parsed.years == 1
    assert parsed.months == 2
    assert parsed.weeks == 0
    assert parsed.remaining_days == 3
    assert parsed.hours == 4
    assert parsed.minutes == 5
    assert parsed.remaining_seconds == 6
    assert parsed.microseconds == 500000

    text = 'P1Y2M3D'
    parsed = parse(text)

    assert parsed.years == 1
    assert parsed.months == 2
    assert parsed.weeks == 0
    assert parsed.remaining_days == 3
    assert parsed.hours == 0
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = 'P1Y2M3.5D'
    parsed = parse(text)

    assert parsed.years == 1
    assert parsed.months == 2
    assert parsed.weeks == 0
    assert parsed.remaining_days == 3
    assert parsed.hours == 12
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = 'P1Y2M3,5D'
    parsed = parse(text)

    assert parsed.years == 1
    assert parsed.months == 2
    assert parsed.weeks == 0
    assert parsed.remaining_days == 3
    assert parsed.hours == 12
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = 'PT4H54M6.5S'
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 0
    assert parsed.hours == 4
    assert parsed.minutes == 54
    assert parsed.remaining_seconds == 6
    assert parsed.microseconds == 500000

    text = 'PT4H54M6,5S'
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 0
    assert parsed.hours == 4
    assert parsed.minutes == 54
    assert parsed.remaining_seconds == 6
    assert parsed.microseconds == 500000

    text = 'P1Y'
    parsed = parse(text)

    assert parsed.years == 1
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 0
    assert parsed.hours == 0
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = 'P1.5Y'
    with pytest.raises(ParserError):
        parse(text)

    text = 'P1,5Y'
    with pytest.raises(ParserError):
        parse(text)

    text = 'P1M'
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 1
    assert parsed.weeks == 0
    assert parsed.remaining_days == 0
    assert parsed.hours == 0
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = 'P1.5M'
    with pytest.raises(ParserError):
        parse(text)

    text = 'P1,5M'
    with pytest.raises(ParserError):
        parse(text)

    text = 'P1W'
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 1
    assert parsed.remaining_days == 0
    assert parsed.hours == 0
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = 'P1.5W'
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 1
    assert parsed.remaining_days == 3
    assert parsed.hours == 12
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = 'P1,5W'
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 1
    assert parsed.remaining_days == 3
    assert parsed.hours == 12
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = 'P1D'
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 1
    assert parsed.hours == 0
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = 'P1.5D'
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 1
    assert parsed.hours == 12
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = 'P1,5D'
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 1
    assert parsed.hours == 12
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = 'PT1H'
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 0
    assert parsed.hours == 1
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = 'PT1.5H'
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 0
    assert parsed.hours == 1
    assert parsed.minutes == 30
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = 'PT1,5H'
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 0
    assert parsed.hours == 1
    assert parsed.minutes == 30
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0
示例#21
0
def test_parse_duration_no_operator():
    with pytest.raises(ParserError):
        parse('2Y3M4DT5H6M7S')
def test_parse_duration_fraction_only_allowed_on_last_component():
    with pytest.raises(ParserError):
        parse("P2Y3M4DT5.5H6M7S")
示例#23
0
def test_iso8601_ordinal_invalid():
    text = "2012-007-05"

    with pytest.raises(ParserError):
        parse(text)
示例#24
0
def test_parse_duration_fraction_only_allowed_on_last_component():
    with pytest.raises(ParserError):
        parse('P2Y3M4DT5.5H6M7S')
def test_parse_duration():
    text = "P2Y3M4DT5H6M7S"
    parsed = parse(text)

    assert parsed.years == 2
    assert parsed.months == 3
    assert parsed.weeks == 0
    assert parsed.remaining_days == 4
    assert parsed.hours == 5
    assert parsed.minutes == 6
    assert parsed.remaining_seconds == 7
    assert parsed.microseconds == 0

    text = "P1Y2M3DT4H5M6.5S"
    parsed = parse(text)

    assert parsed.years == 1
    assert parsed.months == 2
    assert parsed.weeks == 0
    assert parsed.remaining_days == 3
    assert parsed.hours == 4
    assert parsed.minutes == 5
    assert parsed.remaining_seconds == 6
    assert parsed.microseconds == 500000

    text = "P1Y2M3DT4H5M6,5S"
    parsed = parse(text)

    assert parsed.years == 1
    assert parsed.months == 2
    assert parsed.weeks == 0
    assert parsed.remaining_days == 3
    assert parsed.hours == 4
    assert parsed.minutes == 5
    assert parsed.remaining_seconds == 6
    assert parsed.microseconds == 500000

    text = "P1Y2M3D"
    parsed = parse(text)

    assert parsed.years == 1
    assert parsed.months == 2
    assert parsed.weeks == 0
    assert parsed.remaining_days == 3
    assert parsed.hours == 0
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = "P1Y2M3.5D"
    parsed = parse(text)

    assert parsed.years == 1
    assert parsed.months == 2
    assert parsed.weeks == 0
    assert parsed.remaining_days == 3
    assert parsed.hours == 12
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = "P1Y2M3,5D"
    parsed = parse(text)

    assert parsed.years == 1
    assert parsed.months == 2
    assert parsed.weeks == 0
    assert parsed.remaining_days == 3
    assert parsed.hours == 12
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = "PT4H54M6.5S"
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 0
    assert parsed.hours == 4
    assert parsed.minutes == 54
    assert parsed.remaining_seconds == 6
    assert parsed.microseconds == 500000

    text = "PT4H54M6,5S"
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 0
    assert parsed.hours == 4
    assert parsed.minutes == 54
    assert parsed.remaining_seconds == 6
    assert parsed.microseconds == 500000

    text = "P1Y"
    parsed = parse(text)

    assert parsed.years == 1
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 0
    assert parsed.hours == 0
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = "P1.5Y"
    with pytest.raises(ParserError):
        parse(text)

    text = "P1,5Y"
    with pytest.raises(ParserError):
        parse(text)

    text = "P1M"
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 1
    assert parsed.weeks == 0
    assert parsed.remaining_days == 0
    assert parsed.hours == 0
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = "P1.5M"
    with pytest.raises(ParserError):
        parse(text)

    text = "P1,5M"
    with pytest.raises(ParserError):
        parse(text)

    text = "P1W"
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 1
    assert parsed.remaining_days == 0
    assert parsed.hours == 0
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = "P1.5W"
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 1
    assert parsed.remaining_days == 3
    assert parsed.hours == 12
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = "P1,5W"
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 1
    assert parsed.remaining_days == 3
    assert parsed.hours == 12
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = "P1D"
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 1
    assert parsed.hours == 0
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = "P1.5D"
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 1
    assert parsed.hours == 12
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = "P1,5D"
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 1
    assert parsed.hours == 12
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = "PT1H"
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 0
    assert parsed.hours == 1
    assert parsed.minutes == 0
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = "PT1.5H"
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 0
    assert parsed.hours == 1
    assert parsed.minutes == 30
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0

    text = "PT1,5H"
    parsed = parse(text)

    assert parsed.years == 0
    assert parsed.months == 0
    assert parsed.weeks == 0
    assert parsed.remaining_days == 0
    assert parsed.hours == 1
    assert parsed.minutes == 30
    assert parsed.remaining_seconds == 0
    assert parsed.microseconds == 0
def test_parse_duration_no_operator():
    with pytest.raises(ParserError):
        parse("2Y3M4DT5H6M7S")
示例#27
0
def test_iso8601_week_number():
    text = '2012-W05'

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 1 == parsed.month
    assert 30 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = '2012W05'

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 1 == parsed.month
    assert 30 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = '2012-W05-5'

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 2 == parsed.month
    assert 3 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = '2012W055'

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 2 == parsed.month
    assert 3 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = '2009-W53-7'
    parsed = parse(text)

    assert 2010 == parsed.year
    assert 1 == parsed.month
    assert 3 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = '2009-W01-1'
    parsed = parse(text)

    assert 2008 == parsed.year
    assert 12 == parsed.month
    assert 29 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None
def test_parse_duration_invalid():
    with pytest.raises(ParserError):
        parse("P1Dasdfasdf")
示例#29
0
def test_parse_duration_weeks_combined():
    with pytest.raises(ParserError):
        parse('P1Y2W')
示例#30
0
def test_parse_duration_invalid_order():
    with pytest.raises(ParserError):
        parse('P1S')

    with pytest.raises(ParserError):
        parse('P1D1S')

    with pytest.raises(ParserError):
        parse('1Y2M3D1SPT1M')

    with pytest.raises(ParserError):
        parse('P1Y2M3D2MT1S')

    with pytest.raises(ParserError):
        parse('P2M3D1ST1Y1M')

    with pytest.raises(ParserError):
        parse('P1Y2M2MT3D1S')

    with pytest.raises(ParserError):
        parse('P1D1Y1M')

    with pytest.raises(ParserError):
        parse('PT1S1H')
def test_parse_duration_invalid_order():
    with pytest.raises(ParserError):
        parse("P1S")

    with pytest.raises(ParserError):
        parse("P1D1S")

    with pytest.raises(ParserError):
        parse("1Y2M3D1SPT1M")

    with pytest.raises(ParserError):
        parse("P1Y2M3D2MT1S")

    with pytest.raises(ParserError):
        parse("P2M3D1ST1Y1M")

    with pytest.raises(ParserError):
        parse("P1Y2M2MT3D1S")

    with pytest.raises(ParserError):
        parse("P1D1Y1M")

    with pytest.raises(ParserError):
        parse("PT1S1H")
示例#32
0
def test_iso8601_datetime():
    text = "2016-10-01T14"

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 1 == parsed.day
    assert 14 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "2016-10-01T14:30"

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 1 == parsed.day
    assert 14 == parsed.hour
    assert 30 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "20161001T14"

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 1 == parsed.day
    assert 14 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "20161001T1430"

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 1 == parsed.day
    assert 14 == parsed.hour
    assert 30 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "20161001T1430+0530"

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 1 == parsed.day
    assert 14 == parsed.hour
    assert 30 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert 19800 == parsed.utcoffset().total_seconds()

    text = "20161001T1430,4+0530"

    parsed = parse(text)

    assert 2016 == parsed.year
    assert 10 == parsed.month
    assert 1 == parsed.day
    assert 14 == parsed.hour
    assert 30 == parsed.minute
    assert 0 == parsed.second
    assert 400000 == parsed.microsecond
    assert 19800 == parsed.utcoffset().total_seconds()

    text = "2008-09-03T20:56:35.450686+01"

    parsed = parse(text)

    assert 2008 == parsed.year
    assert 9 == parsed.month
    assert 3 == parsed.day
    assert 20 == parsed.hour
    assert 56 == parsed.minute
    assert 35 == parsed.second
    assert 450686 == parsed.microsecond
    assert 3600 == parsed.utcoffset().total_seconds()
def test_parse_duration_weeks_combined():
    with pytest.raises(ParserError):
        parse("P1Y2W")
示例#34
0
def test_iso8601_week_number():
    text = "2012-W05"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 1 == parsed.month
    assert 30 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "2012W05"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 1 == parsed.month
    assert 30 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    # Long Year
    text = "2015W53"

    parsed = parse(text)

    assert 2015 == parsed.year
    assert 12 == parsed.month
    assert 28 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "2012-W05-5"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 2 == parsed.month
    assert 3 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "2012W055"

    parsed = parse(text)

    assert 2012 == parsed.year
    assert 2 == parsed.month
    assert 3 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "2009-W53-7"
    parsed = parse(text)

    assert 2010 == parsed.year
    assert 1 == parsed.month
    assert 3 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None

    text = "2009-W01-1"
    parsed = parse(text)

    assert 2008 == parsed.year
    assert 12 == parsed.month
    assert 29 == parsed.day
    assert 0 == parsed.hour
    assert 0 == parsed.minute
    assert 0 == parsed.second
    assert 0 == parsed.microsecond
    assert parsed.tzinfo is None
示例#35
0
def test_parse_duration_invalid_order():
    with pytest.raises(ParserError):
        parse("P1S")

    with pytest.raises(ParserError):
        parse("P1D1S")

    with pytest.raises(ParserError):
        parse("1Y2M3D1SPT1M")

    with pytest.raises(ParserError):
        parse("P1Y2M3D2MT1S")

    with pytest.raises(ParserError):
        parse("P2M3D1ST1Y1M")

    with pytest.raises(ParserError):
        parse("P1Y2M2MT3D1S")

    with pytest.raises(ParserError):
        parse("P1D1Y1M")

    with pytest.raises(ParserError):
        parse("PT1S1H")
示例#36
0
def test_parse_duration_invalid():
    with pytest.raises(ParserError):
        parse('P1Dasdfasdf')