Your IP : 216.73.216.85


Current Path : /opt/alt/python39/lib64/python3.9/test/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/__pycache__/test_plistlib.cpython-39.opt-2.pyc

a

XC?h���@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZddlmZejejfZeje	�d�eje	�d�de	�d�iZd	Zgd
�ZGdd�dej�ZGd
d�dej�ZGdd�dej�ZGdd�dej�Zedk�re��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Yn0dS�N)�os�unlinkr�TESTFN��self�r�7/opt/alt/python39/lib64/python3.9/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'rF)r-�assertEqual)r
r,rrr�test_create�szTestPlistlib.test_createcCs�|��}ttjd��}t�||�Wd�n1s60Yttjd��}t�|�}Wd�n1sl0Y|�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�s*(zTestPlistlib.test_ioc	CsVt�g}tD]D}|j|d��$|jttj||d�Wd�q1sF0YqdS�N�r+)�object�ALL_FORMATS�subTestr7�	TypeErrorr4�dumps)r
r,r+rrr�test_invalid_type�szTestPlistlib.test_invalid_typecCs�|�t��td�Wd�n1s(0Y|�t��td�Wd�n1sZ0Y|�t��td�Wd�n1s�0YdS)Nz
not an int�i��)r7rAr�
ValueErrorrrrr�test_invalid_uid�s&&zTestPlistlib.test_invalid_uidc
Cs�dD]�}tD]|}|j||d��Ztj||d�}t�|�}|�|t�|�||�tj||d�}|�||�Wd�q1s~0YqqtD]f}dddddddfD]F}|j||d��$|jt	tj||d�Wd�q�1s�0Yq�q�dS)	N)r��i���l���l����l����rl�����r,r+r=lr�rl����)
r?r@r4rB�loads�assertIsInstance�intr.r7�
OverflowError�r
r,r+�datar:�data2rrr�test_int�s
.
�zTestPlistlib.test_intc
Cs�dD]�}tD]�}|j||d��^tjt|�|d�}t�|�}|�|t�|�||�tj||d�}|�||�Wd�q1s�0YqqdS)N)r r!rKr=)	r?r@r4rB�	bytearrayrMrN�bytesr.rQrrr�test_bytearray�s
zTestPlistlib.test_bytearraycCsJ|��}t�|�}t�|�}|�t|�t|��t�|�}|�||�dSr)r-r4rBrMr.r()r
r,rRr:rSrrr�
test_bytes�s


zTestPlistlib.test_bytescCs4ddigggggggg}|�t�t�|��|�dS)N�test�aaaaaa�r.r4rMrB�r
rRrrr�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=rrrHrIrJl)Zuid0Zuid2Zuid8Zuid16Zuid32Zuid63)rr.r4rMrB�
FMT_BINARY)r
rRZ	dict_datarrr�test_uids�zTestPlistlib.test_uidcCstd�}|�|jd�dS�Nr)rr.rR)r
Zuidrrr�
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�)Zprotocol)�range�pickleZHIGHEST_PROTOCOLr.rMrBr)r
�protorrr�test_uid_pickle&szTestPlistlib.test_uid_picklecCs8|�t�td��td��|�t�td��td��dSrk)r.�copyrZdeepcopyrrrr�
test_uid_copy*szTestPlistlib.test_uid_copyc	CshtD]^}|j|d��>t�t|�}tj||d�}|�|t|d�Wd�q1sX0YqdS�Nr=z2generated data was not identical to Apple's output)r?r@r4rM�TESTDATArBr.)r
r+r,rRrrr�test_appleformatting.s�z!TestPlistlib.test_appleformattingc	Cs�d|_tD]�}|j|d��h|j|d�}tjt||d�}|�t|�t|�d�t�t|�}|�t|�t|�d�Wd�q
1s�0Yq
dSr|)	ZmaxDiffr?r@r-r4rMr}r.r()r
r+r,r:rrr�test_appleformattingfromliteral7s��z,TestPlistlib.test_appleformattingfromliteralc	Cs�tD]�}|j|d���t�}|j|d�}tj|||d�tjt|���|d�}|�t	|�t	|��t�t|����}|�t	|�t	|��Wd�q1s�0YqdSr<)
r?r@rr-r4r5r6�getvaluer.r()r
r+rr,r:rrr�test_bytesioCszTestPlistlib.test_bytesioc
Cs�t��}d|d<d|d<d|d<tD]�}dD]�}|j||d���t�}tj||||d�tjt|���tjd	�}|�	t
|�t
|��|r�|�	t|���gd
��n|�	t|���gd��Wd�q,1s�0Yq,q$dS�Nrrrrrr)FT)r+�	sort_keys)Z	dict_typer)rrr)
�collections�OrderedDictr?r@rr4r5r6r�r.r(r*�keys)r
r,r+r�rr:rrr�test_keysort_bytesioNs �z!TestPlistlib.test_keysort_bytesioc
Cs�t��}d|d<d|d<d|d<tD]�}dD]�}|j||d��ztj|||d�}tj|tjd	�}|�t|�t|��|r�|�t	|�
��gd
��n|�t	|�
��gd��Wd�q,1s�0Yq,q$dSr�)r�r�r?r@r4rBrMr.r(r*r�)r
r,r+r�rRr:rrr�test_keysortcszTestPlistlib.test_keysortc	Csrddi}tD]`}|j|d��@|jttj||d�t�}|jttj|||d�Wd�q1sb0YqdS)N�*�aNumberr=)r?r@r7rAr4rBrr5)r
r,r+rrrr�test_keys_no_stringusz TestPlistlib.test_keys_no_stringc	Cs�ddd�}tD]�}|j|d��|tj||ddd�}t�|�}|�|ddi�t�}tj|||ddd�|��}t�|���}|�|ddi�Wd�q1s�0YqdS)	Nr�ZaWord)r��snaker=TF)r+Zskipkeysr�r�)	r?r@r4rBrMr.rr5r�)r
r,r+rRr:r9rrr�
test_skipkeyss"��

�zTestPlistlib.test_skipkeysc	Cs�dddd�}tD]�}|j|d��ftj||d�}t�|�}|�|ddgddgddgd��|tjkrx|�|d	|d
�Wd�q1s�0YqdS)N)rr)r���first�secondZthirdr=rrrr�r�r�)r?r@r4rBrMr.ri�assertIsNot�r
r,r+rRr:rrr�test_tuple_members�s�
�
zTestPlistlib.test_tuple_membersc	Cs�ddgddgddgd�}tD]|}|j|d��\tj||d�}t�|�}|�|ddgddgddgd��|�|d|d�Wd�q1s�0YqdS)	Nrrrr�r�r=r�r��r?r@r4rBrMr.r�r�rrr�test_list_members�s�
�zTestPlistlib.test_list_membersc	Cs�ddiddiddid�}tD]|}|j|d��\tj||d�}t�|�}|�|ddiddiddid��|�|d|d�Wd�q1s�0YqdS)	Nrrrrr�r=r�r�r�r�rrr�test_dict_members�s�
�zTestPlistlib.test_dict_membersc	Cs�td�D]�}t|�}d|}|dks,|dvrXtj|tjd�}|dkr�|�t�|�|�n:|�t�� tj|tjd�Wd�n1s�0Ytj|tj	d�qdS)N�zstring containing %s� z
	r=�
)
rv�chrr4rB�FMT_XMLr.rMr7rEri)r
�irZ
testStringrRrrr�test_controlcharacters�s.z#TestPlistlib.test_controlcharactersc	Csbddi}tD]P}|j|d��0tj||d�}|�t�|�|�Wd�q1sR0YqdS)NZpythonu🐍r=)r?r@r4rBr.rM)r
r,r+rRrrr�test_non_bmp_characters�s
z$TestPlistlib.test_non_bmp_charactersc
Cs�tD]�}|j|d���|�t��tjd|d�Wd�n1sD0Y|�t��tjd|d�Wd�n1s|0YWd�q1s�0YqdS)Nr=u�u�)r?r@r7�UnicodeEncodeErrorr4rB)r
r+rrr�test_lone_surrogates�s,z!TestPlistlib.test_lone_surrogatesc	Cs�tD]|}|j|d��\d}gd�}t�tj||d��}t�tj||d��}|�||�|�||�Wd�q1sv0YqdS)Nr=�abc)rrrr�)r?r@r4rMrBr.)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>�r7rEr4rM�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>�r7rEr4rMrrrr�test_invalidintegers
�z TestPlistlib.test_invalidintegercCs|�ttjd�dS)Ns*<plist><integer>not real</integer></plist>r�rrrr�test_invalidreals
�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>�{)r4rMr.)r
r,�valuerrr�test_integer_notationss


z#TestPlistlib.test_integer_notationsc	Cs�ttj}ddtjfddtjfddtjffD]�\}}}|jtjd�}|j|d��N|�	d|�}||�
d��|�}t�|�}|�
t|�t|��Wd�q,1s�0Yq,dS)	Nsutf-8zutf-8sutf-16z	utf-16-lez	utf-16-ber=)�encodingsUTF-8)r}r4r��codecs�BOM_UTF8�BOM_UTF16_LE�BOM_UTF16_BEr-r@�replace�decoder�rMr.r()r
�baseZxml_encodingr�Zbomr,rRr:rrr�test_xml_encodingss



�	
zTestPlistlib.test_xml_encodingscCs<|�t��tjidd�Wd�n1s.0YdS)NZblahr=)r7rEr4rBrrrr�test_dump_invalid_format,sz%TestPlistlib.test_dump_invalid_formatcCs:|�tj��t�d�Wd�n1s,0YdS)Ns!these are not plist file contents)r7r4�InvalidFileExceptionrMrrrr�test_load_invalid_file0sz#TestPlistlib.test_load_invalid_filecCsLtd�}d|_|�t�� tj|tjd�Wd�n1s>0YdS)Nr���r=)rrRr7rEr4rBri)r
Zneg_uidrrr�test_modified_uid_negative4sz'TestPlistlib.test_modified_uid_negativecCsLtd�}d|_|�t�� tj|tjd�Wd�n1s>0YdS)NrrDr=)rrRr7rPr4rBri)r
Zhuge_uidrrr�test_modified_uid_huge:sz#TestPlistlib.test_modified_uid_hugecCsB|�tjd�� tjttjd�Wd�n1s40YdS)Nz)XML entity declarations are not supportedr=)ZassertRaisesRegexr4r�rM�XML_PLIST_WITH_ENTITYr�rrrr�test_xml_plist_with_entity_decl@s�z,TestPlistlib.test_xml_plist_with_entity_decl)N)0�__name__�
__module__�__qualname__rr-r/r;rCrFrTrWrXr]rgrhrjrlrmrorqrtryr{r~rr�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�structZpack�extendr4rM�joinri)r�r�ZobjectsrR�offsetZoffsets�x�tailrrrr�Hs


�

zTestBinaryPlistlib.decodecCsd}|�t�|�ddi�dS)Ns<bplist00�QaQbrr)r.r4rMr\rrr�test_nonstandard_refs_sizeWsz-TestBinaryPlistlib.test_nonstandard_refs_sizecCs�ddddddddt�dd	d
d	dd�td�dd
gddd
if
D]\}|j|d��<tj|gdtjd�}|�t|�dt|��Wd�q:1s�0Yq:dS)NFT�90�������^@�abcdeu
абвгд�abcder"r#r$r%r�Y�rr��12�r�i�r=iL)	r)rUr@r4rBriZ
assertLessr�rp)r
r�rRrrr�test_dump_duplicatescs�z'TestBinaryPlistlib.test_dump_duplicatescCs�dddddddt�ddd	dd
d
�td�ddgd
ddifD]�}|j|d��jtj|gdtjd�}t�|�\}}t|t�r�t	|�}|�
||�|�
||�|�||�Wd�q81s�0Yq8dS)NFTr�r�r�r�r"r#r$r%rr�r�r�r�rr=)r)rUr@r4rBrirM�
isinstance�tupler*r.�assertIs)r
r�rRrrrrr�
test_identityls�
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�r4rMrBrir�)r
rrrrr�test_cyclesys
zTestBinaryPlistlib.test_cyclesc	Cs�dD]�}dd�t|�D�}z |jg|�d�Rddd��}WntyLYq0t|�D](}|�|t�|�t|�d�|d}qV|�|d	�qdS)
N)i,順cSs g|]}d|d�dd��qS)��rr�r�)r�)�.0r�rrr�
<listcomp>�rz8TestBinaryPlistlib.test_deep_nesting.<locals>.<listcomp>sTseedr�r�rrZseed)rvr��RecursionErrorrNr*r.r�)r
�NZchunks�resultr�rrr�test_deep_nesting�s 
z$TestBinaryPlistlib.test_deep_nestingc	CstdD]j}|j|d��Jtj�d�tj|d�}tj|tjd�}|�t�|�|�Wd�q1sd0YqdS)N)l����l)�tsr)Zsecondsr=)	r@r)ZutcfromtimestampZ	timedeltar4rBrir.rM)r
r��drRrrr�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��q8|D]v}|�d|d����P|�tj��$|�t|g�d�Wd�n1s�0YWd�q^1s�0Yq^dS)Nrr�r#�r�r%�$�3�4�@)�p�������c3s|]}�|VqdSrr)r��j�r�rr�	<genexpr>�rz6TestBinaryPlistlib.test_unsupported.<locals>.<genexpr>�ztoken Z02xs)rvr�r@r7r4r�r�rV)r
Zunsupported�tokenrrr�test_unsupported�s����z#TestBinaryPlistlib.test_unsupportedc
Cs|tD]r\}}|�|��P|�tj��$tjd|tjd�Wd�n1sN0YWd�q1sl0YqdS)Nr�r=)�INVALID_BINARY_PLISTSr@r7r4r�rMri)r
�namerRrrr�test_invalid_binary�sz&TestBinaryPlistlib.test_invalid_binaryN)r�r�r��staticmethodr�r�r�r�r�r�r�r�r�rrrrrrr�Fs	
	

r�c@seZdZdd�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)r
ZOC_PythonUnicode�NSStringZNSObjectZOC_PythonStringr)z
$classnamez$classesz$classhintsZNSKeyedArchiver�root)z$versionz$objectsz	$archiverz$topr)rr.r4rMr}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__r4)r
rrrr�test__all__�szMiscTestCase.test__all__N)r�r�r�rrrrrr�sr�__main__)rzrrrwr�Zunittestr4r	r)r�Zbinasciir�rYr�iorrr�rir?Z
a2b_base64r}r�rZTestCaserr�r	rr��mainrrrr�<module>s>4
�W
7|