a
    äzeIR  ã                   @   sØ  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZzd dl	Z	W n e
yf   dZ	Y n0 G dd„ dƒZG dd„ dejeƒZG dd„ dejeƒZG d	d
„ d
ejeƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejeƒZG dd„ dejeƒZG dd„ dejƒZdZejdkr$dndZG dd„ dƒZe eejkd¡G dd„ dejƒƒZdd„ ZG d d!„ d!ejeƒZG d"d#„ d#ejƒZG d$d%„ d%ejeƒZeje  e	d&¡G d'd(„ d(ejeƒƒƒZ!e"d)krÔe #¡  dS )*é    )ÚsupportNc                   @   s   e Zd Zdd„ ZdS )ÚHelperMixinc              	   G   sÊ   t  t j|g|¢R Ž ¡}|  ||¡ z’ttjdƒ$}t j||g|¢R Ž  W d   ƒ n1 s\0    Y  ttjdƒ}t  |¡}W d   ƒ n1 s’0    Y  |  ||¡ W t 	tj¡ nt 	tj¡ 0 d S )NÚwbÚrb)
ÚmarshalÚloadsÚdumpsÚassertEqualÚopenr   ÚTESTFNÚdumpÚloadÚunlink)ÚselfÚsampleÚextraÚnewÚf© r   ú'/usr/lib/python3.9/test/test_marshal.pyÚhelper   s    2(zHelperMixin.helperN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s   r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚIntTestCasec                 C   s6   t jd }|r2| |fD ]}|  |¡ q|d? }q
d S )Né   é   )ÚsysÚmaxsizer   )r   ÚnÚexpectedr   r   r   Ú	test_ints   s
    
zIntTestCase.test_intsc                 C   sÌ   d}| d }||| |d?  fD ]L}|r"dt j|dddd }t |¡}|  ||¡ |dkrdd	}q&|dL }q&q"t d
¡}|  |d¡ t d¡}|  |d¡ t d¡}|  |d¡ t d¡}|  |d¡ d S )Nl   ÿÿÿÿ r   ó   Ié   ÚlittleT)Úsignedéÿÿÿÿr   s	   IþÜº˜vT2l   þ\u1ÚQ’ s	   I#Eg‰«Íïlûÿÿÿÿ\u1ÚQ’ s	   I*;L]nl   Tv0ur{ s	   I÷æÕÄ³¢‘€lûÿÿÿ	Tv0ur{ )ÚintÚto_bytesr   r   r	   )r   Zmaxint64Zminint64ÚbaseÚsÚgotr   r   r   Ú
test_int64%   s$    





zIntTestCase.test_int64c                 C   s   dD ]}|   |¡ qd S )N)TF©r   )r   Úbr   r   r   Ú	test_bool<   s    zIntTestCase.test_boolN)r   r   r   r!   r,   r/   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd„ ZdS )ÚFloatTestCasec                 C   sÔ   d}t jd }||kr>| |fD ]}|  t|ƒ¡ q |d }qd}t |d¡}t |¡}|  ||¡ t |d¡}t |¡}|  ||¡ t jd }||k rÐ| |fD ]"}t|ƒ}|  |¡ |  |d¡ q¢|d9 }qd S )NgÙ}ÚõÐò¾:gŸ6˜Ò«ôsgS£’:Ý^@g        r   r   gìZ1%)r   r   r   Úfloatr   r   r   r	   )r   Zsmallr   r    r   r*   r+   r   r   r   Útest_floatsA   s(    





zFloatTestCase.test_floatsN)r   r   r   r2   r   r   r   r   r0   @   s   r0   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚStringTestCasec                 C   s0   ddddd fD ]}|   t t |¡¡¡ qd S ©NÚ õ   AndrÃ¨ PrevinÚabcú é'  )r   r   r   r   ©r   r*   r   r   r   Útest_unicode\   s    zStringTestCase.test_unicodec                 C   s$   ddddd fD ]}|   |¡ qd S r4   r-   r:   r   r   r   Útest_string`   s    zStringTestCase.test_stringc                 C   s$   ddddd fD ]}|   |¡ qd S )Nó    s   Andrè Previnó   abcó    r9   r-   r:   r   r   r   Ú
test_bytesd   s    zStringTestCase.test_bytesN)r   r   r   r;   r<   r@   r   r   r   r   r3   [   s   r3   c                   @   s   e Zd Zdd„ ZdS )ÚExceptionTestCasec                 C   s    t  t  t¡¡}|  t|¡ d S ©N)r   r   r   ÚStopIterationr	   )r   r   r   r   r   Útest_exceptionsi   s    z!ExceptionTestCase.test_exceptionsN)r   r   r   rD   r   r   r   r   rA   h   s   rA   c                   @   s2   e Zd Zdd„ Zdd„ Zdd„ Zejdd„ ƒZd	S )
ÚCodeTestCasec                 C   s(   t jj}t t |¡¡}|  ||¡ d S rB   )rA   rD   Ú__code__r   r   r   r	   )r   Úcor   r   r   r   Ú	test_coden   s    zCodeTestCase.test_codec                 C   s&   d}t jjf| }t t |¡¡ d S )Niˆ  )rA   rD   rF   r   r   r   )r   ÚcountZcodesr   r   r   Útest_many_codeobjectss   s    z"CodeTestCase.test_many_codeobjectsc                 C   sP   t dddƒ}t dddƒ}t t ||f¡¡\}}|  |jd¡ |  |jd¡ d S )NÚxÚf1ÚexecÚyÚf2)Úcompiler   r   r   r	   Úco_filename)r   Zco1Zco2r   r   r   Útest_different_filenamesy   s
    z%CodeTestCase.test_different_filenamesc                 C   sL   d}t |ddƒ}t t |¡¡}|jD ] }t|tjƒr&|  |j	|j	¡ q&d S )Nzdef f(): pass
def g(): passZmyfilerM   )
rP   r   r   r   Ú	co_constsÚ
isinstanceÚtypesÚCodeTypeÚassertIsrQ   )r   r*   rG   Úobjr   r   r   Útest_same_filename_used€   s    
z$CodeTestCase.test_same_filename_usedN)	r   r   r   rH   rJ   rR   r   Úcpython_onlyrY   r   r   r   r   rE   m   s
   rE   c                	   @   sR   e Zd Zdddddgdddd	œZd
d„ Zdd„ Zdd„ Zdd„ Zej	dd„ ƒZ
dS )ÚContainerTestCasezfoo@bar.baz.spamgHázns¼@é   r   ú.zyx.41)
r]   r]   r]   r]   r]   r]   r]   r]   r]   r]   Fr6   )ZastringZafloatZanintZ
ashortlongZalistZatupleZabooleanZaunicodec                 C   s   |   | j¡ d S rB   )r   Úd©r   r   r   r   Ú	test_dict”   s    zContainerTestCase.test_dictc                 C   s   |   t| j ¡ ƒ¡ d S rB   )r   Úlistr^   Úitemsr_   r   r   r   Ú	test_list—   s    zContainerTestCase.test_listc                 C   s   |   t| j ¡ ƒ¡ d S rB   )r   Útupler^   Úkeysr_   r   r   r   Ú
test_tupleš   s    zContainerTestCase.test_tuplec                 C   s&   t tfD ]}|  || j ¡ ƒ¡ qd S rB   )ÚsetÚ	frozensetr   r^   re   )r   Úconstructorr   r   r   Ú	test_sets   s    zContainerTestCase.test_setsc                 C   s&   t ƒ }t t |¡¡}|  ||¡ d S rB   )rh   r   r   r   rW   )r   rX   Úobj2r   r   r   Útest_empty_frozenset_singleton¡   s    z0ContainerTestCase.test_empty_frozenset_singletonN)r   r   r   r^   r`   rc   rf   rj   r   rZ   rl   r   r   r   r   r[   ‰   s   ù
r[   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚBufferTestCasec                 C   s6   t dƒ}|  |¡ t t |¡¡}|  t|ƒt¡ d S ©Nr>   )Ú	bytearrayr   r   r   r   r	   ÚtypeÚbytes©r   r.   r   r   r   r   Útest_bytearray«   s    
zBufferTestCase.test_bytearrayc                 C   s6   t dƒ}|  |¡ t t |¡¡}|  t|ƒt¡ d S rn   )Ú
memoryviewr   r   r   r   r	   rp   rq   rr   r   r   r   Útest_memoryview±   s    
zBufferTestCase.test_memoryviewc                 C   s,   t   dd¡}t t |¡¡}|  |d¡ d S )NÚBr>   )Úarrayr   r   r   r	   )r   Úar   r   r   r   Ú
test_array·   s    zBufferTestCase.test_arrayN)r   r   r   rs   ru   ry   r   r   r   r   rm   ©   s   rm   c                   @   st   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚBugsTestCasec                 C   s   t  dgd ¡ d S )Né€   éè  )r   r   r_   r   r   r   Útest_bug_5888452¾   s    zBugsTestCase.test_bug_5888452c                 C   sF   |   ttjd¡ |   ttjd¡ |   ttjt dd ¡d d… ¡ d S )Nó   0ó   fr   éA   r&   )ÚassertRaisesÚ	Exceptionr   r   r   r_   r   r   r   Útest_patch_873224Â   s    zBugsTestCase.test_patch_873224c                 C   s8   |   t t dd¡¡d¡ |   t t dd¡¡d¡ d S )Né   r   r   )r	   r   r   r   r_   r   r   r   Útest_version_argumentÇ   s    z"BugsTestCase.test_version_argumentc              	   C   s>   t dƒD ]0}t|gƒ}zt |¡ W q ty6   Y q0 qd S )Né   )Úrangerq   r   r   r‚   )r   ÚiÚcr   r   r   Ú	test_fuzzÌ   s    
zBugsTestCase.test_fuzzc                    s.   dd„ }|dt jƒ ‡ fdd„}|d|ƒ d S )Nc                 S   s\   |d|  d ƒ |d|  d ƒ |d|  d ƒ |d|  d d|   ƒ |d|  d ƒ d S )Ns   )ó   Ns   (   s   [   s   {Nr~   s   >   r   )ÚNÚcheckr   r   r   Ú	run_tests×   s
    z4BugsTestCase.test_loads_recursion.<locals>.run_testséd   c                    s   ˆ   ttj| ¡ d S rB   ©r   Ú
ValueErrorr   r   )r*   r_   r   r   r   å   s    z0BugsTestCase.test_loads_recursion.<locals>.checkr\   )r   r   )r   rŽ   r   r   r_   r   Útest_loads_recursionÖ   s    z!BugsTestCase.test_loads_recursionc                 C   sÂ   g  }}t jdkrd}nd}t|d ƒD ]}| dg¡ |d }q(t |¡}t |¡}|  t|ƒt|ƒ¡ |  t|d ƒt|d ƒ¡ |  t|d ƒt|d ƒ¡ | dg¡ |  	t
tj|¡ d S )NÚntr|   iÐ  r   r   r&   )ÚosÚnamer‡   Úappendr   r   r   r	   Úlenr   r‘   )r   ÚheadZlastZMAX_MARSHAL_STACK_DEPTHrˆ   ÚdataZnew_headr   r   r   Útest_recursion_limité   s    



z!BugsTestCase.test_recursion_limitc                 C   s>   t tttttttfD ]$}td|fi ƒ}|  	t
tj|ƒ ¡ qd S )NÚsubtyp)r'   r1   Úcomplexrd   ra   Údictrg   rh   rp   r   r‘   r   r   )r   Útypr›   r   r   r   Útest_exact_type_match  s    z"BugsTestCase.test_exact_type_matchc                 C   s   t dƒ}d| }t |¡ d S )Ng    €„.Ar7   )r'   r   r   )r   ÚsizeZ
testStringr   r   r   Útest_large_marshal  s    zBugsTestCase.test_large_marshalc                 C   s   d}|   ttj|¡ d S )Ns	   l       r   )r   Zinvalid_stringr   r   r   Útest_invalid_longs  s    zBugsTestCase.test_invalid_longsc              
   C   s$  ddddddddgff}d	D ] }t |ƒ}g }zàttjd
ƒB}|D ],}t ||¡ |r`| |¡ | | ¡ ¡ qBW d   ƒ n1 s„0    Y  ttjdƒV}t	|ƒD ]<\}}|  
|t |¡¡ |rÌ| |¡ |  
|| | ¡ ¡ q¤W d   ƒ n1 sö0    Y  W t tj¡ qt tj¡ 0 qd S )Nr   r7   s   defç      ð?r   rx   r.   ó   c)r=   s   0123r   r   )r—   r
   r   r   r   r   Úwriter–   ÚtellÚ	enumerater	   r   Úreadr   )r   r™   ZinterleavedZilenZ	positionsr   r^   rˆ   r   r   r   Útest_multiple_dumps_and_loads  s$    

.
6z*BugsTestCase.test_multiple_dumps_and_loadsc                 C   s   d}|   ttj|¡ d S )NÚT)r   Ú	TypeErrorr   r   )r   Zunicode_stringr   r   r   Ú!test_loads_reject_unicode_strings2  s    z.BugsTestCase.test_loads_reject_unicode_stringsc              	   C   s:   G dd„ dt jƒ}dD ]}|  ttj|t |¡ƒ¡ qd S )Nc                       s   e Zd Z‡ fdd„Z‡  ZS )z/BugsTestCase.test_bad_reader.<locals>.BadReaderc                    s(   t ƒ  |¡}|d ur$|dkr$|d7 }|S )Né   i@B )ÚsuperÚreadinto)r   Úbufr   ©Ú	__class__r   r   r¯   9  s    z8BugsTestCase.test_bad_reader.<locals>.BadReader.readinto)r   r   r   r¯   Ú__classcell__r   r   r±   r   Ú	BadReader8  s   r´   )r£   y              ð?s
   0123456789Ú
0123456789)ÚioÚBytesIOr   r‘   r   r   r   )r   r´   Úvaluer   r   r   Útest_bad_reader7  s
    
ÿzBugsTestCase.test_bad_readerc                 C   s8   t  d¡}tt|ƒƒD ]}|  tt j|d|… ¡ qd S )N)ÚhelloZdollyNr   )r   r   r‡   r—   r   ÚEOFErrorr   )r   r™   rˆ   r   r   r   Útest_eofB  s    
zBugsTestCase.test_eofN)r   r   r   r}   rƒ   r…   rŠ   r’   rš   rŸ   r¡   r¢   r©   r¬   r¹   r¼   r   r   r   r   rz   ½   s   
rz   l        l   ÿÿ r#   r­   c                   @   s   e Zd Zdd„ ZdS )Ú
NullWriterc                 C   s   d S rB   r   r:   r   r   r   r¥   K  s    zNullWriter.writeN)r   r   r   r¥   r   r   r   r   r½   J  s   r½   z!test cannot run on 32-bit systemsc                   @   sè   e Zd Zdd„ Zejeddddd„ ƒZejeddddd	„ ƒZejee	d
 dddd„ ƒZ
ejee	d
 dddd„ ƒZejee	d e ed
 ¡ dddd„ ƒZejee	d e ed
 ¡ dddd„ ƒZejeddddd„ ƒZdS )ÚLargeValuesTestCasec                 C   s   |   ttj|tƒ ¡ d S rB   )r   r‘   r   r   r½   )r   r™   r   r   r   Úcheck_unmarshallableP  s    z(LargeValuesTestCase.check_unmarshallabler   F)r    ZmemuseÚdry_runc                 C   s   |   d| ¡ d S )Nó   x©r¿   ©r   r    r   r   r   r@   S  s    zLargeValuesTestCase.test_bytesc                 C   s   |   d| ¡ d S )NrK   rÂ   rÃ   r   r   r   Útest_strW  s    zLargeValuesTestCase.test_strr   c                 C   s   |   d| ¡ d S )NrB   rÂ   rÃ   r   r   r   rf   [  s    zLargeValuesTestCase.test_tuplec                 C   s   |   d g| ¡ d S rB   rÂ   rÃ   r   r   r   rc   _  s    zLargeValuesTestCase.test_listé   c                 C   s   |   tt|ƒƒ¡ d S rB   )r¿   rg   r‡   rÃ   r   r   r   Útest_setc  s    zLargeValuesTestCase.test_setc                 C   s   |   tt|ƒƒ¡ d S rB   )r¿   rh   r‡   rÃ   r   r   r   Útest_frozenseti  s    z"LargeValuesTestCase.test_frozensetc                 C   s   |   t|ƒ¡ d S rB   )r¿   ro   rÃ   r   r   r   rs   o  s    z"LargeValuesTestCase.test_bytearrayN)r   r   r   r¿   r   Z
bigmemtestÚ
LARGE_SIZEr@   rÄ   Úpointer_sizerf   rc   r   Ú	getsizeofrÆ   rÇ   rs   r   r   r   r   r¾   N  s*   



þ
þ
r¾   c                 C   s~   t |ƒ| v rd S |  t |ƒ¡ t|ttttfƒrF|D ]}t| |ƒ q4n0t|tƒrv| 	¡ D ]\}}t| |ƒ t| |ƒ qXt
| ƒS rB   )ÚidÚaddrT   ra   rd   rg   rh   ÚCollectObjectIDsr   rb   r—   )ZidsrX   ÚeÚkÚvr   r   r   rÍ   s  s    

rÍ   c                   @   s„   e Zd ZddddeddhƒfZddd„Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) ÚInstancingTestCaseé{   ç—nƒÀó?r7   )rÒ   r7   Fc                 C   s´   ||f}t tƒ |ƒ}tdtjd ƒD ].}t ||¡}t tƒ t |¡ƒ}|  ||¡ q$|s°t |d¡}	t tƒ t |	¡ƒ}
|  |
|¡ |sœ|  t	|	ƒt	|ƒ¡ n|  
t	|	ƒt	|ƒ¡ d S )Né   r   r   )rÍ   rg   r‡   r   Úversionr   r   r	   ZassertGreaterr—   ZassertGreaterEqual)r   ZrsampleÚ	recursiveÚsimpler   Zn0rÐ   Zs3Zn3Ús2Zn2r   r   r   Úhelper3„  s    zInstancingTestCase.helper3c                 C   s    d}|   |¡ | j|dd d S )Ni¹á T)r×   ©r   rÙ   )r   Zintobjr   r   r   ÚtestIntž  s    
zInstancingTestCase.testIntc                 C   s   d}|   |¡ |  |¡ d S )NrÓ   rÚ   )r   Zfloatobjr   r   r   Ú	testFloat£  s    
zInstancingTestCase.testFloatc                 C   s   d}|   |¡ |  |¡ d S )NZabcdeabcdeabcderÚ   )r   Ústrobjr   r   r   ÚtestStr¨  s    
zInstancingTestCase.testStrc                 C   s   d}|   |¡ |  |¡ d S )Ns   abcdeabcdeabcderÚ   )r   Zbytesobjr   r   r   Ú	testBytes­  s    
zInstancingTestCase.testBytesc                 C   s,   | j D ] }||g}|  |¡ |  |¡ qd S rB   ©re   r   rÙ   )r   rX   Zlistobjr   r   r   ÚtestList²  s    

zInstancingTestCase.testListc                 C   s,   | j D ] }||f}|  |¡ |  |¡ qd S rB   rà   )r   rX   Ztupleobjr   r   r   Ú	testTuple¸  s    

zInstancingTestCase.testTuplec                 C   s4   | j D ](}|df|dfh}|  |¡ |  |¡ qd S ©Nr   r   rà   )r   rX   Zsetobjr   r   r   ÚtestSet¾  s    

zInstancingTestCase.testSetc                 C   s8   | j D ],}t|df|dfhƒ}|  |¡ |  |¡ qd S rã   )re   rh   r   rÙ   )r   rX   Zfrozensetobjr   r   r   ÚtestFrozenSetÄ  s    

z InstancingTestCase.testFrozenSetc                 C   s4   | j D ](}d|d||di}|  |¡ |  |¡ qd S )Nrº   Úgoodbyerà   )r   rX   Zdictobjr   r   r   ÚtestDictÊ  s    

zInstancingTestCase.testDictc                 C   s`   t tdƒ}| ¡ }W d   ƒ n1 s(0    Y  t d¡rHt|tdƒ}|  |¡ |  |¡ d S ©Nr   z.pyrM   )r
   Ú__file__r¨   ÚendswithrP   r   rÙ   )r   r   Úcoder   r   r   Ú
testModuleÐ  s    &

zInstancingTestCase.testModulec                 C   sN   d}d|d||di}||d< | j |dd ||g}| |¡ | j |dd d S )NrÓ   rº   ræ   r   T)rÖ   )rÙ   r–   )r   rX   r^   Úlr   r   r   ÚtestRecursionØ  s    
z InstancingTestCase.testRecursionN)FF)r   r   r   rh   re   rÙ   rÛ   rÜ   rÞ   rß   rá   râ   rä   rå   rç   rì   rî   r   r   r   r   rÑ     s   
rÑ   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚCompatibilityTestCasec                 C   sb   t tdƒ}| ¡ }W d   ƒ n1 s(0    Y  t d¡rHt|tdƒ}t ||¡}t |¡ d S rè   )r
   ré   r¨   rê   rP   r   r   r   )r   rÕ   r   rë   r™   r   r   r   Ú_testâ  s    &
zCompatibilityTestCase._testc                 C   s   |   d¡ d S )Nr   ©rð   r_   r   r   r   Útest0To3ê  s    zCompatibilityTestCase.test0To3c                 C   s   |   d¡ d S )Nr   rñ   r_   r   r   r   Útest1To3í  s    zCompatibilityTestCase.test1To3c                 C   s   |   d¡ d S ©Nr   rñ   r_   r   r   r   Útest2To3ð  s    zCompatibilityTestCase.test2To3c                 C   s   |   d¡ d S )NrÔ   rñ   r_   r   r   r   Útest3To3ó  s    zCompatibilityTestCase.test3To3N)r   r   r   rð   rò   ró   rõ   rö   r   r   r   r   rï   á  s
   rï   c                   @   s*   e Zd ZdZe e¡Zdd„ Zdd„ ZdS )ÚInterningTestCasezthis is an interned stringc                 C   sX   t  t  | j¡¡}|  || j¡ |  t|ƒt| jƒ¡ t |¡}|  t|ƒt|ƒ¡ d S rB   )r   r   r   rÝ   r	   rË   r   Úintern©r   r*   rØ   r   r   r   Ú
testInternú  s
    
zInterningTestCase.testInternc                 C   sZ   t  t  | jd¡¡}|  || j¡ |  t|ƒt| jƒ¡ t |¡}|  t|ƒt|ƒ¡ d S rô   )	r   r   r   rÝ   r	   ZassertNotEqualrË   r   rø   rù   r   r   r   ÚtestNoIntern  s
    
zInterningTestCase.testNoInternN)r   r   r   rÝ   r   rø   rú   rû   r   r   r   r   r÷   ö  s   
r÷   zrequires _testcapic                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚCAPI_TestCasec              	   C   st   t tjd ƒD ]`}t dtj|¡ ttjdƒ}| ¡ }W d   ƒ n1 sL0    Y  t 	tj¡ |  
|d¡ qd S )Nr   éxV4r   s   xV4)r‡   r   rÕ   Ú	_testcapiZpymarshal_write_long_to_filer   r   r
   r¨   r   r	   )r   rÐ   r   r™   r   r   r   Útest_write_long_to_file  s    &z%CAPI_TestCase.test_write_long_to_filec              	   C   sŽ   ddddddd f}t tjd ƒD ]f}t |tj|¡ ttjd	ƒ}| ¡ }W d   ƒ n1 s`0    Y  t 	tj¡ |  
t |¡|¡ q"d S )
Nõ   â‚¬r>   rÒ   çÍÌÌÌÌÌF@ù      @       @z
long line r|   r   r   )r‡   r   rÕ   rþ   Zpymarshal_write_object_to_filer   r   r
   r¨   r   r	   r   )r   rX   rÐ   r   r™   r   r   r   Útest_write_object_to_file  s    &z'CAPI_TestCase.test_write_object_to_filec                 C   sæ   t tjdƒ}| d¡ W d   ƒ n1 s,0    Y  t tj¡\}}t tj¡ |  |d¡ |  |d¡ t tjdƒ}| d¡ W d   ƒ n1 s–0    Y  |  t	¡ t tj¡ W d   ƒ n1 sÌ0    Y  t tj¡ d S )Nr   s   4xxxxi4  r   ó   )
r
   r   r   r¥   rþ   Zpymarshal_read_short_from_filer   r	   r   r»   ©r   r   ÚrÚpr   r   r   Útest_read_short_from_file  s    ((*z'CAPI_TestCase.test_read_short_from_filec                 C   sæ   t tjdƒ}| d¡ W d   ƒ n1 s,0    Y  t tj¡\}}t tj¡ |  |d¡ |  |d¡ t tjdƒ}| d¡ W d   ƒ n1 s–0    Y  |  t	¡ t tj¡ W d   ƒ n1 sÌ0    Y  t tj¡ d S )Nr   s   xV4xxxxrý   r­   s   V4)
r
   r   r   r¥   rþ   Zpymarshal_read_long_from_filer   r	   r   r»   r  r   r   r   Útest_read_long_from_file+  s    ((*z&CAPI_TestCase.test_read_long_from_filec              	   C   s
  d}t tjd ƒD ]ò}t ||¡}ttjdƒ}| |d ¡ W d   ƒ n1 sR0    Y  t 	tj¡\}}t 
tj¡ |  ||¡ ttjdƒ"}| |d d… ¡ W d   ƒ n1 s¸0    Y  |  t¡ t 	tj¡ W d   ƒ n1 sî0    Y  t 
tj¡ qd S ©N)r   r>   rÒ   r  r  r   r   s   xxxx)r‡   r   rÕ   r   r
   r   r   r¥   rþ   Z$pymarshal_read_last_object_from_filer   r	   r   r»   ©r   rX   rÐ   r™   r   r  r  r   r   r   Útest_read_last_object_from_file9  s    ,0*z-CAPI_TestCase.test_read_last_object_from_filec              	   C   s  d}t tjd ƒD ]}t ||¡}ttjdƒ}| |d ¡ W d   ƒ n1 sT0    Y  t 	tj¡\}}t 
tj¡ |  ||¡ |  |t|ƒ¡ ttjdƒ"}| |d d… ¡ W d   ƒ n1 sÊ0    Y  |  t¡ t 	tj¡ W d   ƒ n1 s0    Y  t 
tj¡ qd S r
  )r‡   r   rÕ   r   r
   r   r   r¥   rþ   Zpymarshal_read_object_from_filer   r	   r—   r   r»   r  r   r   r   Útest_read_object_from_fileI  s    ,0,z(CAPI_TestCase.test_read_object_from_fileN)	r   r   r   rÿ   r  r  r	  r  r  r   r   r   r   rü     s   	rü   Ú__main__)$Útestr   rw   r¶   r   r   Zunittestr”   rU   rþ   ÚImportErrorr   ZTestCaser   r0   r3   rA   rE   r[   rm   rz   rÈ   r   rÉ   r½   ZskipIfr¾   rÍ   rÑ   rï   r÷   rZ   Z
skipUnlessrü   r   Úmainr   r   r   r   Ú<module>   sF   
$  $`
Q
