a ze@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl mZddlmZejejfZeje deje dde diZd Zgd ZGd d d ejZGd ddejZGdddejZGdddejZedkredS)N)support)BytesIO)UIDs PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NU WVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VO IiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4w LmR0ZCI+CjxwbGlzdCB2ZXJzaW9uPSIxLjAiPgo8ZGljdD4KCTxrZXk+YUJp Z0ludDwva2V5PgoJPGludGVnZXI+OTIyMzM3MjAzNjg1NDc3NTc2NDwvaW50 ZWdlcj4KCTxrZXk+YUJpZ0ludDI8L2tleT4KCTxpbnRlZ2VyPjkyMjMzNzIw MzY4NTQ3NzU4NTI8L2ludGVnZXI+Cgk8a2V5PmFEYXRlPC9rZXk+Cgk8ZGF0 ZT4yMDA0LTEwLTI2VDEwOjMzOjMzWjwvZGF0ZT4KCTxrZXk+YURpY3Q8L2tl eT4KCTxkaWN0PgoJCTxrZXk+YUZhbHNlVmFsdWU8L2tleT4KCQk8ZmFsc2Uv PgoJCTxrZXk+YVRydWVWYWx1ZTwva2V5PgoJCTx0cnVlLz4KCQk8a2V5PmFV bmljb2RlVmFsdWU8L2tleT4KCQk8c3RyaW5nPk3DpHNzaWcsIE1hw588L3N0 cmluZz4KCQk8a2V5PmFub3RoZXJTdHJpbmc8L2tleT4KCQk8c3RyaW5nPiZs dDtoZWxsbyAmYW1wOyAnaGknIHRoZXJlISZndDs8L3N0cmluZz4KCQk8a2V5 PmRlZXBlckRpY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5hPC9rZXk+CgkJ CTxpbnRlZ2VyPjE3PC9pbnRlZ2VyPgoJCQk8a2V5PmI8L2tleT4KCQkJPHJl YWw+MzIuNTwvcmVhbD4KCQkJPGtleT5jPC9rZXk+CgkJCTxhcnJheT4KCQkJ CTxpbnRlZ2VyPjE8L2ludGVnZXI+CgkJCQk8aW50ZWdlcj4yPC9pbnRlZ2Vy PgoJCQkJPHN0cmluZz50ZXh0PC9zdHJpbmc+CgkJCTwvYXJyYXk+CgkJPC9k aWN0PgoJPC9kaWN0PgoJPGtleT5hRmxvYXQ8L2tleT4KCTxyZWFsPjAuNTwv cmVhbD4KCTxrZXk+YUxpc3Q8L2tleT4KCTxhcnJheT4KCQk8c3RyaW5nPkE8 L3N0cmluZz4KCQk8c3RyaW5nPkI8L3N0cmluZz4KCQk8aW50ZWdlcj4xMjwv aW50ZWdlcj4KCQk8cmVhbD4zMi41PC9yZWFsPgoJCTxhcnJheT4KCQkJPGlu dGVnZXI+MTwvaW50ZWdlcj4KCQkJPGludGVnZXI+MjwvaW50ZWdlcj4KCQkJ PGludGVnZXI+MzwvaW50ZWdlcj4KCQk8L2FycmF5PgoJPC9hcnJheT4KCTxr ZXk+YU5lZ2F0aXZlQmlnSW50PC9rZXk+Cgk8aW50ZWdlcj4tODAwMDAwMDAw MDA8L2ludGVnZXI+Cgk8a2V5PmFOZWdhdGl2ZUludDwva2V5PgoJPGludGVn ZXI+LTU8L2ludGVnZXI+Cgk8a2V5PmFTdHJpbmc8L2tleT4KCTxzdHJpbmc+ RG9vZGFoPC9zdHJpbmc+Cgk8a2V5PmFuRW1wdHlEaWN0PC9rZXk+Cgk8ZGlj dC8+Cgk8a2V5PmFuRW1wdHlMaXN0PC9rZXk+Cgk8YXJyYXkvPgoJPGtleT5h bkludDwva2V5PgoJPGludGVnZXI+NzI4PC9pbnRlZ2VyPgoJPGtleT5uZXN0 ZWREYXRhPC9rZXk+Cgk8YXJyYXk+CgkJPGRhdGE+CgkJUEd4dmRITWdiMlln WW1sdVlYSjVJR2QxYm1zK0FBRUNBenhzYjNSeklHOW1JR0pwYm1GeWVTQm5k VzVyCgkJUGdBQkFnTThiRzkwY3lCdlppQmlhVzVoY25rZ1ozVnVhejRBQVFJ RFBHeHZkSE1nYjJZZ1ltbHVZWEo1CgkJSUdkMWJtcytBQUVDQXp4c2IzUnpJ RzltSUdKcGJtRnllU0JuZFc1clBnQUJBZ004Ykc5MGN5QnZaaUJpCgkJYVc1 aGNua2daM1Z1YXo0QUFRSURQR3h2ZEhNZ2IyWWdZbWx1WVhKNUlHZDFibXMr QUFFQ0F6eHNiM1J6CgkJSUc5bUlHSnBibUZ5ZVNCbmRXNXJQZ0FCQWdNOGJH OTBjeUJ2WmlCaWFXNWhjbmtnWjNWdWF6NEFBUUlECgkJUEd4dmRITWdiMlln WW1sdVlYSjVJR2QxYm1zK0FBRUNBdz09CgkJPC9kYXRhPgoJPC9hcnJheT4K CTxrZXk+c29tZURhdGE8L2tleT4KCTxkYXRhPgoJUEdKcGJtRnllU0JuZFc1 clBnPT0KCTwvZGF0YT4KCTxrZXk+c29tZU1vcmVEYXRhPC9rZXk+Cgk8ZGF0 YT4KCVBHeHZkSE1nYjJZZ1ltbHVZWEo1SUdkMWJtcytBQUVDQXp4c2IzUnpJ RzltSUdKcGJtRnllU0JuZFc1clBnQUJBZ004CgliRzkwY3lCdlppQmlhVzVo Y25rZ1ozVnVhejRBQVFJRFBHeHZkSE1nYjJZZ1ltbHVZWEo1SUdkMWJtcytB QUVDQXp4cwoJYjNSeklHOW1JR0pwYm1GeWVTQm5kVzVyUGdBQkFnTThiRzkw Y3lCdlppQmlhVzVoY25rZ1ozVnVhejRBQVFJRFBHeHYKCWRITWdiMllnWW1s dVlYSjVJR2QxYm1zK0FBRUNBenhzYjNSeklHOW1JR0pwYm1GeWVTQm5kVzVy UGdBQkFnTThiRzkwCgljeUJ2WmlCaWFXNWhjbmtnWjNWdWF6NEFBUUlEUEd4 dmRITWdiMllnWW1sdVlYSjVJR2QxYm1zK0FBRUNBdz09Cgk8L2RhdGE+Cgk8 a2V5PsOFYmVucmFhPC9rZXk+Cgk8c3RyaW5nPlRoYXQgd2FzIGEgdW5pY29k ZSBrZXkuPC9zdHJpbmc+CjwvZGljdD4KPC9wbGlzdD4Ks\ YnBsaXN0MDDfEBABAgMEBQYHCAkKCwwNDg8QERITFCgpLzAxMjM0NTc2OFdh QmlnSW50WGFCaWdJbnQyVWFEYXRlVWFEaWN0VmFGbG9hdFVhTGlzdF8QD2FO ZWdhdGl2ZUJpZ0ludFxhTmVnYXRpdmVJbnRXYVN0cmluZ1thbkVtcHR5RGlj dFthbkVtcHR5TGlzdFVhbkludFpuZXN0ZWREYXRhWHNvbWVEYXRhXHNvbWVN b3JlRGF0YWcAxQBiAGUAbgByAGEAYRN/////////1BQAAAAAAAAAAIAAAAAA AAAsM0GcuX30AAAA1RUWFxgZGhscHR5bYUZhbHNlVmFsdWVaYVRydWVWYWx1 ZV1hVW5pY29kZVZhbHVlXWFub3RoZXJTdHJpbmdaZGVlcGVyRGljdAgJawBN AOQAcwBzAGkAZwAsACAATQBhAN9fEBU8aGVsbG8gJiAnaGknIHRoZXJlIT7T HyAhIiMkUWFRYlFjEBEjQEBAAAAAAACjJSYnEAEQAlR0ZXh0Iz/gAAAAAAAA pSorLCMtUUFRQhAMoyUmLhADE////+1foOAAE//////////7VkRvb2RhaNCg EQLYoTZPEPo8bG90cyBvZiBiaW5hcnkgZ3Vuaz4AAQIDPGxvdHMgb2YgYmlu YXJ5IGd1bms+AAECAzxsb3RzIG9mIGJpbmFyeSBndW5rPgABAgM8bG90cyBv ZiBiaW5hcnkgZ3Vuaz4AAQIDPGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAzxs b3RzIG9mIGJpbmFyeSBndW5rPgABAgM8bG90cyBvZiBiaW5hcnkgZ3Vuaz4A AQIDPGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAzxsb3RzIG9mIGJpbmFyeSBn dW5rPgABAgM8bG90cyBvZiBiaW5hcnkgZ3Vuaz4AAQIDTTxiaW5hcnkgZ3Vu az5fEBdUaGF0IHdhcyBhIHVuaWNvZGUga2V5LgAIACsAMwA8AEIASABPAFUA ZwB0AHwAiACUAJoApQCuALsAygDTAOQA7QD4AQQBDwEdASsBNgE3ATgBTwFn AW4BcAFyAXQBdgF/AYMBhQGHAYwBlQGbAZ0BnwGhAaUBpwGwAbkBwAHBAcIB xQHHAsQC0gAAAAAAAAIBAAAAAAAAADkAAAAAAAAAAAAAAAAAAALs KEYED_ARCHIVEs~ YnBsaXN0MDDUAQIDBAUGHB1YJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVy VCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVnB5dHlwZVYkY2xhc3NZTlMu c3RyaW5nEAGAAl8QE0tleUFyY2hpdmUgVUlEIFRlc3TTEBESExQZWiRjbGFz c25hbWVYJGNsYXNzZXNbJGNsYXNzaGludHNfEBdPQ19CdWlsdGluUHl0aG9u VW5pY29kZaQVFhcYXxAXT0NfQnVpbHRpblB5dGhvblVuaWNvZGVfEBBPQ19Q eXRob25Vbmljb2RlWE5TU3RyaW5nWE5TT2JqZWN0ohobXxAPT0NfUHl0aG9u U3RyaW5nWE5TU3RyaW5nXxAPTlNLZXllZEFyY2hpdmVy0R4fVHJvb3SAAQAI ABEAGgAjAC0AMgA3ADsAQQBIAE8AVgBgAGIAZAB6AIEAjACVAKEAuwDAANoA 7QD2AP8BAgEUAR0BLwEyATcAAAAAAAACAQAAAAAAAAAgAAAAAAAAAAAAAAAA AAABOQ==s ]> A &entity; )()ztoo short data)z1too large offset_table_offset and offset_size = 1s"*)z9too large offset_table_offset and nonstandard offset_sizes$,)z'integer overflow in offset_table_offsets")ztoo large top_objects" )zinteger overflow in top_objects" )z)too large num_objects and offset_size = 1s" )z1too large num_objects and nonstandard offset_sizes$ )z%extremally large num_objects (32 bit)s" )z%extremally large num_objects (64 bit)s" )zinteger overflow in num_objectss" )zoffset_size = 0s" )z ref_size = 0s%  )ztoo large offsets"* )zinteger overflow in offsets) )ztoo large array sizes'  )z$extremally large array size (32-bit)s*)z$extremally large array size (64-bit)s.)zinteger overflow in array sizes.)ztoo large reference indexs%  )z#integer overflow in reference indexs,)ztoo large bytes sizes%O#A )z$extremally large bytes size (32-bit)s(OA)z$extremally large bytes size (64-bit)s,OA)zinteger overflow in bytes sizes,OA)ztoo large ASCII sizes%_#A )z$extremally large ASCII size (32-bit)s(_A)z$extremally large ASCII size (64-bit)s,_A)zinteger overflow in ASCII sizes,_A)z invalid ASCIIs#Q )ztoo large UTF-16 sizes'o )z%extremally large UTF-16 size (32-bit)s*oO )z%extremally large UTF-16 size (64-bit)s.o )zinteger overflow in UTF-16 sizes.o )zinvalid UTF-16s$a )znon-hashable keys&  )z&too large datetime (datetime overflow)s*3BP)z'too large datetime (timedelta overflow)s*3B)zinvalid datetime (Infinity)s*3)zinvalid datetime (NaN)s*3c@sveZdZddZd\ddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Zdd?Z!d@dAZ"dBdCZ#dDdEZ$dFdGZ%dHdIZ&dJdKZ'dLdMZ(dNdOZ)dPdQZ*dRdSZ+dTdUZ,dVdWZ-dXdYZ.dZd[Z/dS)] TestPlistlibcCs"zttjWn Yn0dSN)osunlinkrTESTFNselfrF/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_plistlib.pytearDownszTestPlistlib.tearDownNcCsrtdddddgdgddd d d d td dddtddgddddddgtddddddttd}d|d<|S)NDoodahAB g@@@)g?ill,l @Jzu Mässig, MaßTF)rrtextabc)Z anotherStringZ aUnicodeValueZ aTrueValue aFalseValueZ deeperDict  !)aStringZaListZaFloatZanIntZaBigIntZaBigInt2Z aNegativeIntZaNegativeBigIntaDictZsomeDataZ someMoreDataZ nestedDataZaDateZ anEmptyDictZ anEmptyListzThat was a unicode key.uÅbenraa)dictdatetimelist)r fmtplrrr_creates2zTestPlistlib._createcCs0|}||dd||ddddS)Nr&rr'rF)r- assertEqual)r r,rrr test_createszTestPlistlib.test_createcCs|}ttjd}t||Wdn1s60Yttjd}t|}Wdn1sl0Y|t|t|| t tj|d| t tjddS)Nwbrbfilename) r-openrr plistlibdumploadr.r( assertRaisesAttributeError)r r,fppl2rrrtest_ios*(zTestPlistlib.test_ioc CsVtg}tD]D}|j|d$|jttj||dWdq 1sF0Yq dSNr+)object ALL_FORMATSsubTestr7 TypeErrorr4dumps)r r,r+rrrtest_invalid_typeszTestPlistlib.test_invalid_typecCs|ttdWdn1s(0Y|ttdWdn1sZ0Y|ttdWdn1s0YdS)Nz not an inti)r7rAr ValueErrorr rrrtest_invalid_uids  & & zTestPlistlib.test_invalid_uidc CsdD]}tD]|}|j||dZtj||d}t|}||t|||tj||d}|||Wdq 1s~0Yq qtD]f}ddddddd fD]F}|j||d$|jt tj||dWdq1s0YqqdS) N) rilllrlr,r+r=lrrl) r?r@r4rBloadsassertIsInstanceintr.r7 OverflowErrorr r,r+datar:data2rrrtest_ints   . zTestPlistlib.test_intc CsdD]}tD]}|j||d^tjt||d}t|}||t|||tj||d}|||Wdq 1s0Yq qdS)N)r r!rKr=) r?r@r4rB bytearrayrMrNbytesr.rQrrrtest_bytearrays   zTestPlistlib.test_bytearraycCsJ|}t|}t|}|t|t|t|}|||dSr)r-r4rBrMr.r()r r,rRr:rSrrr test_bytess    zTestPlistlib.test_bytescCs4ddigggggggg}|tt||dS)Ntestaaaaaar.r4rMrBr rRrrrtest_indentation_arraysz#TestPlistlib.test_indentation_arrayc CsDddddddddd d iiiiiiiii}|tt||dS) N123456789rZr[r\rrrtest_indentation_dicts(z"TestPlistlib.test_indentation_dictcCs<dddddigggggigii}|tt||dS)Nr^r_r`rYrZr[r\rrrtest_indentation_dict_mixs z&TestPlistlib.test_indentation_dict_mixcCsrtd}|ttj|tjd|tdtdtdtdtdtdd }|ttj|tjd|dS) Nrr=rrrHrIrJl)Zuid0Zuid2Zuid8Zuid16Zuid32Zuid63)rr.r4rMrB FMT_BINARY)r rRZ dict_datarrrtest_uidszTestPlistlib.test_uidcCstd}||jddSNr)rr.rR)r uidrrr test_uid_dataszTestPlistlib.test_uid_datacCs<|tdtd|tdtd|tdddS)Nrrznot uid)r.rZassertNotEqualr rrr test_uid_eqszTestPlistlib.test_uid_eqcCs |ttdttddSrk)r.hashrr rrr test_uid_hashszTestPlistlib.test_uid_hashcCs|ttdddS)NrzUID(1))r.reprrr rrr test_uid_repr szTestPlistlib.test_uid_reprcCs|ttdddSrk)r.operatorindexrr rrrtest_uid_index#szTestPlistlib.test_uid_indexc Cs<ttjdD](}|ttjtd|dtdqdS)Nr)protocol)rangepickleHIGHEST_PROTOCOLr.rMrBr)r protorrrtest_uid_pickle&szTestPlistlib.test_uid_picklecCs8|ttdtd|ttdtddSrk)r.copyrdeepcopyr rrr test_uid_copy*szTestPlistlib.test_uid_copyc CshtD]^}|j|d>tt|}tj||d}||t|dWdq1sX0YqdSNr=z2generated data was not identical to Apple's output)r?r@r4rMTESTDATArBr.)r r+r,rRrrrtest_appleformatting.s z!TestPlistlib.test_appleformattingc Csd|_tD]}|j|dh|j|d}tjt||d}|t|t|dtt|}|t|t|dWdq 1s0Yq dSr) ZmaxDiffr?r@r-r4rMrr.r()r r+r,r:rrrtest_appleformattingfromliteral7s z,TestPlistlib.test_appleformattingfromliteralc CstD]}|j|dt}|j|d}tj|||dtjt||d}|t |t |tt|}|t |t |Wdq1s0YqdSr<) r?r@rr-r4r5r6getvaluer.r()r r+rr,r:rrr test_bytesioCs zTestPlistlib.test_bytesioc Cst}d|d<d|d<d|d<tD]}dD]}|j||dt}tj||||dtjt|tjd }| t |t ||r| t | gd n| t | gd Wdq,1s0Yq,q$dS Nrrrrrr)FT)r+ sort_keys)Z dict_typer)rrr) collections OrderedDictr?r@rr4r5r6rr.r(r*keys)r r,r+rrr:rrrtest_keysort_bytesioNs z!TestPlistlib.test_keysort_bytesioc Cst}d|d<d|d<d|d<tD]}dD]}|j||dztj|||d}tj|tjd }|t|t||r|t | gd n|t | gd Wdq,1s0Yq,q$dSr) rrr?r@r4rBrMr.r(r*r)r r,r+rrRr:rrr test_keysortcszTestPlistlib.test_keysortc Csrddi}tD]`}|j|d@|jttj||dt}|jttj|||dWdq 1sb0Yq dS)N*aNumberr=)r?r@r7rAr4rBrr5)r r,r+rrrrtest_keys_no_stringus z TestPlistlib.test_keys_no_stringc Csddd}tD]}|j|d|tj||ddd}t|}||ddit}tj|||ddd|}t|}||ddiWdq1s0YqdS) NrZaWord)rsnaker=TF)r+Zskipkeysrr) r?r@r4rBrMr.rr5r)r r,r+rRr:r9rrr test_skipkeyss"  zTestPlistlib.test_skipkeysc Csdddd}tD]}|j|dftj||d}t|}||ddgddgddgd|tjkrx||d |d Wdq1s0YqdS) N)rr)rfirstsecondthirdr=rrrrrr)r?r@r4rBrMr.ri assertIsNotr r,r+rRr:rrrtest_tuple_memberss  zTestPlistlib.test_tuple_membersc Csddgddgddgd}tD]|}|j|d\tj||d}t|}||ddgddgddgd||d|dWdq1s0YqdS) Nrrrrrr=rrr?r@r4rBrMr.rrrrrtest_list_memberss zTestPlistlib.test_list_membersc Csddiddiddid}tD]|}|j|d\tj||d}t|}||ddiddiddid||d|dWdq1s0YqdS) Nrrrrrr=rrrrrrrtest_dict_memberss zTestPlistlib.test_dict_membersc CstdD]}t|}d|}|dks,|dvrXtj|tjd}|dkr|t||n:|t tj|tjdWdn1s0Ytj|tj dqdS)Nzstring containing %s z r= ) rxchrr4rBFMT_XMLr.rMr7rEri)r irZ testStringrRrrrtest_controlcharacterss  .z#TestPlistlib.test_controlcharactersc Csbddi}tD]P}|j|d0tj||d}|t||Wdq 1sR0Yq dS)NZpythonu🐍r=)r?r@r4rBr.rM)r r,r+rRrrrtest_non_bmp_characterss z$TestPlistlib.test_non_bmp_charactersc CstD]}|j|d|ttjd|dWdn1sD0Y|ttjd|dWdn1s|0YWdq1s0YqdS)Nr=uu)r?r@r7UnicodeEncodeErrorr4rB)r r+rrrtest_lone_surrogatess  , z!TestPlistlib.test_lone_surrogatesc CstD]|}|j|d\d}gd}ttj||d}ttj||d}||||||Wdq1sv0YqdS)Nr=abc)rrrr)r?r@r4rMrBr.)r r+Ztest1Ztest2Zresult1Zresult2rrrtest_nondictroots zTestPlistlib.test_nondictrootcCs&dD]}|ttjd|qdS)N)zkey inside an arrayz-key inside an array23z&key inside an array3z %sr7rEr4rMencoder rrrrtest_invalidarrays  zTestPlistlib.test_invalidarraycCs>dD]4}|ttjd||ttjd|qdS)N)z0kcompound keyzsingle keyzmissing keyzek1v15.3k1k2double keyz%sz-%srrrrrtest_invaliddicts    zTestPlistlib.test_invaliddictcCs|ttjddS)Ns-not integerr7rEr4rMr rrrtest_invalidintegers z TestPlistlib.test_invalidintegercCs|ttjddS)Ns*not realrr rrrtest_invalidreals zTestPlistlib.test_invalidrealcCsRd}t|}||dd}t|}||dd}t|}||ddS)Ns%456is%0xar#s&0123{)r4rMr.)r r,valuerrrtest_integer_notations s     z#TestPlistlib.test_integer_notationsc Csttj}ddtjfddtjfddtjffD]\}}}|jtjd}|j|dN| d|}|| d |}t |}| t|t|Wdq,1s0Yq,dS) Nsutf-8zutf-8sutf-16z utf-16-lez utf-16-ber=)encodingsUTF-8)rr4rcodecsBOM_UTF8 BOM_UTF16_LE BOM_UTF16_BEr-r@replacedecoderrMr.r()r baseZ xml_encodingrZbomr,rRr:rrrtest_xml_encodingss       zTestPlistlib.test_xml_encodingscCs<|ttjiddWdn1s.0YdS)NZblahr=)r7rEr4rBr rrrtest_dump_invalid_format,s z%TestPlistlib.test_dump_invalid_formatcCs:|tjtdWdn1s,0YdS)Ns!these are not plist file contents)r7r4InvalidFileExceptionrMr rrrtest_load_invalid_file0sz#TestPlistlib.test_load_invalid_filecCsLtd}d|_|t tj|tjdWdn1s>0YdS)Nrr=)rrRr7rEr4rBri)r Zneg_uidrrrtest_modified_uid_negative4s z'TestPlistlib.test_modified_uid_negativecCsLtd}d|_|t tj|tjdWdn1s>0YdS)NrrDr=)rrRr7rPr4rBri)r Zhuge_uidrrrtest_modified_uid_huge:s z#TestPlistlib.test_modified_uid_hugecCsB|tjd tjttjdWdn1s40YdS)Nz)XML entity declarations are not supportedr=)ZassertRaisesRegexr4rrMXML_PLIST_WITH_ENTITYrr rrrtest_xml_plist_with_entity_decl@sz,TestPlistlib.test_xml_plist_with_entity_decl)N)0__name__ __module__ __qualname__rr-r/r;rCrFrTrWrXr]rgrhrjrmrnrprrrur|rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrsZ           rc@speZdZedddddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS)TestBinaryPlistlibr offset_sizeref_sizecGsdg}d}g}|D],}|||d|||t|7}qtd||t|d|}||||tjd|tj dS)Nbplist00bigz>6xBBQQQrrr=) appendto_byteslenstructpackextendr4rMjoinri)rrZobjectsrRoffsetZoffsetsxtailrrrrHs     zTestBinaryPlistlib.decodecCsd}|t|ddidS)Ns<bplist00QaQbrr)r.r4rMr\rrrtest_nonstandard_refs_sizeWsz-TestBinaryPlistlib.test_nonstandard_refs_sizecCsddddddddtdd d d d d tdd d gddd if D]\}|j|d<tj|gdtjd}|t|dt|Wdq:1s0Yq:dS)NFT90^@abcdeu абвгдabcder"r#r$r%rYrr12rir=iL) r)rUr@r4rBriZ assertLessrrq)r rrRrrrtest_dump_duplicatescsz'TestBinaryPlistlib.test_dump_duplicatescCsdddddddtddd dd d tdd d gd dd if D]}|j|djtj|gdtjd}t|\}}t|trt |}| ||| ||| ||Wdq81s0Yq8dS)NFTrrrrr"r#r$r%rrrrrrr=) r)rUr@r4rBrirM isinstancetupler*r.assertIs)r rrRrrrrr test_identityls   z TestBinaryPlistlib.test_identitycCsg}||ttj|tjd}||d|gf}|d|ttj|tjd}||dd|i}||d<ttj|tjd}||d|dS)Nr=rr)rr4rMrBrir)r rrrrr test_cyclesys zTestBinaryPlistlib.test_cyclesc CsdD]}ddt|D}z |jg|dRddd}WntyLYq0t|D](}||t|t|d|d}qV||d qdS) N)i,順cSs g|]}d|dddqS)rrr)r).0rrrr rz8TestBinaryPlistlib.test_deep_nesting..sTseedrrrrseed)rxrRecursionErrorrNr*r.r)r Nchunksresultrrrrtest_deep_nestings     z$TestBinaryPlistlib.test_deep_nestingc CstdD]j}|j|dJtjdtj|d}tj|tjd}|t||Wdq1sd0YqdS)N)ll)tsr)Zsecondsr=) r@r)ZutcfromtimestampZ timedeltar4rBrir.rM)r rdrRrrrtest_large_timestamps  z'TestBinaryPlistlib.test_large_timestampcCsL||dd||dd||dd||dddS)NF Tr)rrr.r rrrtest_load_singletonssz'TestBinaryPlistlib.test_load_singletonscCsp||dd||dd||dd||dd||d d ||d d dS) Nsrssisܺl:}s #EglMW s ܺvT2lMW )r.rr rrr test_load_ints  z TestBinaryPlistlib.test_load_intc sgtddtddddtddtd d }d D] |fd d tdDq8|D]v}|d|dP|tj$|t|gdWdn1s0YWdq^1s0Yq^dS)Nrrr#rr%$34@)pc3s|]}|VqdSrr)rjrrr rz6TestBinaryPlistlib.test_unsupported..ztoken Z02xs)rxrr@r7r4rrrV)r Z unsupportedtokenrrrtest_unsupportedsz#TestBinaryPlistlib.test_unsupportedc Cs|tD]r\}}||P|tj$tjd|tjdWdn1sN0YWdq1sl0YqdS)Nrr=)INVALID_BINARY_PLISTSr@r7r4rrMri)r namerRrrrtest_invalid_binarys  z&TestBinaryPlistlib.test_invalid_binaryN)rrr staticmethodrrrrrrrrrr rrrrrrFs      rc@seZdZddZdS)TestKeyedArchivecCsRdddtddddgdd d gd gd d tdid}|ttd|dS)Nrz$nullrrzKeyArchive UID Test)Zpytypez$classz NS.stringOC_BuiltinPythonUnicode)rZOC_PythonUnicodeNSStringZNSObjectZOC_PythonStringr)z $classnamez$classesz $classhintsZNSKeyedArchiverroot)z$versionz$objectsz $archiverz$topr)rr.r4rMrr\rrrtest_keyed_archive_datas"z(TestKeyedArchive.test_keyed_archive_dataN)rrrrrrrrrsrc@seZdZddZdS) MiscTestCasecCsddh}tj|t|ddS)NZ PlistFormatZ PLISTHEADER) blacklist)rZ check__all__r4)r rrrr test__all__szMiscTestCase.test__all__N)rrrrrrrrrsr__main__)r}rsryrZunittestr4r r)rZbinasciirrYriorrrrir?Z a2b_base64rrr ZTestCaserrrrrmainrrrrs>     4  W 7|