kopia lustrzana https://github.com/ukhas/habitat-cpp-connector
Update for habitat #303 - switch to strict_rfc3339
rodzic
e240ea73a4
commit
0caa9762a6
|
@ -24,6 +24,10 @@ from nose import SkipTest
|
|||
# Identical to habitat's rfc3339 tests, except with a class that proxies
|
||||
# calls to an executable and without the float tests.
|
||||
|
||||
class ProxyInvalidFormat(ValueError):
|
||||
pass
|
||||
|
||||
|
||||
class ProxyFunction(object):
|
||||
def __init__(self, process, name):
|
||||
self.p = process
|
||||
|
@ -38,6 +42,8 @@ class ProxyFunction(object):
|
|||
return thing
|
||||
elif response == "time_t error":
|
||||
raise ValueError("timestamp out of range for platform time_t")
|
||||
elif thing == "RFC3339::InvalidFormat":
|
||||
raise ProxyInvalidFormat
|
||||
else:
|
||||
raise Exception(thing)
|
||||
|
||||
|
@ -77,50 +83,50 @@ class TestValidateRFC3339(object):
|
|||
self.mod.close()
|
||||
|
||||
def test_rejects_bad_format(self):
|
||||
assert self.validate("asdf") == False
|
||||
assert self.validate("24822") == False
|
||||
assert self.validate("123-345-124T123:453:213") == False
|
||||
assert self.validate("99-09-12T12:42:21Z") == False
|
||||
assert self.validate("99-09-12T12:42:21+00:") == False
|
||||
assert self.validate("99-09-12T12:42:21+00:00") == False
|
||||
assert self.validate("2012-09-12T21:-1:21") == False
|
||||
assert not self.validate("asdf")
|
||||
assert not self.validate("24822")
|
||||
assert not self.validate("123-345-124T123:453:213")
|
||||
assert not self.validate("99-09-12T12:42:21Z")
|
||||
assert not self.validate("99-09-12T12:42:21+00:00")
|
||||
assert not self.validate("1999-09-12T12:42:21+00:")
|
||||
assert not self.validate("2012-09-12T21:-1:21")
|
||||
|
||||
def test_rejects_no_offset(self):
|
||||
assert self.validate("2012-09-12T12:42:21") == False
|
||||
assert not self.validate("2012-09-12T12:42:21")
|
||||
|
||||
def test_rejects_out_of_range(self):
|
||||
assert self.validate("2012-00-12T12:42:21Z") == False
|
||||
assert self.validate("2012-13-12T12:42:21Z") == False
|
||||
assert self.validate("2012-09-00T12:42:21Z") == False
|
||||
assert self.validate("2012-09-31T12:42:21Z") == False # Sep
|
||||
assert self.validate("2012-08-31T12:42:21Z") == True # Aug
|
||||
assert self.validate("2012-08-32T12:42:21Z") == False
|
||||
assert self.validate("2012-09-12T24:00:00Z") == False
|
||||
assert self.validate("2012-09-12T12:60:21Z") == False
|
||||
assert self.validate("2012-09-12T12:42:99Z") == False
|
||||
assert self.validate("2012-09-12T12:42:21+24:00") == False
|
||||
assert self.validate("2012-09-12T12:42:21-24:00") == False
|
||||
assert self.validate("2012-09-12T12:42:21+02:60") == False
|
||||
assert not self.validate("2012-00-12T12:42:21Z")
|
||||
assert not self.validate("2012-13-12T12:42:21Z")
|
||||
assert not self.validate("2012-09-00T12:42:21Z")
|
||||
assert not self.validate("2012-09-31T12:42:21Z") # Sep
|
||||
assert self.validate("2012-08-31T12:42:21Z") # Aug
|
||||
assert not self.validate("2012-08-32T12:42:21Z")
|
||||
assert not self.validate("2012-09-12T24:00:00Z")
|
||||
assert not self.validate("2012-09-12T12:60:21Z")
|
||||
assert not self.validate("2012-09-12T12:42:99Z")
|
||||
assert not self.validate("2012-09-12T12:42:21+24:00")
|
||||
assert not self.validate("2012-09-12T12:42:21-24:00")
|
||||
assert not self.validate("2012-09-12T12:42:21+02:60")
|
||||
|
||||
def test_rejects_leap_seconds(self):
|
||||
# with regret :-(
|
||||
assert self.validate("2012-06-30T23:59:60Z") == False
|
||||
assert self.validate("2012-03-21T09:21:60Z") == False
|
||||
assert not self.validate("2012-06-30T23:59:60Z")
|
||||
assert not self.validate("2012-03-21T09:21:60Z")
|
||||
|
||||
def test_handles_leapyear(self):
|
||||
assert self.validate("2012-02-29T12:42:21Z") == True
|
||||
assert self.validate("2012-02-30T12:42:21Z") == False
|
||||
assert self.validate("2000-02-29T12:42:21Z") == True
|
||||
assert self.validate("2000-02-30T12:42:21Z") == False
|
||||
assert self.validate("2100-02-28T12:42:21Z") == True
|
||||
assert self.validate("2100-02-29T12:42:21Z") == False
|
||||
assert self.validate("2011-02-28T12:42:21Z") == True
|
||||
assert self.validate("2011-02-29T12:42:21Z") == False
|
||||
assert self.validate("2012-02-29T12:42:21Z")
|
||||
assert not self.validate("2012-02-30T12:42:21Z")
|
||||
assert self.validate("2000-02-29T12:42:21Z")
|
||||
assert not self.validate("2000-02-30T12:42:21Z")
|
||||
assert self.validate("2100-02-28T12:42:21Z")
|
||||
assert not self.validate("2100-02-29T12:42:21Z")
|
||||
assert self.validate("2011-02-28T12:42:21Z")
|
||||
assert not self.validate("2011-02-29T12:42:21Z")
|
||||
|
||||
def test_accepts_good(self):
|
||||
assert self.validate("1994-03-14T17:00:00Z") == True
|
||||
assert self.validate("2011-06-23T17:12:00+05:21") == True
|
||||
assert self.validate("1992-03-14T17:04:00-01:42") == True
|
||||
assert self.validate("1994-03-14T17:00:00Z")
|
||||
assert self.validate("2011-06-23T17:12:00+05:21")
|
||||
assert self.validate("1992-03-14T17:04:00-01:42")
|
||||
|
||||
|
||||
class TestRFC3339toTimestamp(object):
|
||||
|
@ -131,6 +137,16 @@ class TestRFC3339toTimestamp(object):
|
|||
def teardown(self):
|
||||
self.mod.close()
|
||||
|
||||
def test_validates(self):
|
||||
# This string would otherwise work: it would blissfully add the
|
||||
# offset
|
||||
try:
|
||||
self.func("2012-09-12T12:42:21+24:00")
|
||||
except ProxyInvalidFormat:
|
||||
pass
|
||||
else:
|
||||
raise Exception("Didn't throw InvalidFormat")
|
||||
|
||||
def test_simple_cases(self):
|
||||
assert self.func("1996-12-19T16:39:57-08:00") == 851042397
|
||||
assert self.func("2012-08-08T21:30:36+01:00") == 1344457836
|
||||
|
@ -173,6 +189,8 @@ class TestTimestampToRFC3339UTCOffset(object):
|
|||
|
||||
def teardown(self):
|
||||
self.mod.close()
|
||||
|
||||
|
||||
def test_simple_cases(self):
|
||||
assert self.func(851042397) == "1996-12-20T00:39:57Z"
|
||||
assert self.func(1344457836) == "2012-08-08T20:30:36Z"
|
||||
|
|
|
@ -15,8 +15,8 @@ import copy
|
|||
import random
|
||||
import xml.etree.cElementTree as ET
|
||||
import urllib
|
||||
import strict_rfc3339
|
||||
|
||||
from habitat.utils import rfc3339
|
||||
from habitat import views
|
||||
|
||||
class ProxyException:
|
||||
|
@ -46,7 +46,8 @@ class Callbacks:
|
|||
|
||||
def fake_rfc3339(self, value):
|
||||
"""what the local RFC3339 will be `value` fake seconds into the test"""
|
||||
return rfc3339.timestamp_to_rfc3339_localoffset(1300000000 + value)
|
||||
return strict_rfc3339.timestamp_to_rfc3339_localoffset(
|
||||
1300000000 + value)
|
||||
|
||||
class Proxy:
|
||||
def __init__(self, command, callsign, couch_uri=None, couch_db=None,
|
||||
|
|
Ładowanie…
Reference in New Issue