test_newserialized.py
102 lines
| 3.5 KiB
| text/x-python
|
PythonLexer
Brian E Granger
|
r1234 | # encoding: utf-8 | ||
"""This file contains unittests for the shell.py module.""" | ||||
__docformat__ = "restructuredtext en" | ||||
#------------------------------------------------------------------------------- | ||||
# Copyright (C) 2008 The IPython Development Team | ||||
# | ||||
# Distributed under the terms of the BSD License. The full license is in | ||||
# the file COPYING, distributed as part of this software. | ||||
#------------------------------------------------------------------------------- | ||||
#------------------------------------------------------------------------------- | ||||
# Imports | ||||
#------------------------------------------------------------------------------- | ||||
Brian E Granger
|
r1244 | try: | ||
import zope.interface as zi | ||||
from twisted.trial import unittest | ||||
from IPython.testing.util import DeferredTestCase | ||||
Brian E Granger
|
r1234 | |||
Brian E Granger
|
r1244 | from IPython.kernel.newserialized import \ | ||
ISerialized, \ | ||||
IUnSerialized, \ | ||||
Serialized, \ | ||||
UnSerialized, \ | ||||
SerializeIt, \ | ||||
UnSerializeIt | ||||
except ImportError: | ||||
Brian Granger
|
r1555 | import nose | ||
raise nose.SkipTest("This test requires zope.interface, Twisted and Foolscap") | ||||
#------------------------------------------------------------------------------- | ||||
# Tests | ||||
#------------------------------------------------------------------------------- | ||||
class SerializedTestCase(unittest.TestCase): | ||||
def setUp(self): | ||||
pass | ||||
Brian E Granger
|
r1234 | |||
Brian Granger
|
r1555 | def tearDown(self): | ||
pass | ||||
Brian E Granger
|
r1234 | |||
Brian Granger
|
r1555 | def testSerializedInterfaces(self): | ||
Brian E Granger
|
r1234 | |||
Brian Granger
|
r1555 | us = UnSerialized({'a':10, 'b':range(10)}) | ||
s = ISerialized(us) | ||||
uss = IUnSerialized(s) | ||||
self.assert_(ISerialized.providedBy(s)) | ||||
self.assert_(IUnSerialized.providedBy(us)) | ||||
self.assert_(IUnSerialized.providedBy(uss)) | ||||
for m in list(ISerialized): | ||||
self.assert_(hasattr(s, m)) | ||||
for m in list(IUnSerialized): | ||||
self.assert_(hasattr(us, m)) | ||||
for m in list(IUnSerialized): | ||||
self.assert_(hasattr(uss, m)) | ||||
Brian E Granger
|
r1234 | |||
Brian Granger
|
r1555 | def testPickleSerialized(self): | ||
obj = {'a':1.45345, 'b':'asdfsdf', 'c':10000L} | ||||
original = UnSerialized(obj) | ||||
originalSer = ISerialized(original) | ||||
firstData = originalSer.getData() | ||||
firstTD = originalSer.getTypeDescriptor() | ||||
firstMD = originalSer.getMetadata() | ||||
self.assert_(firstTD == 'pickle') | ||||
self.assert_(firstMD == {}) | ||||
unSerialized = IUnSerialized(originalSer) | ||||
secondObj = unSerialized.getObject() | ||||
for k, v in secondObj.iteritems(): | ||||
self.assert_(obj[k] == v) | ||||
secondSer = ISerialized(UnSerialized(secondObj)) | ||||
self.assert_(firstData == secondSer.getData()) | ||||
self.assert_(firstTD == secondSer.getTypeDescriptor() ) | ||||
self.assert_(firstMD == secondSer.getMetadata()) | ||||
def testNDArraySerialized(self): | ||||
try: | ||||
import numpy | ||||
except ImportError: | ||||
pass | ||||
else: | ||||
a = numpy.linspace(0.0, 1.0, 1000) | ||||
unSer1 = UnSerialized(a) | ||||
ser1 = ISerialized(unSer1) | ||||
td = ser1.getTypeDescriptor() | ||||
self.assert_(td == 'ndarray') | ||||
md = ser1.getMetadata() | ||||
self.assert_(md['shape'] == a.shape) | ||||
self.assert_(md['dtype'] == a.dtype.str) | ||||
buff = ser1.getData() | ||||
self.assert_(buff == numpy.getbuffer(a)) | ||||
s = Serialized(buff, td, md) | ||||
us = IUnSerialized(s) | ||||
final = us.getObject() | ||||
self.assert_(numpy.getbuffer(a) == numpy.getbuffer(final)) | ||||
self.assert_(a.dtype.str == final.dtype.str) | ||||
self.assert_(a.shape == final.shape) | ||||
Brian E Granger
|
r1234 | |||