This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
pyoidc-ozwillo/tests/test_time_util.py

235 lines
5.8 KiB
Python

__author__ = 'rohe0002'
#!/usr/bin/env python
#import calendar
from oic.utils.time_util import *
from pytest import raises
def test_f_quotient():
assert f_quotient(-1, 3) == -1
assert f_quotient(0, 3) == 0
assert f_quotient(1, 3) == 0
assert f_quotient(2, 3) == 0
assert f_quotient(3, 3) == 1
assert f_quotient(3.123, 3) == 1
def test_modulo():
assert modulo(-1, 3) == 2
assert modulo(0, 3) == 0
assert modulo(1, 3) == 1
assert modulo(2, 3) == 2
assert modulo(3, 3) == 0
x = 3.123
assert modulo(3.123, 3) == x - 3
def test_f_quotient_2():
assert f_quotient(0, 1, 13) == -1
for i in range(1, 13):
assert f_quotient(i, 1, 13) == 0
assert f_quotient(13, 1, 13) == 1
assert f_quotient(13.123, 1, 13) == 1
def test_modulo_2():
assert modulo(0, 1, 13) == 12
for i in range(1, 13):
assert modulo(i, 1, 13) == i
assert modulo(13, 1, 13) == 1
#x = 0.123
#assert modulo(13+x, 1, 13) == 1+x
def test_parse_duration():
(sign, d) = parse_duration("P1Y3M5DT7H10M3.3S")
assert sign == "+"
assert d['tm_sec'] == 3.3
assert d['tm_mon'] == 3
assert d['tm_hour'] == 7
assert d['tm_mday'] == 5
assert d['tm_year'] == 1
assert d['tm_min'] == 10
def test_add_duration_1():
#2000-01-12T12:13:14Z P1Y3M5DT7H10M3S 2001-04-17T19:23:17Z
t = add_duration(str_to_time("2000-01-12T12:13:14Z"), "P1Y3M5DT7H10M3S")
assert t.tm_year == 2001
assert t.tm_mon == 4
assert t.tm_mday == 17
assert t.tm_hour == 19
assert t.tm_min == 23
assert t.tm_sec == 17
def test_add_duration_2():
#2000-01-12 PT33H 2000-01-13
t = add_duration(str_to_time("2000-01-12T00:00:00Z"), "PT33H")
assert t.tm_year == 2000
assert t.tm_mon == 1
assert t.tm_mday == 14
assert t.tm_hour == 9
assert t.tm_min == 0
assert t.tm_sec == 0
def test_str_to_time():
t = calendar.timegm(str_to_time("2000-01-12T00:00:00Z"))
assert t == 947635200
def test_instant():
inst = str_to_time(instant())
now = time.gmtime()
assert now >= inst
def test_valid():
assert valid("2000-01-12T00:00:00Z") is False
current_year = datetime.today().year
assert valid("%d-01-12T00:00:00Z" % (current_year + 1)) is True
this_instance = instant()
time.sleep(1)
assert valid(this_instance) is False # unless on a very fast machine :-)
soon = in_a_while(seconds=10)
assert valid(soon) is True
def test_timeout():
soon = in_a_while(seconds=1, time_format="")
time.sleep(2)
assert valid(soon) is False
def test_before():
current_year = datetime.today().year
assert before("%d-01-01T00:00:00Z" % current_year) is False
assert before("%d-01-01T00:00:00Z" % (current_year + 1)) is True
def test_after():
current_year = datetime.today().year
assert after("%d-01-01T00:00:00Z" % (current_year + 1)) is False
assert after("%d-01-01T00:00:00Z" % current_year) is True
def test_not_before():
current_year = datetime.today().year
assert not_before("%d-01-01T00:00:00Z" % (current_year + 1)) is False
assert not_before("%d-01-01T00:00:00Z" % current_year) is True
def test_not_on_or_after():
current_year = datetime.today().year
assert not_on_or_after("%d-01-01T00:00:00Z" % (current_year + 1)) is True
assert not_on_or_after("%d-01-01T00:00:00Z" % current_year) is False
def test_parse_duration_1():
(sign, d) = parse_duration("-P1Y3M5DT7H10M3.3S")
assert sign == "-"
assert d['tm_sec'] == 3.3
assert d['tm_mon'] == 3
assert d['tm_hour'] == 7
assert d['tm_mday'] == 5
assert d['tm_year'] == 1
assert d['tm_min'] == 10
def test_parse_duration_2():
raises(Exception, 'parse_duration("-P1Y-3M5DT7H10M3.3S")')
raises(Exception, 'parse_duration("-P1Y3M5DU7H10M3.3S")')
raises(Exception, 'parse_duration("-P1Y3M5DT")')
raises(Exception, 'parse_duration("-P1Y3M5DU7H10M3.S")')
raises(Exception, 'parse_duration("-P1Y3M5DT7H10MxS")')
raises(Exception, 'parse_duration("-P1Y4M4DT7H10.5M3S")')
def test_add_duration_2():
#2000-01-12 PT33H 2000-01-13
t = add_duration(str_to_time("2000-01-12T00:00:00Z"), "P32D")
assert t.tm_year == 2000
assert t.tm_mon == 2
assert t.tm_mday == 12
assert t.tm_hour == 0
assert t.tm_min == 0
assert t.tm_sec == 0
assert t.tm_wday == 5
assert t.tm_wday == 5
assert t.tm_yday == 43
assert t.tm_isdst == 0
def test_add_duration_3():
#2000-01-12 PT33H 2000-01-13
t = add_duration(str_to_time("2000-01-12T00:00:00Z"), "-P32D")
assert t is None
def test_time_a_while_ago():
dt = datetime.utcnow()
t = time_a_while_ago(seconds=10)
delta = dt - t # slightly less than 10
assert delta.seconds == 9
assert delta.microseconds > 0
def test_a_while_ago():
dt = time.mktime(time.gmtime())
then = a_while_ago(seconds=10)
t = time.mktime(str_to_time(then))
delta = dt - t # slightly less than 10
print delta
assert delta == 10
def test_shift_time():
dt = datetime.utcnow()
t = shift_time(dt, 10)
delta = t - dt # exactly 10
assert delta.seconds == 10
def test_str_to_time_str_error():
raises(Exception, 'str_to_time("2000-01-12T00:00:00ZABC")')
def test_str_to_time_1():
t = str_to_time("")
assert t == 0
def test_utc_now():
t1 = utc_now()
t2 = int("%d" % time.time())
assert t1 == t2
def test_before_0():
assert before("")
assert before(0)
def test_before_int():
now_local = int(time.time())
assert before(now_local - 1) is False
assert before(now_local + 2)
def test_later_than_int():
now_local = int(time.time())
assert later_than(now_local, now_local - 1)
assert later_than(now_local - 1, now_local) is False
def test_later_than_str():
a = in_a_while(seconds=10)
b = in_a_while(seconds=20)
assert later_than(b, a)
assert later_than(a, b) is False