diff -r ffa851df0825 -r 2fb8b9db1c86 symbian-qemu-0.9.1-12/python-2.6.1/Lib/test/test_plistlib.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/symbian-qemu-0.9.1-12/python-2.6.1/Lib/test/test_plistlib.py Fri Jul 31 15:01:17 2009 +0100 @@ -0,0 +1,192 @@ +# Copyright (C) 2003 Python Software Foundation + +import unittest +import plistlib +import os +import datetime +from test import test_support + + +# This test data was generated through Cocoa's NSDictionary class +TESTDATA = """ + + + + aDate + 2004-10-26T10:33:33Z + aDict + + aFalseValue + + aTrueValue + + aUnicodeValue + M\xc3\xa4ssig, Ma\xc3\x9f + anotherString + <hello & 'hi' there!> + deeperDict + + a + 17 + b + 32.5 + c + + 1 + 2 + text + + + + aFloat + 0.5 + aList + + A + B + 12 + 32.5 + + 1 + 2 + 3 + + + aString + Doodah + anInt + 728 + nestedData + + + PGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAzxsb3RzIG9mIGJpbmFyeSBndW5r + PgABAgM8bG90cyBvZiBiaW5hcnkgZ3Vuaz4AAQIDPGxvdHMgb2YgYmluYXJ5 + IGd1bms+AAECAzxsb3RzIG9mIGJpbmFyeSBndW5rPgABAgM8bG90cyBvZiBi + aW5hcnkgZ3Vuaz4AAQIDPGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAzxsb3Rz + IG9mIGJpbmFyeSBndW5rPgABAgM8bG90cyBvZiBiaW5hcnkgZ3Vuaz4AAQID + PGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAw== + + + someData + + PGJpbmFyeSBndW5rPg== + + someMoreData + + PGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAzxsb3RzIG9mIGJpbmFyeSBndW5rPgABAgM8 + bG90cyBvZiBiaW5hcnkgZ3Vuaz4AAQIDPGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAzxs + b3RzIG9mIGJpbmFyeSBndW5rPgABAgM8bG90cyBvZiBiaW5hcnkgZ3Vuaz4AAQIDPGxv + dHMgb2YgYmluYXJ5IGd1bms+AAECAzxsb3RzIG9mIGJpbmFyeSBndW5rPgABAgM8bG90 + cyBvZiBiaW5hcnkgZ3Vuaz4AAQIDPGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAw== + + \xc3\x85benraa + That was a unicode key. + + +""".replace(" " * 8, "\t") # Apple as well as plistlib.py output hard tabs + + +class TestPlistlib(unittest.TestCase): + + def tearDown(self): + try: + os.unlink(test_support.TESTFN) + except: + pass + + def _create(self): + pl = dict( + aString="Doodah", + aList=["A", "B", 12, 32.5, [1, 2, 3]], + aFloat = 0.5, + anInt = 728, + aDict=dict( + anotherString="", + aUnicodeValue=u'M\xe4ssig, Ma\xdf', + aTrueValue=True, + aFalseValue=False, + deeperDict=dict(a=17, b=32.5, c=[1, 2, "text"]), + ), + someData = plistlib.Data(""), + someMoreData = plistlib.Data("\0\1\2\3" * 10), + nestedData = [plistlib.Data("\0\1\2\3" * 10)], + aDate = datetime.datetime(2004, 10, 26, 10, 33, 33), + ) + pl[u'\xc5benraa'] = "That was a unicode key." + return pl + + def test_create(self): + pl = self._create() + self.assertEqual(pl["aString"], "Doodah") + self.assertEqual(pl["aDict"]["aFalseValue"], False) + + def test_io(self): + pl = self._create() + plistlib.writePlist(pl, test_support.TESTFN) + pl2 = plistlib.readPlist(test_support.TESTFN) + self.assertEqual(dict(pl), dict(pl2)) + + def test_string(self): + pl = self._create() + data = plistlib.writePlistToString(pl) + pl2 = plistlib.readPlistFromString(data) + self.assertEqual(dict(pl), dict(pl2)) + data2 = plistlib.writePlistToString(pl2) + self.assertEqual(data, data2) + + def test_appleformatting(self): + pl = plistlib.readPlistFromString(TESTDATA) + data = plistlib.writePlistToString(pl) + self.assertEqual(data, TESTDATA, + "generated data was not identical to Apple's output") + + def test_appleformattingfromliteral(self): + pl = self._create() + pl2 = plistlib.readPlistFromString(TESTDATA) + self.assertEqual(dict(pl), dict(pl2), + "generated data was not identical to Apple's output") + + def test_stringio(self): + from StringIO import StringIO + f = StringIO() + pl = self._create() + plistlib.writePlist(pl, f) + pl2 = plistlib.readPlist(StringIO(f.getvalue())) + self.assertEqual(dict(pl), dict(pl2)) + + def test_cstringio(self): + from cStringIO import StringIO + f = StringIO() + pl = self._create() + plistlib.writePlist(pl, f) + pl2 = plistlib.readPlist(StringIO(f.getvalue())) + self.assertEqual(dict(pl), dict(pl2)) + + def test_controlcharacters(self): + for i in range(128): + c = chr(i) + testString = "string containing %s" % c + if i >= 32 or c in "\r\n\t": + # \r, \n and \t are the only legal control chars in XML + plistlib.writePlistToString(testString) + else: + self.assertRaises(ValueError, + plistlib.writePlistToString, + testString) + + def test_nondictroot(self): + test1 = "abc" + test2 = [1, 2, 3, "abc"] + result1 = plistlib.readPlistFromString(plistlib.writePlistToString(test1)) + result2 = plistlib.readPlistFromString(plistlib.writePlistToString(test2)) + self.assertEqual(test1, result1) + self.assertEqual(test2, result2) + + +def test_main(): + test_support.run_unittest(TestPlistlib) + + +if __name__ == '__main__': + test_main()