from test
import test_support
alist
= [{'astring': 'foo@bar.baz.spam',
'anotherlist': ['.zyx.41'],
'abase64': xmlrpclib
.Binary("my dog has fleas"),
'boolean': xmlrpclib
.False,
'unicode': u
'\u4000\u6000\u8000',
u
'ukey\u4000': 'regular value',
class XMLRPCTestCase(unittest
.TestCase
):
def test_dump_load(self
):
xmlrpclib
.loads(xmlrpclib
.dumps((alist
,)))[0][0])
def test_dump_big_long(self
):
self
.assertRaises(OverflowError, xmlrpclib
.dumps
, (2L**99,))
def test_dump_bad_dict(self
):
self
.assertRaises(TypeError, xmlrpclib
.dumps
, ({(1,2,3): 1},))
def test_dump_big_int(self
):
if sys
.maxint
> 2L**31-1:
self
.assertRaises(OverflowError, xmlrpclib
.dumps
,
def test_dump_none(self
):
strg
= xmlrpclib
.dumps(arg1
, allow_none
=True)
xmlrpclib
.loads(strg
)[0][0])
self
.assertRaises(TypeError, xmlrpclib
.dumps
, (arg1
,))
def test_default_encoding_issues(self
):
# SF bug #1115989: wrong decoding in '_stringify'
utf8
= """<?xml version='1.0' encoding='iso-8859-1'?>
<string>abc \x95</string>
<value><string>ghi \x97</string></value>
# sys.setdefaultencoding() normally doesn't exist after site.py is
# loaded. reload(sys) is the way to get it back.
old_encoding
= sys
.getdefaultencoding()
setdefaultencoding_existed
= hasattr(sys
, "setdefaultencoding")
sys
.setdefaultencoding("iso-8859-1")
(s
, d
), m
= xmlrpclib
.loads(utf8
)
sys
.setdefaultencoding(old_encoding
)
if not setdefaultencoding_existed
:
del sys
.setdefaultencoding
self
.assertEquals(s
, u
"abc \x95")
self
.assert_(isinstance(s
, unicode))
self
.assertEquals(items
, [(u
"def \x96", u
"ghi \x97")])
self
.assert_(isinstance(items
[0][0], unicode))
self
.assert_(isinstance(items
[0][1], unicode))
self
.assertEquals(s
, "abc \xc2\x95")
self
.assertEquals(items
, [("def \xc2\x96", "ghi \xc2\x97")])
test_support
.run_unittest(XMLRPCTestCase
)
if __name__
== "__main__":