1# tag: posix
2from libc.stdlib  cimport getenv
3from posix.stdlib cimport setenv, unsetenv
4from libc.time    cimport *
5
6
7def test_time():
8    """
9    >>> test_time()
10    """
11    cdef time_t t1, t2
12    t1 = time(NULL)
13    assert t1 != 0
14    t1 = time(&t2)
15    assert t1 == t2
16
17
18def test_mktime():
19    """
20    >>> test_mktime()  # doctest:+ELLIPSIS
21    (986138177, ...'Sun Apr  1 15:16:17 2001\\n')
22    """
23    cdef tm t, gmt
24    cdef time_t tt
25    cdef char *ct
26    cdef char *tz
27
28    tz = getenv("TZ")
29    setenv("TZ", "UTC", 1)
30    tzset()
31    t.tm_sec = 17
32    t.tm_min = 16
33    t.tm_hour = 15
34    t.tm_year = 101
35    t.tm_mon = 3
36    t.tm_mday = 1
37    t.tm_isdst = 0
38    tt = mktime(&t)
39    assert tt != -1
40    ct = ctime(&tt)
41    assert ct != NULL
42    if tz:
43        setenv("TZ", tz, 1)
44    else:
45        unsetenv("TZ")
46    tzset()
47    return tt, ct
48