summaryrefslogtreecommitdiff
path: root/python/tests/codec010.py
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2008-11-10 15:19:29 +0000
committerRafael H. Schloming <rhs@apache.org>2008-11-10 15:19:29 +0000
commit8be83d96ee667728d8a5da0db2e68e29c2177dda (patch)
tree8adb650a08d1eb5912970aa3e5142c4c74292abf /python/tests/codec010.py
parent36a1702b48b62a9df223c1244e4ea7fbd466f771 (diff)
downloadqpid-python-8be83d96ee667728d8a5da0db2e68e29c2177dda.tar.gz
added a timestamp class to qpid.datatypes and modified codec to use it for AMQP's datetime type; this fixes support of datetime within maps where formerly decoding and reencoding the same value would switch an entry in a map from an AMQP datetime to an AMQP uint64
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@712673 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/tests/codec010.py')
-rw-r--r--python/tests/codec010.py36
1 files changed, 28 insertions, 8 deletions
diff --git a/python/tests/codec010.py b/python/tests/codec010.py
index bbe894b7b3..5f9f853744 100644
--- a/python/tests/codec010.py
+++ b/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())))