summaryrefslogtreecommitdiff
path: root/qpid/python/tests
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/python/tests')
-rw-r--r--qpid/python/tests/codec010.py36
-rw-r--r--qpid/python/tests/datatypes.py32
2 files changed, 60 insertions, 8 deletions
diff --git a/qpid/python/tests/codec010.py b/qpid/python/tests/codec010.py
index bbe894b7b3..5f9f853744 100644
--- a/qpid/python/tests/codec010.py
+++ b/qpid/python/tests/codec010.py
@@ -17,22 +17,27 @@
# under the License.
#
+import time
+
from unittest import TestCase
from qpid.spec010 import load
from qpid.codec010 import StringCodec
from qpid.testlib import testrunner
+from qpid.datatypes import timestamp
class CodecTest(TestCase):
def setUp(self):
self.spec = load(testrunner.get_spec_file("amqp.0-10.xml"))
- def check(self, type, value):
+ def check(self, type, value, compare=True):
t = self.spec[type]
sc = StringCodec(self.spec)
t.encode(sc, value)
decoded = t.decode(sc)
- assert decoded == value, "%s, %s" % (decoded, value)
+ if compare:
+ assert decoded == value, "%s, %s" % (decoded, value)
+ return decoded
def testMapString(self):
self.check("map", {"string": "this is a test"})
@@ -43,6 +48,15 @@ class CodecTest(TestCase):
def testMapLong(self):
self.check("map", {"long": 2**32})
+ def testMapTimestamp(self):
+ decoded = self.check("map", {"timestamp": timestamp(0)})
+ assert isinstance(decoded["timestamp"], timestamp)
+
+ def testMapDatetime(self):
+ decoded = self.check("map", {"datetime": timestamp(0).datetime()}, compare=False)
+ assert isinstance(decoded["datetime"], timestamp)
+ assert decoded["datetime"] == 0.0
+
def testMapNone(self):
self.check("map", {"none": None})
@@ -53,12 +67,14 @@ class CodecTest(TestCase):
self.check("map", {"list": [1, "two", 3.0, -4]})
def testMapAll(self):
- self.check("map", {"string": "this is a test",
- "int": 3,
- "long": 2**32,
- "none": None,
- "map": {"string": "nested map"},
- "list": [1, "two", 3.0, -4]})
+ decoded = self.check("map", {"string": "this is a test",
+ "int": 3,
+ "long": 2**32,
+ "timestamp": timestamp(0),
+ "none": None,
+ "map": {"string": "nested map"},
+ "list": [1, "two", 3.0, -4]})
+ assert isinstance(decoded["timestamp"], timestamp)
def testMapEmpty(self):
self.check("map", {})
@@ -90,3 +106,7 @@ class CodecTest(TestCase):
def testInt16(self):
self.check("int16", 3)
self.check("int16", -3)
+
+ def testDatetime(self):
+ self.check("datetime", timestamp(0))
+ self.check("datetime", timestamp(long(time.time())))
diff --git a/qpid/python/tests/datatypes.py b/qpid/python/tests/datatypes.py
index ef98e81da0..4b9e1bcc78 100644
--- a/qpid/python/tests/datatypes.py
+++ b/qpid/python/tests/datatypes.py
@@ -223,3 +223,35 @@ class MessageTest(TestCase):
assert m.get("fragment_properties") is None
assert m.get("message_properties") == self.mp
assert m.get("delivery_properties") == self.dp
+
+class TimestampTest(TestCase):
+
+ def check(self, expected, *values):
+ for v in values:
+ assert isinstance(v, timestamp)
+ assert v == expected
+ assert v == timestamp(expected)
+
+ def testAdd(self):
+ self.check(4.0,
+ timestamp(2.0) + 2.0,
+ 2.0 + timestamp(2.0))
+
+ def testSub(self):
+ self.check(2.0,
+ timestamp(4.0) - 2.0,
+ 4.0 - timestamp(2.0))
+
+ def testNeg(self):
+ self.check(-4.0, -timestamp(4.0))
+
+ def testPos(self):
+ self.check(+4.0, +timestamp(4.0))
+
+ def testAbs(self):
+ self.check(4.0, abs(timestamp(-4.0)))
+
+ def testConversion(self):
+ dt = timestamp(0).datetime()
+ t = timestamp(dt)
+ assert t == 0