self.add_object(False)
def end_integer(self):
- self.add_object(int(self.get_data()))
+ raw = self.get_data()
+ if raw.startswith('0x') or raw.startswith('0X'):
+ self.add_object(int(raw, 16))
+ else:
+ self.add_object(int(raw))
def end_real(self):
self.add_object(float(self.get_data()))
self.assertRaises(ValueError, plistlib.loads,
b"<plist><integer>not real</integer></plist>")
+ def test_integer_notations(self):
+ pl = b"<plist><integer>456</integer></plist>"
+ value = plistlib.loads(pl)
+ self.assertEqual(value, 456)
+
+ pl = b"<plist><integer>0xa</integer></plist>"
+ value = plistlib.loads(pl)
+ self.assertEqual(value, 10)
+
+ pl = b"<plist><integer>0123</integer></plist>"
+ value = plistlib.loads(pl)
+ self.assertEqual(value, 123)
+
def test_xml_encodings(self):
base = TESTDATA[plistlib.FMT_XML]