File: test_parse.py

package info (click to toggle)
prefixdate 0.5.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 120 kB
  • sloc: python: 266; makefile: 5
file content (63 lines) | stat: -rw-r--r-- 2,225 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import pytest
from datetime import datetime, timezone
from prefixdate import parse, normalize_date, parse_parts, Precision


def test_normalize():
    assert normalize_date(None) is None
    assert normalize_date("2001") == "2001"
    assert normalize_date("27171") is None
    assert normalize_date(2001) == "2001"
    assert normalize_date(201) is None

    assert normalize_date("2001-01-") == "2001-01"
    assert normalize_date("2001-1") == "2001-01"
    assert normalize_date("2001-W19") == "2001"
    assert normalize_date("2001-05-18") == "2001-05-18"
    assert normalize_date("2001-02-31") is None
    assert normalize_date("2001-05-18", Precision.YEAR) == "2001"
    text = "2021-07-01T13:43:22.175889+00:00"
    assert normalize_date(text, Precision.MINUTE) == "2021-07-01T13:43"
    text = "2021-07-01T13:43:22.175889+06:00"
    assert normalize_date(text, Precision.MINUTE) == "2021-07-01T07:43"
    text = "2021-07-01T13:43:22.175889-08:45"
    assert normalize_date(text, Precision.MINUTE) == "2021-07-01T22:28"

    prefix = parse("2017-5-2T10:00:00")
    assert prefix.text == "2017-05-02T10:00:00"
    assert prefix == "2017-05-02T10:00:00"
    assert prefix.precision == Precision.SECOND
    prefix = parse("2017-5-2T10:00")
    assert prefix.precision == Precision.MINUTE

    text = "2017-04-04T10:30:29"
    prefix = parse(text)
    assert prefix.text == text
    assert prefix.precision == Precision.SECOND

    now = datetime.now(timezone.utc)
    assert parse(now).dt == now
    assert parse(now.date()).text == now.date().isoformat()
    assert str(parse(2001)) == "2001"
    assert repr(parse(2001)) == "<DatePrefix('2001', %r)>" % Precision.YEAR

    # feed a prefix to parse:
    prefix = parse(now)
    out = parse(prefix)
    assert out == prefix

    early = parse("2017-04-04T10:30:29")
    late = parse("2017-04-09T10:30:29")
    assert early < late
    assert late > early

    with pytest.raises(TypeError):
        assert late > "banana"

    assert hash(late) is not None


def test_parse_parts():
    assert parse_parts(year=None).text is None
    assert parse_parts(year=2001, month=3, day=0).text == "2001-03"
    assert parse_parts(year=2001, month="03", day="0").text == "2001-03"