HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/test_plistlib.cpython-310.opt-1.pyc
o

�i��@s&ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZddlmZddlmZejejfZeje	�d�eje	�d�de	�d	�iZd
Zgd�ZGdd
�d
ej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Zedkr�e��dSdS)�N)�support)�	os_helper)�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<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd" [
   <!ENTITY entity "replacement text">
  ]>
<plist version="1.0">
  <dict>
    <key>A</key>
    <string>&entity;</string>
  </dict>
</plist>
)()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(O���A)z$extremally large bytes size (64-bit)s,O�����A)zinteger overflow in bytes sizes,O��������A)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*3�c@sveZdZdd�Zd\dd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Z d>d?�Z!d@dA�Z"dBdC�Z#dDdE�Z$dFdG�Z%dHdI�Z&dJdK�Z'dLdM�Z(dNdO�Z)dPdQ�Z*dRdS�Z+dTdU�Z,dVdW�Z-dXdY�Z.dZd[�Z/dS)]�TestPlistlibcCs z	t�tj�WdSYdS�N)�os�unlinkr�TESTFN��self�r�//usr/local/lib/python3.10/test/test_plistlib.py�tearDown�szTestPlistlib.tearDownNcCsrtdddddgd�gddd	d
ddtd
dddtddgd�d�d�dddgt�dddddd�t�t�d�}d|d<|S)N�Doodah�A�B�g@@@)���g�?i�l����l,���l���� �@Jz<hello & 'hi' there!>u
Mässig, MaßTF�)rr�text��a�b�c)Z
anotherStringZ
aUnicodeValueZ
aTrueValue�aFalseValueZ
deeperDict�
<binary gunk>�<lots of binary gunk><lots of binary gunk><lots of binary gunk><lots of binary gunk><lots of binary gunk><lots of binary gunk><lots of binary gunk><lots of binary gunk><lots of binary gunk><lots of binary gunk>���
��!)�aStringZaListZaFloatZanIntZaBigIntZaBigInt2ZaNegativeIntZaNegativeBigInt�aDictZsomeDataZsomeMoreDataZ
nestedDataZaDateZanEmptyDictZanEmptyListzThat was a unicode key.uÅbenraa)�dict�datetime�list)r�fmt�plrrr�_create�s2��zTestPlistlib._createcCs0|��}|�|dd�|�|ddd�dS)Nr'rr(r F)r.�assertEqual)rr-rrr�test_create�szTestPlistlib.test_createcCs�|��}ttjd��}t�||�Wd�n1swYttjd��
}t�|�}Wd�n1s6wY|�t|�t|��|�	t
tj|d�|�	t
tjd�dS)N�wb�rb�filename)r.�openrr�plistlib�dump�loadr/r)�assertRaises�AttributeError)rr-�fp�pl2rrr�test_io�s��zTestPlistlib.test_ioc	CsVt�g}tD]"}|j|d��|jttj||d�Wd�n1s#wYqdS�N�r,)�object�ALL_FORMATS�subTestr8�	TypeErrorr5�dumps)rr-r,rrr�test_invalid_type�s���zTestPlistlib.test_invalid_typecCs�|�t��td�Wd�n1swY|�t��td�Wd�n1s-wY|�t��
td�Wd�dS1sGwYdS)Nz
not an int�i��)r8rBr�
ValueErrorr
rrr�test_invalid_uid�s
�
�
"�zTestPlistlib.test_invalid_uidc
Cs�dD]C}tD]>}|j||d��-tj||d�}t�|�}|�|t�|�||�tj||d�}|�||�Wd�n1s?wYqqtD]3}dddddddfD]#}|j||d��|jt	tj||d�Wd�n1suwYqWqHdS)	N)r��i���l���l����l����rl�����r-r,r>lr�rl����)
r@rAr5rC�loads�assertIsInstance�intr/r8�
OverflowError�rr-r,�datar;�data2rrr�test_int�s,
���	
�����zTestPlistlib.test_intc
Cs�dD]E}tD]@}|j||d��/tjt|�|d�}t�|�}|�|t�|�||�tj||d�}|�||�Wd�n1sAwYqqdS)N)r!r"rLr>)	r@rAr5rC�	bytearrayrNrO�bytesr/rRrrr�test_bytearray�s
����zTestPlistlib.test_bytearraycCsJ|��}t�|�}t�|�}|�t|�t|��t�|�}|�||�dSr	)r.r5rCrNr/r))rr-rSr;rTrrr�
test_bytes�s


zTestPlistlib.test_bytescCs4ddigggggggg}|�t�t�|��|�dS)N�test�aaaaaa�r/r5rNrC�rrSrrr�test_indentation_array�sz#TestPlistlib.test_indentation_arrayc
CsDddddddddd	d
iiiiiiiii}|�t�t�|��|�dS)N�1�2�3�4�5�6�7�8�9r[r\r]rrr�test_indentation_dicts(z"TestPlistlib.test_indentation_dictcCs<dddddigggggigii}|�t�t�|��|�dS)Nr_r`rarZr[r\r]rrr�test_indentation_dict_mixs z&TestPlistlib.test_indentation_dict_mixcCsrtd�}|�t�tj|tjd��|�td�td�td�td�td�td�d	�}|�t�tj|tjd��|�dS)
Nrr>rrrIrJrKl)Zuid0Zuid2Zuid8Zuid16Zuid32Zuid63)rr/r5rNrC�
FMT_BINARY)rrSZ	dict_datarrr�test_uids�"zTestPlistlib.test_uidcCstd�}|�|jd�dS�Nr)rr/rS)r�uidrrr�
test_uid_dataszTestPlistlib.test_uid_datacCs<|�td�td��|�td�td��|�td�d�dS)Nrrznot uid)r/rZassertNotEqualr
rrr�test_uid_eqszTestPlistlib.test_uid_eqcCs |�ttd��ttd���dSrl)r/�hashrr
rrr�
test_uid_hashs zTestPlistlib.test_uid_hashcCs|�ttd��d�dS)NrzUID(1))r/�reprrr
rrr�
test_uid_repr!szTestPlistlib.test_uid_reprcCs|�t�td��d�dSrl)r/�operator�indexrr
rrr�test_uid_index$szTestPlistlib.test_uid_indexc	Cs<ttjd�D]}|�t�tjtd�|d��td��qdS)Nr�)�protocol)�range�pickle�HIGHEST_PROTOCOLr/rNrCr)r�protorrr�test_uid_pickle's&�zTestPlistlib.test_uid_picklecCs8|�t�td��td��|�t�td��td��dSrl)r/�copyr�deepcopyr
rrr�
test_uid_copy+szTestPlistlib.test_uid_copyc	CshtD]/}|j|d��t�t|�}tj||d�}|�|t|d�Wd�n1s,wYqdS�Nr>z2generated data was not identical to Apple's output)r@rAr5rN�TESTDATArCr/)rr,r-rSrrr�test_appleformatting/s����z!TestPlistlib.test_appleformattingc	Cs�d|_tD]D}|j|d��4|j|d�}tjt||d�}|�t|�t|�d�t�t|�}|�t|�t|�d�Wd�n1sDwYqdSr�)	ZmaxDiffr@rAr.r5rNr�r/r))rr,r-r;rrr�test_appleformattingfromliteral8s�����z,TestPlistlib.test_appleformattingfromliteralc	Cs�tD]Q}|j|d��At�}|j|d�}tj|||d�tjt|���|d�}|�t	|�t	|��t�t|����}|�t	|�t	|��Wd�n1sNwYqdSr=)
r@rArr.r5r6r7�getvaluer/r))rr,rr-r;rrr�test_bytesioDs���zTestPlistlib.test_bytesioc
Cs�t��}d|d<d|d<d|d<tD][}dD]V}|j||d��Et�}tj||||d�tjt|���tjd	�}|�	t
|�t
|��|rQ|�	t|���gd
��n|�	t|���gd��Wd�n1sgwYqqdS�Nrrrrrr)FT)r,�	sort_keys)Z	dict_typer)rrr)
�collections�OrderedDictr@rArr5r6r7r�r/r)r+�keys)rr-r,r�rr;rrr�test_keysort_bytesioOs*������z!TestPlistlib.test_keysort_bytesioc
Cs�t��}d|d<d|d<d|d<tD]S}dD]N}|j||d��=tj|||d�}tj|tjd	�}|�t|�t|��|rI|�t	|�
��gd
��n|�t	|�
��gd��Wd�n1s_wYqqdSr�)r�r�r@rAr5rCrNr/r)r+r�)rr-r,r�rSr;rrr�test_keysortds$�����zTestPlistlib.test_keysortc	Csrddi}tD]0}|j|d�� |jttj||d�t�}|jttj|||d�Wd�n1s1wYqdS)N�*�aNumberr>)r@rAr8rBr5rCrr6)rr-r,rrrr�test_keys_no_stringvs���z TestPlistlib.test_keys_no_stringc	Cs�ddd�}tD]N}|j|d��>tj||ddd�}t�|�}|�|ddi�t�}tj|||ddd�|��}t�|���}|�|ddi�Wd�n1sPwYqdS)	Nr�ZaWord)r��snaker>TF)r,Zskipkeysr�r�)	r@rAr5rCrNr/rr6r�)rr-r,rSr;r:rrr�
test_skipkeys�s(��

����zTestPlistlib.test_skipkeysc	Cs�dddd�}tD]C}|j|d��3tj||d�}t�|�}|�|ddgddgddgd��|tjkr<|�|d	|d
�Wd�n1sFwYqdS)N)rr)r���first�second�thirdr>rrrr�r�r�)r@rAr5rCrNr/rj�assertIsNot�rr-r,rSr;rrr�test_tuple_members�s&�
�
����zTestPlistlib.test_tuple_membersc	Cs�ddgddgddgd�}tD]>}|j|d��.tj||d�}t�|�}|�|ddgddgddgd��|�|d|d�Wd�n1sGwYqdS)	Nrrrr�r�r>r�r��r@rAr5rCrNr/r�r�rrr�test_list_members��"�
����zTestPlistlib.test_list_membersc	Cs�ddiddiddid�}tD]>}|j|d��.tj||d�}t�|�}|�|ddiddiddid��|�|d|d�Wd�n1sGwYqdS)	Nrrrrr�r>r�r�r�r�rrr�test_dict_members�r�zTestPlistlib.test_dict_membersc	Cs�td�D]M}t|�}d|}|dks|dvr,tj|tjd�}|dkr+|�t�|�|�n|�t��tj|tjd�Wd�n1sDwYtj|tj	d�qdS)N�zstring containing %s� z
	r>�
)
ry�chrr5rC�FMT_XMLr/rNr8rFrj)r�irZ
testStringrSrrr�test_controlcharacters�s���z#TestPlistlib.test_controlcharactersc	Csbddi}tD](}|j|d��tj||d�}|�t�|�|�Wd�n1s)wYqdS)NZpythonu🐍r>)r@rAr5rCr/rN)rr-r,rSrrr�test_non_bmp_characters�s���z$TestPlistlib.test_non_bmp_charactersc
Cs�tD]P}|j|d��@|�t��tjd|d�Wd�n1s"wY|�t��tjd|d�Wd�n1s>wYWd�n1sMwYqdS)Nr>u�u�)r@rAr8�UnicodeEncodeErrorr5rC)rr,rrr�test_lone_surrogates�s������z!TestPlistlib.test_lone_surrogatesc	Cs�tD]>}|j|d��.d}gd�}t�tj||d��}t�tj||d��}|�||�|�||�Wd�n1s;wYqdS)Nr>�abc)rrrr�)r@rAr5rNrCr/)rr,Ztest1Ztest2Zresult1Zresult2rrr�test_nondictroot�s���zTestPlistlib.test_nondictrootcCs&dD]}|�ttjd|���qdS)N)z<key>key inside an array</key>z-<key>key inside an array2</key><real>3</real>z&<true/><key>key inside an array3</key>z <plist><array>%s</array></plist>�r8rFr5rN�encode�rr�rrr�test_invalidarray�s


��zTestPlistlib.test_invalidarraycCs>dD]}|�ttjd|���|�ttjd|���qdS)N)z0<key><true/>k</key><string>compound key</string>z<key>single key</key>z<string>missing key</string>ze<key>k1</key><string>v1</string><real>5.3</real><key>k1</key><key>k2</key><string>double key</string>z<plist><dict>%s</dict></plist>z-<plist><array><dict>%s</dict></array></plist>r�r�rrr�test_invaliddict�s

�

��zTestPlistlib.test_invaliddictcC�|�ttjd�dS)Ns-<plist><integer>not integer</integer></plist>�r8rFr5rNr
rrr�test_invalidinteger�
�z TestPlistlib.test_invalidintegercCr�)Ns*<plist><integer>not real</integer></plist>r�r
rrr�test_invalidreal	r�zTestPlistlib.test_invalidrealcCsRd}t�|�}|�|d�d}t�|�}|�|d�d}t�|�}|�|d�dS)Ns%<plist><integer>456</integer></plist>i�s%<plist><integer>0xa</integer></plist>r$s&<plist><integer>0123</integer></plist>�{)r5rNr/)rr-�valuerrr�test_integer_notations
s


z#TestPlistlib.test_integer_notationsc	Cs�ttj}ddtjfddtjfddtjffD]A\}}}|jtjd�}|j|d��'|�	d|�}||�
d��|�}t�|�}|�
t|�t|��Wd�n1sRwYqdS)	Nsutf-8zutf-8sutf-16z	utf-16-lez	utf-16-ber>)�encodingsUTF-8)r�r5r��codecs�BOM_UTF8�BOM_UTF16_LE�BOM_UTF16_BEr.rA�replace�decoder�rNr/r))r�baseZxml_encodingr�Zbomr-rSr;rrr�test_xml_encodingss



�	
���zTestPlistlib.test_xml_encodingscCs>|�t��tjidd�Wd�dS1swYdS)NZblahr>)r8rFr5rCr
rrr�test_dump_invalid_format-s"�z%TestPlistlib.test_dump_invalid_formatcCs<|�tj��t�d�Wd�dS1swYdS)Ns!these are not plist file contents)r8r5�InvalidFileExceptionrNr
rrr�test_load_invalid_file1s"�z#TestPlistlib.test_load_invalid_filecC�Ntd�}d|_|�t��tj|tjd�Wd�dS1s wYdS)Nr���r>)rrSr8rFr5rCrj)rZneg_uidrrr�test_modified_uid_negative5�
"�z'TestPlistlib.test_modified_uid_negativecCr�)NrrEr>)rrSr8rQr5rCrj)rZhuge_uidrrr�test_modified_uid_huge;r�z#TestPlistlib.test_modified_uid_hugecCsD|�tjd��tjttjd�Wd�dS1swYdS)Nz)XML entity declarations are not supportedr>)ZassertRaisesRegexr5r�rN�XML_PLIST_WITH_ENTITYr�r
rrr�test_xml_plist_with_entity_declAs
�"�z,TestPlistlib.test_xml_plist_with_entity_declr	)0�__name__�
__module__�__qualname__rr.r0r<rDrGrUrXrYr^rhrirkrnrorqrsrvr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�s\


	


rc@speZdZeddd�dd��Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�TestBinaryPlistlibr��offset_size�ref_sizecGs�dg}d}g}|D]}|�|�|d��|�|�|t|�7}q	t�d||t|�d|�}|�|�|�|�tjd�|�tj	d�S)N�bplist00��bigz>6xBBQQQrrr>)
�append�to_bytes�len�struct�pack�extendr5rN�joinrj)r�r�ZobjectsrS�offsetZoffsets�x�tailrrrr�Is


�

zTestBinaryPlistlib.decodecCsd}|�t�|�ddi�dS)Ns<bplist00�QaQbrr)r/r5rNr]rrr�test_nonstandard_refs_sizeXsz-TestBinaryPlistlib.test_nonstandard_refs_sizecCs�ddddddddt�dd	d
d	dd�td�dd
gddd
if
D].}|j|d��tj|gdtjd�}|�t|�dt|��Wd�n1sFwYqdS)NFT�90�������^@�abcdeu
абвгд�abcder#r$r%r&r�Y�rr��12�r�i�r>iL)	r*rVrAr5rCrjZ
assertLessr�rr)rr�rSrrr�test_dump_duplicatesds����z'TestBinaryPlistlib.test_dump_duplicatescCs�dddddddt�ddd	dd
d
�td�ddgd
ddifD]E}|j|d��5tj|gdtjd�}t�|�\}}t|t�r@t	|�}|�
||�|�
||�|�||�Wd�n1s\wYqdS)NFTr�r�r�r�r#r$r%r&rr�r�r�r�rr>)r*rVrAr5rCrjrN�
isinstance�tupler+r/�assertIs)rr�rSrrrrr�
test_identityms�
���z TestBinaryPlistlib.test_identitycCs�g}|�|�t�tj|tjd��}|�|d|�gf}|d�|�t�tj|tjd��}|�|dd|�i}||d<t�tj|tjd��}|�|d|�dS)Nr>rr�)r�r5rNrCrjr�)rrrrrr�test_cycleszs
zTestBinaryPlistlib.test_cyclesc	Cs�dD]D}dd�t|�D�}z|jg|�d�Rddd��}Wn	ty&Yqwt|�D]}|�|t�|�t|�d�|d}q+|�|d	�qdS)
N)i,順cSs g|]}d|d�dd��qS)��rr�r�)r�)�.0r�rrr�
<listcomp>�s z8TestBinaryPlistlib.test_deep_nesting.<locals>.<listcomp>sTseedr�r�rr�seed)ryr��RecursionErrorrOr+r/r�)r�N�chunks�resultr�rrr�test_deep_nesting�s �
�z$TestBinaryPlistlib.test_deep_nestingc	CstdD]5}|j|d��%tj�d�tj|d�}tj|tjd�}|�t�|�|�Wd�n1s2wYqdS)N)l����l)�tsr)Zsecondsr>)	rAr*ZutcfromtimestampZ	timedeltar5rCrjr/rN)rr��drSrrr�test_large_timestamp�s

����z'TestBinaryPlistlib.test_large_timestampcCsL|�|�d�d�|�|�d�d�|�|�d�d�|�|�d�d�dS)N��F�	T�r)r�r�r/r
rrr�test_load_singletons�sz'TestBinaryPlistlib.test_load_singletonscCsp|�|�d�d�|�|�d�d�|�|�d�d�|�|�d�d�|�|�d	�d
�|�|�d�d�dS)
Nsrs��s��i�s�ܺ�l�:�}s	#Eg����l�MW�	s	�ܺ�vT2l�����MW�	)r/r�r
rrr�
test_load_int�s��z TestBinaryPlistlib.test_load_intc
s�gtdd��tdd��d�d�tdd��td	d
��}dD]�|��fdd
�td�D��q|D];}|�d|d����(|�tj��|�t|g�d�Wd�n1sVwYWd�n1sewYq/dS)Nrr�r$�r�r&�$�3�4�@)�p�������c3s�|]}�|VqdSr	r)r��j�r�rr�	<genexpr>�s�z6TestBinaryPlistlib.test_unsupported.<locals>.<genexpr>�ztoken Z02xs)ryr�rAr8r5r�r�rW)rZunsupported�tokenrrr�test_unsupported�s(���������z#TestBinaryPlistlib.test_unsupportedc
Cs|tD]9\}}|�|��(|�tj��tjd|tjd�Wd�n1s'wYWd�n1s6wYqdS)Nr�r>)�INVALID_BINARY_PLISTSrAr8r5r�rNrj)r�namerSrrr�test_invalid_binary�s�����z&TestBinaryPlistlib.test_invalid_binaryN)r�r�r��staticmethodr�r�r�r�r�r�r�r�rrrrrrrr�Gs	
	

r�c@�eZdZdd�ZdS)�TestKeyedArchivecCsRdddtd�dd�dgd�d	d
gd�gdd
td�id�}|�t�td�|�dS)Nr�z$nullrrzKeyArchive UID Test)Zpytypez$classz	NS.string�OC_BuiltinPythonUnicode)rZOC_PythonUnicode�NSStringZNSObjectZOC_PythonStringr)z
$classnamez$classesz$classhintsZNSKeyedArchiver�root)z$versionz$objectsz	$archiverz$topr)rr/r5rNr�r]rrr�test_keyed_archive_data�s"������z(TestKeyedArchive.test_keyed_archive_dataN)r�r�r�rrrrrr��rc@r)�MiscTestCasecCsddh}tj|t|d�dS)NZPlistFormatZPLISTHEADER)�not_exported)rZcheck__all__r5)rrrrr�test__all__�szMiscTestCase.test__all__N)r�r�r�r rrrrr�rr�__main__) r~rtrzr�Zunittestr5r
r*r�Zbinasciir�rZrZtest.supportr�iorrr�rjr@Z
a2b_base64r�r�rZTestCaserr�rrr��mainrrrr�<module>sD4
�W
7| �