HEX
Server: LiteSpeed
System: Linux server.nevid-deploma.com 4.18.0-553.111.1.lve.el8.x86_64 #1 SMP Fri Mar 13 13:42:17 UTC 2026 x86_64
User: smilepac (1037)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/cppython/lib/python3.8/test/__pycache__/test_plistlib.cpython-38.opt-2.pyc
U

.D�g���(@svddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZddlmZejejfZeje	�d�eje	�d�de	�d�iZd	Zd
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1g(ZGd2d3�d3ej�ZGd4d5�d5ej�ZGd6d7�d7ej�ZGd8d9�d9ej�ZGd:d;�d;ej�Zed<k�rre��dS)=�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<?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"zt�tj�WnYnXdS�N)�os�unlinkr�TESTFN��self�r�1/opt/cppython/lib/python3.8/test/test_plistlib.py�tearDown�szTestPlistlib.tearDownNcCsvtddddddddggd	d
ddd
dtddddtdddddgd�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��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&rF)r,�assertEqual)r
r+rrr�test_create�szTestPlistlib.test_createc	Cs�|��}ttjd��}t�||�W5QRXttjd��}t�|�}W5QRX|�t|�t|��|�	t
tj|d�|�	t
tjd�dS)N�wb�rb�filename)r,�openrr�plistlib�dump�loadr-r'�assertRaises�AttributeError)r
r+�fp�pl2rrr�test_io�szTestPlistlib.test_ioc
CsBt�g}tD]0}|j|d��|jttj||d�W5QRXqdS�N�r*)�object�ALL_FORMATS�subTestr6�	TypeErrorr3�dumps)r
r+r*rrr�test_invalid_type�szTestPlistlib.test_invalid_typec	Cs^|�t��td�W5QRX|�t��td�W5QRX|�t��td�W5QRXdS)Nz
not an int�i��)r6r@r�
ValueErrorrrrr�test_invalid_uid�szTestPlistlib.test_invalid_uidcCs�dD]r}tD]h}|j||d��Ptj||d�}t�|�}|�|t�|�||�tj||d�}|�||�W5QRXqqtD]R}dddddddfD]2}|j||d��|jt	tj||d�W5QRXq�q|dS)	N)r��i���l���l����l����rl�����r+r*r<lr�rl����)
r>r?r3rA�loads�assertIsInstance�intr-r6�
OverflowError�r
r+r*�datar9�data2rrr�test_int�s 

�zTestPlistlib.test_intcCs�dD]v}tD]l}|j||d��Ttjt|�|d�}t�|�}|�|t�|�||�tj||d�}|�||�W5QRXqqdS)N)rr rJr<)	r>r?r3rA�	bytearrayrLrM�bytesr-rPrrr�test_bytearray�s
zTestPlistlib.test_bytearraycCsJ|��}t�|�}t�|�}|�t|�t|��t�|�}|�||�dSr)r,r3rArLr-r'�r
r+rQr9rRrrr�
test_bytes�s


zTestPlistlib.test_bytescCs4ddigggggggg}|�t�t�|��|�dS)N�test�aaaaaa�r-r3rLrA�r
rQrrr�test_indentation_array�sz#TestPlistlib.test_indentation_arrayc
CsDddddddddd	d
iiiiiiiii}|�t�t�|��|�dS)N�1�2�3�4�5�6�7�8�9rZr[r\rrr�test_indentation_dict�s(z"TestPlistlib.test_indentation_dictcCs<dddddigggggigii}|�t�t�|��|�dS)Nr^r_r`rYrZr[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<rrrGrHrIl)Zuid0Zuid2Zuid8Zuid16Zuid32Zuid63)rr-r3rLrA�
FMT_BINARY)r
rQZ	dict_datarrr�test_uids�zTestPlistlib.test_uidcCstd�}|�|jd�dS�Nr)rr-rQ)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���dSrk)r-�hashrrrrr�
test_uid_hashszTestPlistlib.test_uid_hashcCs|�ttd��d�dS)NrzUID(1))r-�reprrrrrr�
test_uid_repr szTestPlistlib.test_uid_reprcCs|�t�td��d�dSrk)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-rLrAr)r
�protorrr�test_uid_pickle&szTestPlistlib.test_uid_picklecCs8|�t�td��td��|�t�td��td��dSrk)r-�copyr�deepcopyrrrr�
test_uid_copy*szTestPlistlib.test_uid_copycCsddD]Z}tD]P}|j||d��8tjt||d�}tj||d�}|�|t|d�W5QRXqqdS)N)TF)r*�use_builtin_types�r�r<�2generated data was not identical to Apple's output)r>r?r3rL�TESTDATArAr-)r
r�r*r+rQrrr�test_appleformatting.s
��z!TestPlistlib.test_appleformattingc
Cs�d|_tD]t}|j|d��^|j|d�}tjt||d�}|�t|�t|�d�t�t|�}|�t|�t|�d�W5QRXq
dS)Nr<r�)	ZmaxDiffr>r?r,r3rLr�r-r')r
r*r+r9rrr�test_appleformattingfromliteral9s��z,TestPlistlib.test_appleformattingfromliteralc
Cs�tD]�}|j|d��xt�}|j|d�}tj|||d�tjt|���|d�}|�t	|�t	|��t�t|����}|�t	|�t	|��W5QRXqdSr;)
r>r?rr,r3r4r5�getvaluer-r')r
r*rr+r9rrr�test_bytesioEszTestPlistlib.test_bytesiocCs�t��}d|d<d|d<d|d<tD]�}dD]�}|j||d���t�}tj||||d�tjt|���tjd	�}|�	t
|�t
|��|r�|�	t|���dddg�n|�	t|���dddg�W5QRXq,q$dS�
Nrrrrrr)FT)r*�	sort_keys)Z	dict_type)
�collections�OrderedDictr>r?rr3r4r5r�r-r'r)�keys)r
r+r*r�rr9rrr�test_keysort_bytesioPs �z!TestPlistlib.test_keysort_bytesiocCs�t��}d|d<d|d<d|d<tD]�}dD]�}|j||d��ttj|||d�}tj|tjd	�}|�t|�t|��|r�|�t	|�
��dddg�n|�t	|�
��dddg�W5QRXq,q$dSr�)r�r�r>r?r3rArLr-r'r)r�)r
r+r*r�rQr9rrr�test_keysorteszTestPlistlib.test_keysortc
Cs^ddi}tD]L}|j|d��6|jttj||d�t�}|jttj|||d�W5QRXqdS)N�*�aNumberr<)r>r?r6r@r3rArr4)r
r+r*rrrr�test_keys_no_stringwsz TestPlistlib.test_keys_no_stringc
Cs�ddd�}tD]�}|j|d��rtj||ddd�}t�|�}|�|ddi�t�}tj|||ddd�|��}t�|���}|�|ddi�W5QRXqdS)	Nr�ZaWord)r��snaker<TF)r*Zskipkeysr�r�)	r>r?r3rArLr-rr4r�)r
r+r*rQr9r8rrr�
test_skipkeys�s0��
�zTestPlistlib.test_skipkeysc
Cs�dddd�}tD]r}|j|d��\tj||d�}t�|�}|�|ddgddgddgd��|tjkrx|�|d	|d
�W5QRXqdS)N)rr)r���first�secondZthirdr<rrrr�r�r�)r>r?r3rArLr-ri�assertIsNot�r
r+r*rQr9rrr�test_tuple_members�s�
�
zTestPlistlib.test_tuple_membersc
Cs�ddgddgddgd�}tD]h}|j|d��Rtj||d�}t�|�}|�|ddgddgddgd��|�|d|d�W5QRXqdS)	Nrrrr�r�r<r�r��r>r?r3rArLr-r�r�rrr�test_list_members�s�
�zTestPlistlib.test_list_membersc
Cs�ddiddiddid�}tD]h}|j|d��Rtj||d�}t�|�}|�|ddiddiddid��|�|d|d�W5QRXqdS)	Nrrrrr�r<r�r�r�r�rrr�test_dict_members�s�
�zTestPlistlib.test_dict_membersc
Cs�td�D]�}t|�}d|}|dks,|dkrXtj|tjd�}|dkr~|�t�|�|�n&|�t��tj|tjd�W5QRXtj|tj	d�qdS)N�zstring containing %s� z
	r<�
)
rx�chrr3rA�FMT_XMLr-rLr6rDri)r
�irZ
testStringrQrrr�test_controlcharacters�sz#TestPlistlib.test_controlcharactersc
CsNddi}tD]<}|j|d��&tj||d�}|�t�|�|�W5QRXqdS)NZpythonu🐍r<)r>r?r3rAr-rL)r
r+r*rQrrr�test_non_bmp_characters�s
z$TestPlistlib.test_non_bmp_characterscCsntD]d}|j|d��N|�t��tjd|d�W5QRX|�t��tjd|d�W5QRXW5QRXqdS)Nr<u�u�)r>r?r6�UnicodeEncodeErrorr3rA)r
r*rrr�test_lone_surrogates�sz!TestPlistlib.test_lone_surrogatesc
CsvtD]l}|j|d��Vd}ddddg}t�tj||d��}t�tj||d��}|�||�|�||�W5QRXqdS)Nr<�abcrrr)r>r?r3rLrAr-)r
r*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>�r6rDr3rL�encode�r
r�rrr�test_invalidarray�s

�zTestPlistlib.test_invalidarraycCs>dD]4}|�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_invaliddictcCs|�ttjd�dS)Ns-<plist><integer>not integer</integer></plist>�r6rDr3rLrrrr�test_invalidintegers
�z TestPlistlib.test_invalidintegercCs|�ttjd�dS)Ns*<plist><integer>not real</integer></plist>r�rrrr�test_invalidreal
s
�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>�{)r3rLr-)r
r+�valuerrr�test_integer_notationss


z#TestPlistlib.test_integer_notationsc
Cs�ttj}ddtjfddtjfddtjffD]n\}}}|jtjd�}|j|d��D|�	d|�}||�
d��|�}t�|�}|�
t|�t|��W5QRXq,dS)	Nsutf-8zutf-8sutf-16z	utf-16-lez	utf-16-ber<)�encodingsUTF-8)r�r3r��codecs�BOM_UTF8�BOM_UTF16_LE�BOM_UTF16_BEr,r?�replace�decoder�rLr-r')r
�baseZxml_encodingr�Zbomr+rQr9rrr�test_xml_encodingss



�	
zTestPlistlib.test_xml_encodingsc	Cs(|�t��tjidd�W5QRXdS)NZblahr<)r6rDr3rArrrr�test_dump_invalid_format.sz%TestPlistlib.test_dump_invalid_formatc	Cs&|�tj��t�d�W5QRXdS)Ns!these are not plist file contents)r6r3�InvalidFileExceptionrLrrrr�test_load_invalid_file2sz#TestPlistlib.test_load_invalid_filec	Cs8td�}d|_|�t��tj|tjd�W5QRXdS)Nr���r<)rrQr6rDr3rAri)r
Zneg_uidrrr�test_modified_uid_negative6sz'TestPlistlib.test_modified_uid_negativec	Cs8td�}d|_|�t��tj|tjd�W5QRXdS)NrrCr<)rrQr6rOr3rAri)r
Zhuge_uidrrr�test_modified_uid_huge<sz#TestPlistlib.test_modified_uid_hugec	Cs.|�tjd��tjttjd�W5QRXdS)Nz)XML entity declarations are not supportedr<)ZassertRaisesRegexr3r�rL�XML_PLIST_WITH_ENTITYr�rrrr�test_xml_plist_with_entity_declBs�z,TestPlistlib.test_xml_plist_with_entity_decl)N)0�__name__�
__module__�__qualname__rr,r.r:rBrErSrVrXr]rgrhrjrmrnrprrrur|rr�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�sZ





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}qt�d||t|�d|�}|�|�|�|�tjd�|�tj	d�S)N�bplist00��bigz>6xBBQQQrrr<)
�append�to_bytes�len�struct�pack�extendr3rL�joinri)r�r�ZobjectsrQ�offsetZoffsets�x�tailrrrr�Js

�

zTestBinaryPlistlib.decodecCsd}|�t�|�ddi�dS)Ns<bplist00�QaQbrr)r-r3rLr\rrr�test_nonstandard_refs_sizeYsz-TestBinaryPlistlib.test_nonstandard_refs_sizecCs�ddddddddt�dd	d
d	dd�t�d�td�dd
gddd
ifD]H}|j|d��2tj|gdtjd�}|�t|�dt	|��W5QRXqBdS)NFT�90�������^@�abcdeu
абвгд�abcder!r"r#r$r�Y�rr��12�r�i�r<iL)
r(r3�DatarTr?rAriZ
assertLessr�rq)r
r�rQrrr�test_dump_duplicateses�z'TestBinaryPlistlib.test_dump_duplicatescCs�dddddddt�ddd	dd
d
�t�d�td�ddgd
ddif
D]v}|j|d��`tj|gdtjd�}t�|�\}}t|t	�r�t
|�}|�||�|�||�|�||�W5QRXq@dS)NFTr�r�r�r�r!r"r#r$rr�r�r�r�rr<)
r(r3r�rTr?rArirL�
isinstance�tupler)r-�assertIs)r
r�rQrrrrr�
test_identityos �
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�r3rLrArir�)r
rrrrr�test_cycles}s
zTestBinaryPlistlib.test_cyclesc	Cs�dD]�}dd�t|�D�}z|j|d
�ddd��}Wntk
rHYqXt|�D](}|�|t�|�t|�d�|d}qR|�|d	�qdS)N)i,順cSs g|]}d|d�dd��qS)��rr�r�)r�)�.0r�rrr�
<listcomp>�sz8TestBinaryPlistlib.test_deep_nesting.<locals>.<listcomp>�Tseedr�r�rr�seed)r�)rxr��RecursionErrorrMr)r-r�)r
�N�chunks�resultr�rrr�test_deep_nesting�s
z$TestBinaryPlistlib.test_deep_nestingc
Cs`dD]V}|j|d��@tj�d�tj|d�}tj|tjd�}|�t�|�|�W5QRXqdS)N)l����l)�tsr)Zsecondsr<)	r?r(ZutcfromtimestampZ	timedeltar3rArir-rL)r
r��drQrrr�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_intcs�tdd�tdd�dtdd�td	d
��}dD] �|��fdd
�td�D��q*|D]N}|�d|d����2|�tj��|�t|g�d�W5QRXW5QRXqPdS)Nrr�r"�r�r$�$�3�4�@)�p�������c3s|]}�|VqdSrr)r��j�r�rr�	<genexpr>�sz6TestBinaryPlistlib.test_unsupported.<locals>.<genexpr>�ztoken Z02xs)r�r$)rxr�r?r6r3r�r�rU)r
Zunsupported�tokenrrr�test_unsupported�s��z#TestBinaryPlistlib.test_unsupportedcCsTtD]J\}}|�|��2|�tj��tjd|tjd�W5QRXW5QRXqdS)Nr�r<)�INVALID_BINARY_PLISTSr?r6r3r�rLri)r
�namerQrrr�test_invalid_binary�sz&TestBinaryPlistlib.test_invalid_binaryN)r�r�r��staticmethodr�r�r�r�r�r�r�r�r�rrrrrrr�Hs
	

r�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestPlistlibDeprecatedc
Csddddd�d�}dddt�d�d�d�}|�tjtj�|�t��t�|tj�W5QRX|�t��t�	tj�}W5QRX|�
||�t�tj�ttjd��(}|�t��t�||�W5QRXW5QRXttjd��&}|�t��t�	|�}W5QRXW5QRX|�
||�dS)	Nr��	r��buffer��keyZaltrQ�r�subr/r0)
r3r�Z
addCleanuprr
r�assertWarns�DeprecationWarningZ
writePlistZ	readPlistr-r	r2)r
Zpl_inZpl_outr9r8rrr�test_io_deprecated�s4��	��	 z)TestPlistlibDeprecated.test_io_deprecatedcCs�ddddd�d�}|�t��t�|�}W5QRX|�t��t�|�}W5QRX|�|t�|�|tdtddt�d�d�d��|�t��t�|�}W5QRX|�||�dS)Nr�rr�rrr)	rrr3ZwritePlistToBytes�readPlistFromBytesrMr'r-r�rWrrr�test_bytes_deprecated�s,����	z,TestPlistlibDeprecated.test_bytes_deprecatedc	Cs�dt�d�i}ddi}t�|�}t�|�}|�||�|�||�tj|dd�}|�||�|�||�|�t��t�|�}W5QRX|�||�|�||�dS)NrshelloFr�)r3r�rArLr-rrr)r
Zin_dataZout_data�bufZcurrrr�test_dataobject_deprecateds

z1TestPlistlibDeprecated.test_dataobject_deprecatedN)r�r�r�rrr!rrrrr�s'rc@seZdZdd�ZdS)�TestKeyedArchivecCsVdddtd�dd�dddd	d
gdd	gd�gd
dtd�id�}|�t�td�|�dS)Nr�z$nullrrzKeyArchive UID Test)Zpytypez$classz	NS.stringZOC_BuiltinPythonUnicodeZOC_PythonUnicodeZNSStringZNSObjectZOC_PythonString)z
$classnamez$classesz$classhintsZNSKeyedArchiver�root)z$versionz$objectsz	$archiverz$topr)rr-r3rLr�r\rrr�test_keyed_archive_data s.�������z(TestKeyedArchive.test_keyed_archive_dataN)r�r�r�r$rrrrr"sr"c@seZdZdd�ZdS)�MiscTestCasecCsddh}tj|t|d�dS)NZPlistFormatZPLISTHEADER)�	blacklist)rZcheck__all__r3)r
r&rrr�test__all__@szMiscTestCase.test__all__N)r�r�r�r'rrrrr%?sr%�__main__)r}rsryr�Zunittestr3r	r(r�Zbinasciir�rYr�iorrr�rir>Z
a2b_base64r�r�rZTestCaserr�rr"r%r��mainrrrr�<module>s�4�W���9~Y