예제 #1
0
 def test_invalid_uid(self):
     with self.assertRaises(TypeError):
         UID("not an int")
     with self.assertRaises(ValueError):
         UID(2 ** 64)
     with self.assertRaises(ValueError):
         UID(-19)
예제 #2
0
 def test_keyed_archive_data(self):
     # This is the structure of a NSKeyedArchive packed plist
     data = {
         '$version': 100000,
         '$objects': [
             '$null', {
                 'pytype': 1,
                 '$class': UID(2),
                 'NS.string': 'KeyArchive UID Test'
             },
             {
                 '$classname': 'OC_BuiltinPythonUnicode',
                 '$classes': [
                     'OC_BuiltinPythonUnicode',
                     'OC_PythonUnicode',
                     'NSString',
                     'NSObject'
                 ],
                 '$classhints': [
                     'OC_PythonString', 'NSString'
                 ]
             }
         ],
         '$archiver': 'NSKeyedArchiver',
         '$top': {
             'root': UID(1)
         }
     }
     self.assertEqual(plistlib.loads(TESTDATA["KEYED_ARCHIVE"]), data)
예제 #3
0
 def dict(self, ast, _=None):
     retval = self._dict_type()
     for entry in ast:
         retval[entry.k] = entry.v
     if self.cfuid and len(retval) == 1 and isinstance(retval.get("CF$UID"), int):
         return UID(retval["CF$UID"])
     return retval
예제 #4
0
 def test_uid(self):
     data = UID(1)
     self.assertEqual(plistlib.loads(plistlib.dumps(data, fmt=plistlib.FMT_BINARY)), data)
     dict_data = {
         'uid0': UID(0),
         'uid2': UID(2),
         'uid8': UID(2 ** 8),
         'uid16': UID(2 ** 16),
         'uid32': UID(2 ** 32),
         'uid63': UID(2 ** 63)
     }
     self.assertEqual(plistlib.loads(plistlib.dumps(dict_data, fmt=plistlib.FMT_BINARY)), dict_data)
예제 #5
0
 def test_modified_uid_huge(self):
     huge_uid = UID(1)
     huge_uid.data = 2**64  # dodge the size check in the constructor
     with self.assertRaises(OverflowError):
         plistlib.dumps(huge_uid, fmt=plistlib.FMT_BINARY)
예제 #6
0
 def test_modified_uid_negative(self):
     neg_uid = UID(1)
     neg_uid.data = -1  # dodge the negative check in the constructor
     with self.assertRaises(ValueError):
         plistlib.dumps(neg_uid, fmt=plistlib.FMT_BINARY)
예제 #7
0
 def test_uid_copy(self):
     self.assertEqual(copy.copy(UID(1)), UID(1))
     self.assertEqual(copy.deepcopy(UID(1)), UID(1))
예제 #8
0
 def test_uid_pickle(self):
     for proto in range(pickle.HIGHEST_PROTOCOL + 1):
         self.assertEqual(
             pickle.loads(pickle.dumps(UID(19), protocol=proto)), UID(19))
예제 #9
0
 def test_uid_index(self):
     self.assertEqual(operator.index(UID(1)), 1)
예제 #10
0
 def test_uid_repr(self):
     self.assertEqual(repr(UID(1)), "UID(1)")
예제 #11
0
 def test_uid_hash(self):
     self.assertEqual(hash(UID(1)), hash(UID(1)))
예제 #12
0
 def test_uid_eq(self):
     self.assertEqual(UID(1), UID(1))
     self.assertNotEqual(UID(1), UID(2))
     self.assertNotEqual(UID(1), "not uid")
예제 #13
0
 def test_uid_data(self):
     uid = UID(1)
     self.assertEqual(uid.data, 1)
예제 #14
0
 def uid(self, ast, _=None):
     return UID(ast)