
    daf\                        d dl mZ d dlmZmZ 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d dlZ	 d dlZ G d d      Z G d dej$                  e      Z G d	 d
ej$                  e      Z G d dej$                  e      Z G d dej$                        Z G d dej$                        Z G d dej$                  e      Z G d dej$                  e      Z G d dej$                        ZdZe
j8                  dkD  rdndZ G d d      Z ej>                  ee
j8                  kD  d       G d dej$                               Z d  Z! G d! d"ej$                  e      Z" G d# d$ej$                        Z# G d% d&ej$                  e      Z$ejJ                   ejL                  ed'       G d( d)ej$                  e                    Z'e(d*k(  r ejR                          yy# e$ r dZY w xY w)+    )support)	os_helperrequires_debug_ranges)assert_python_okNc                       e Zd Zd Zy)HelperMixinc                 J   t        j                  t        j                  |g|       }| j                  ||       	 t	        t
        j                  d      5 }t        j                  ||g|  d d d        t	        t
        j                  d      5 }t        j                  |      }d d d        | j                  ||       t        j                  t
        j                         y # 1 sw Y   wxY w# 1 sw Y   KxY w# t        j                  t
        j                         w xY w)Nwbrb)
marshalloadsdumpsassertEqualopenr   TESTFNdumploadunlink)selfsampleextranewfs        ,/root/Python-3.12.4/Lib/test/test_marshal.pyhelperzHelperMixin.helper   s    mmGMM&959:%	/i&&- 0VQ//0i&&- &ll1o&VS)Y--.0 0& & Y--.s;   C= C%/"C= C1'C= %C.*C= 1C:6C= =%D"N)__name__
__module____qualname__r        r   r   r      s    
/r    r   c                       e Zd Zd Zd Zd Zy)IntTestCasec                 v    t         j                  dz  }|r$| |fD ]  }| j                  |        |dz	  }|r#y y )N      )sysmaxsizer   )r   nexpecteds      r   	test_intszIntTestCase.test_ints    sB    KK1RG &H%&QA r    c                    d}| dz
  }||| |dz	   fD ]X  }|sdt         j                  |ddd      z   }t        j                  |      }| j	                  ||       |dk(  rd	}n|dz  }|rSZ t        j                  d
      }| j	                  |d       t        j                  d      }| j	                  |d       t        j                  d      }| j	                  |d       t        j                  d      }| j	                  |d       y )Nl    r%      I   littleT)signedr   s	   IܺvT2l   \u1Q s	   I#Egl\u1Q s	   I*;L]nl   Tv0ur{ s	   Iĳl	Tv0ur{ )intto_bytesr   r   r   )r   maxint64minint64basesgots         r   
test_int64zIntTestCase.test_int64(   s    9Q;h	X]3CC 	D3<<a$<GGmmA&  s+2:DQJD 	 mm@A01mm@A12mm@A01mm@A12r    c                 4    dD ]  }| j                  |        y )N)TFr   )r   bs     r   	test_boolzIntTestCase.test_bool?   s     	AKKN	r    N)r   r   r   r*   r8   r<   r   r    r   r"   r"      s    3.r    r"   c                       e Zd Zd Zy)FloatTestCasec                 F   d}t         j                  dz  }||kD  r/| |fD ]  }| j                  t        |              |dz  }||kD  r/d}t	        j
                  |d      }t	        j                  |      }| j                  ||       t	        j
                  |d      }t	        j                  |      }| j                  ||       t         j                  dz  }||k  rD| |fD ]0  }t        |      }| j                  |       | j                  |d       2 |dz  }||k  rCy y )Ng}:g6ҫsgS:^@g        r$   r%   gZ1%)r&   r'   r   floatr   r   r   r   )r   smallr(   r)   r   r6   r7   s          r   test_floatszFloatTestCase.test_floatsD   s   KK'!%iRG -E(O,-MA %i
 MM!QmmAC MM!QmmAC KK("%iRG "(OAAq!" MA %ir    N)r   r   r   rB   r   r    r   r>   r>   C   s    r    r>   c                       e Zd Zd Zd Zd Zy)StringTestCasec                     dddddz  fD ]9  }| j                  t        j                  t        j                  |                   ; y N    Andrè Previnabc '  )r   r   r   r   r   r6   s     r   test_unicodezStringTestCase.test_unicode_   s=    'E	: 	9AKKgmmA&678	9r    c                 B    dddddz  fD ]  }| j                  |        y rF   r:   rL   s     r   test_stringzStringTestCase.test_stringc   s*    'E	: 	AKKN	r    c                 B    dddddz  fD ]  }| j                  |        y )Nr    s   Andr Previn   abc    rK   r:   rL   s     r   
test_byteszStringTestCase.test_bytesg   s*    )64:> 	AKKN	r    N)r   r   r   rM   rO   rS   r   r    r   rD   rD   ^   s    9r    rD   c                       e Zd Zd Zy)ExceptionTestCasec                     t        j                  t        j                  t                    }| j	                  t        |       y N)r   r   r   StopIterationr   )r   r   s     r   test_exceptionsz!ExceptionTestCase.test_exceptionsl   s)    mmGMM-89,r    N)r   r   r   rY   r   r    r   rU   rU   k   s    -r    rU   c                   \    e Zd Zd Zd Zd Z e       d        Zej                  d        Z
y)CodeTestCasec                     t         j                  j                  }t        j                  t        j
                  |            }| j                  ||       y rW   )rU   rY   __code__r   r   r   r   )r   cor   s      r   	test_codezCodeTestCase.test_codeq   s:    ..77mmGMM"-.S!r    c                     t         j                  }t        j                  j                  f|z  }t        j                  t        j                  |             y rW   )r   EXCEEDS_RECURSION_LIMITrU   rY   r]   r   r   r   )r   countcodess      r   test_many_codeobjectsz"CodeTestCase.test_many_codeobjectsv   s=     //"22;;=EgmmE*+r    c                    t        ddd      }t        ddd      }t        j                  t        j                  ||f            \  }}| j	                  |j
                  d       | j	                  |j
                  d       y )Nxf1execyf2)compiler   r   r   r   co_filename)r   co1co2s      r   test_different_filenamesz%CodeTestCase.test_different_filenames}   se    c4(c4(==Sz!:;S$/$/r    c                    t         j                  j                  }t        j                  d      }	 t        t        j                  d      5 }t        j                  ||       d d d        t        ddd|t        j                         t        j                  t        j                         y # 1 sw Y   JxY w# t        j                  t        j                         w xY w)Na  
        import sys
        import marshal
        with open(sys.argv[1], 'rb') as f:
            co = marshal.load(f)
            positions = list(co.co_positions())
            assert positions[0][2] is None
            assert positions[0][3] is None
        r
   z-Xno_debug_ranges-c)rU   rY   r]   textwrapdedentr   r   r   r   r   r   r   )r   r^   coder   s       r   +test_minimal_linetable_with_no_debug_rangesz8CodeTestCase.test_minimal_linetable_with_no_debug_ranges   s     ..77   	/i&&- $R#$ T#4!4)9)9; Y--.$ $ Y--.s#   B7 B+"%B7 +B40B7 7%Cc                    d}t        |dd      }t        j                  t        j                  |            }|j                  D ]C  }t        |t        j                        s| j                  |j                  |j                         E y )Nzdef f(): pass
def g(): passmyfilerh   )
rk   r   r   r   	co_consts
isinstancetypesCodeTypeassertIsrl   )r   r6   r^   objs       r   test_same_filename_usedz$CodeTestCase.test_same_filename_used   sc    .Q&)]]7==,-<< 	?C#u~~.bnncoo>	?r    N)r   r   r   r_   rd   ro   r   rv   r   cpython_onlyr   r   r    r   r[   r[   p   sB    "
,0 / /. ? ?r    r[   c            	       <    e Zd Zdddddgdddd	Zd
 Zd Zd Zd Zy)ContainerTestCasezfoo@bar.baz.spamgHzns@   r$   .zyx.41)
r   r   r   r   r   r   r   r   r   r   FrH   )astringafloatanint
ashortlongalistatupleabooleanaunicodec                 :    | j                  | j                         y rW   )r   dr   s    r   	test_dictzContainerTestCase.test_dict   s    DFFr    c                 h    | j                  t        | j                  j                                      y rW   )r   listr   itemsr   s    r   	test_listzContainerTestCase.test_list   s    D()r    c                 h    | j                  t        | j                  j                                      y rW   )r   tupler   keysr   s    r   
test_tuplezContainerTestCase.test_tuple   s    E$&&++-()r    c                     t         t        fD ]1  }| j                   || j                  j	                                      3 y rW   )set	frozensetr   r   r   )r   constructors     r   	test_setszContainerTestCase.test_sets   s1    + 	4KKKDFFKKM23	4r    N)r   r   r   r   r   r   r   r   r   r    r   r   r      s7    &+"&	A**4r    r   c                       e Zd Zd Zd Zd Zy)BufferTestCasec                     t        d      }| j                  |       t        j                  t        j                  |            }| j                  t        |      t               y NrQ   )	bytearrayr   r   r   r   r   typebytesr   r;   r   s      r   test_bytearrayzBufferTestCase.test_bytearray   sB    fAmmGMM!,-cE*r    c                     t        d      }| j                  |       t        j                  t        j                  |            }| j                  t        |      t               y r   )
memoryviewr   r   r   r   r   r   r   r   s      r   test_memoryviewzBufferTestCase.test_memoryview   sB    vAmmGMM!,-cE*r    c                     t        j                   dd      }t        j                  t        j                  |            }| j	                  |d       y )NBrQ   )arrayr   r   r   r   )r   ar   s      r   
test_arrayzBufferTestCase.test_array   s9    KKV$mmGMM!,-f%r    N)r   r   r   r   r   r   r   r    r   r   r      s    ++&r    r   c                   `    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zy)BugsTestCasec                 6    t        j                  dgdz         y )N     )r   r   r   s    r   test_bug_5888452zBugsTestCase.test_bug_5888452   s    sedl#r    c                    | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  t        j                  ddz        d d        y )N   0   fr$   A   r0   )assertRaises	Exceptionr   r   r   r   s    r   test_patch_873224zBugsTestCase.test_patch_873224   sX    )W]]D9)W]]D9)W]]GMM!R%4H"4MNr    c                     | j                  t        j                  t        j                  dd            d       | j                  t        j                  t        j                  dd            d       y )N   r   r%   )r   r   r   r   r   s    r   test_version_argumentz"BugsTestCase.test_version_argument   sJ    w}}Q':;Q?w}}Q':;Q?r    c                     t        d      D ]$  }t        |g      }	 t        j                  |       & y # t        $ r Y 3w xY w)N   )ranger   r   r   r   )r   ics      r   	test_fuzzzBugsTestCase.test_fuzz   sG     s 	Aqc
Aa 	  s   4	A A c                 V     d } |dt         j                          fd} |d|       y )Nc                      |d| z  dz           |d| z  dz           |d| z  dz           |d| z  dz   d| z  z           |d| z  dz          y )Ns   )   Ns   (   s   [   s   {Nr   s   >   r   )Nchecks     r   	run_testsz4BugsTestCase.test_loads_recursion.<locals>.run_tests   sf    (Q,%&&*T12&*T12%!)d"TAX-.&*T12r    d   c                 P    j                  t        t        j                  |        y rW   r   
ValueErrorr   r   )r6   r   s    r   r   z0BugsTestCase.test_loads_recursion.<locals>.check   s    j'--;r    r   )r   r   )r   r   r   s   `  r   test_loads_recursionz!BugsTestCase.test_loads_recursion   s'    		3 	#w}}%	<%r    c                 n   g x}}t         j                  dk(  rd}nt        j                  dk(  rd}nd}t	        |dz
        D ]  }|j                  dg       |d   } t        j                  |      }t        j                  |      }| j                  t        |      t        |             | j                  t        |d         t        |d                | j                  t        |d         t        |d                |j                  dg       | j                  t        t        j                  |       y )	Nntr   wasii  i  r$   r   r0   )osnamer&   platformr   appendr   r   r   r   lenr   r   )r   headlastMAX_MARSHAL_STACK_DEPTHr   datanew_heads          r   test_recursion_limitz!BugsTestCase.test_recursion_limit   s   t
 77d?&*#\\V#&*#&*#.23 	AKK8D	
 }}T"==&XD	2Xa[)3tAw<8Xb\*CRM:QC*gmmT:r    c                     t         t        t        t        t        t
        t        t        fD ]:  }t        d|fi       }| j                  t        t        j                   |              < y )Nsubtyp)r1   r@   complexr   r   dictr   r   r   r   r   r   r   )r   typr   s      r   test_exact_type_matchz"BugsTestCase.test_exact_type_match  sP    
 dCK 	CC (SFB/Fj'--B		Cr    c                 N    t        d      }d|z  }t        j                  |       y )Ng    .ArI   )r1   r   r   )r   size
testStrings      r   test_large_marshalzBugsTestCase.test_large_marshal'  s     3xT\
j!r    c                 R    d}| j                  t        t        j                  |       y )Ns	   l       r   )r   invalid_strings     r   test_invalid_longszBugsTestCase.test_invalid_longs,  s    =*gmm^Dr    c           	         ddddddddgff}d	D ]9  }t        |      }g }	 t        t        j                  d
      5 }|D ]J  }t	        j
                  ||       |r|j                  |       |j                  |j                                L 	 d d d        t        t        j                  d      5 }t        |      D ]`  \  }}| j                  |t	        j                  |             |r|j                  |       | j                  ||   |j                                b 	 d d d        t        j                  t        j                         < y # 1 sw Y   xY w# 1 sw Y   <xY w# t        j                  t        j                         w xY w)Nr%   rI   s   def      ?r$   r   r;      c)r    s   0123r
   r   )r   r   r   r   r   r   writer   tell	enumerater   r   readr   )r   r   interleavedilen	positionsr   r   r   s           r   test_multiple_dumps_and_loadsz*BugsTestCase.test_multiple_dumps_and_loads1  s\    5&#3d'<=) 	3K{#DI3)**D1 3Q! 3Q*GGK0!((2	33 )**D1 AQ )$ A1((GLLO<FF4L((1qvvx@	AA   !1!12#	33 3A A   !1!12s<   E%AE"E%.A/EE%E	E%E"	E%%%F
c                 R    d}| j                  t        t        j                  |       y )NT)r   	TypeErrorr   r   )r   unicode_strings     r   !test_loads_reject_unicode_stringsz.BugsTestCase.test_loads_reject_unicode_stringsI  s    )W]]NCr    c           
           G d dt         j                        }dD ]@  }| j                  t        t        j
                   |t	        j                  |                   B y )Nc                        e Zd Z fdZ xZS )/BugsTestCase.test_bad_reader.<locals>.BadReaderc                 >    t         |   |      }|
|dkD  r|dz  }|S )N   i@B )superreadinto)r   bufr(   	__class__s      r   r  z8BugsTestCase.test_bad_reader.<locals>.BadReader.readintoP  s+    G$S)=QUJAr    )r   r   r   r  __classcell__)r  s   @r   	BadReaderr   O  s     r    r  )r   y              ?s
   0123456789
0123456789)ioBytesIOr   r   r   r   r   )r   r  values      r   test_bad_readerzBugsTestCase.test_bad_readerN  sJ    	

 	 < 	?Ej',,'e(<=?	?r    c                     t        j                  d      }t        t        |            D ]*  }| j	                  t
        t         j                  |d|        , y )N)hellodollyNr   )r   r   r   r   r   EOFErrorr   )r   r   r   s      r   test_eofzBugsTestCase.test_eofY  sG    }}56s4y! 	CAhtAqzB	Cr    c                    dD ]  }dD ]  }| d| d}| j                  |      5  t        j                  j                  dv r8dd| dg}t	        |d	d
i\  }}}t	        |d	di\  }}}| j                  ||       dd| dg}t	        |d	d
i\  }}}t	        |d	di\  }}	}| j                  ||	       d d d          y # 1 sw Y   xY w)N)r   r   )z-float('nan'), b'a', b'b', b'c', 'x', 'y', 'z'zL('Spam', 0), ('Spam', 1), ('Spam', 2), ('Spam', 3), ('Spam', 4), ('Spam', 5)z([z])>   fnv	siphash24rr   zprint()PYTHONHASHSEED01z$import marshal; print(marshal.dumps(z)))subTestr&   	hash_info	algorithmr   assertNotEqualr   )
r   kindelementsr6   args_repr_0repr_1dump_0dump_1s
             r   test_deterministic_setsz$BugsTestCase.test_deterministic_sets^  s    ) 	5D 5
 fBxj+\\!_ 5 }}..2FF $qcm4'7'Rc'R61'7'Rc'R61++FF; $H2"NOD#3T#N##NLAvq#3T#N##NLAvq$$VV45 55	55 5s   BB>>CN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r#  r   r    r   r   r      sN    $O
@
 &;8	C"
E
30D
	?C
5r    r   l        l    r-   r   c                       e Zd Zd Zy)
NullWriterc                      y rW   r   rL   s     r   r   zNullWriter.write~  s    r    N)r   r   r   r   r   r    r   r%  r%  }  s    r    r%  z!test cannot run on 32-bit systemsc                      e Zd Zd Z ej
                  edd      d        Z ej
                  edd      d        Z ej
                  ee	dz   d      d        Z
 ej
                  ee	dz   d      d	        Z ej
                  ee	d
z   ej                  edz
        z   d      d        Z ej
                  ee	d
z   ej                  edz
        z   d      d        Z ej
                  edd      d        Zy)LargeValuesTestCasec                 `    | j                  t        t        j                  |t	                      y rW   )r   r   r   r   r%  )r   r   s     r   check_unmarshallablez(LargeValuesTestCase.check_unmarshallable  s    *gllD*,Gr    r$   F)r   memusedry_runc                 ,    | j                  d|z         y )N   xr*  r   r   s     r   rS   zLargeValuesTestCase.test_bytes  s    !!$+.r    c                 ,    | j                  d|z         y )Nrf   r/  r0  s     r   test_strzLargeValuesTestCase.test_str  s    !!#*-r    r%   c                 ,    | j                  d|z         y )NrW   r/  r0  s     r   r   zLargeValuesTestCase.test_tuple  s    !!'D.1r    c                 .    | j                  d g|z         y rW   r/  r0  s     r   r   zLargeValuesTestCase.test_list  s    !!4&4-0r       c                 J    | j                  t        t        |                   y rW   )r*  r   r   r0  s     r   test_setzLargeValuesTestCase.test_set  s     	!!#eDk"23r    c                 J    | j                  t        t        |                   y rW   )r*  r   r   r0  s     r   test_frozensetz"LargeValuesTestCase.test_frozenset  s     	!!)E$K"89r    c                 8    | j                  t        |             y rW   )r*  r   r0  s     r   r   z"LargeValuesTestCase.test_bytearray  s    !!)D/2r    N)r   r   r   r*  r   
bigmemtest
LARGE_SIZErS   r2  pointer_sizer   r   r&   	getsizeofr7  r9  r   r   r    r   r(  r(    sR   H WZ5A/ B/ WZ5A. B. WZq0@%P2 Q2 WZq0@%P1 Q1 WZ?]S]]:a<%@@44 WZ?]S]]:a<%@@:: WZ5A3 B3r    r(  c                 d   t        |      | v ry| j                  t        |             t        |t        t        t
        t        f      r|D ]  }t        | |        t        |       S t        |t              r0|j                         D ]  \  }}t        | |       t        | |        t        |       S )z&Collect object ids seen in a structureN)idaddrz   r   r   r   r   CollectObjectIDsr   r   r   )idsr~   ekvs        r   rB  rB    s    	#w#~GGBsG#eS)45 	%AS!$	% s8O	 
C	IIK 	%DAqS!$S!$	% s8Or    c                   t    e Zd Zdddd eddh      fZddZd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zd Zd Zy)InstancingTestCase{   獗n?rI   )rI  rI   c                 P   ||f}t        t               |      }t        dt        j                  dz         D ]Q  }t        j
                  ||      }t        t               t        j                  |            }| j                  ||       S |st        j
                  |d      }	t        t               t        j                  |	            }
| j                  |
|       |s%| j                  t        |	      t                     y | j                  t        |	      t                     y y )N   r%   r$   )rB  r   r   r   versionr   r   r   assertGreaterr   assertGreaterEqual)r   rsample	recursivesimpler   n0rF  s3n3s2n2s              r   helper3zInstancingTestCase.helper3  s    7#ceV,q'//A-. 	%Avq)B!#%r):;B R$	% vq)B!#%r):;Br2& ""3r7CG4''BR9 r    c                 P    d}| j                  |       | j                  |d       y )Ni T)rR  r   rX  )r   intobjs     r   testIntzInstancingTestCase.testInt  s#    FVD)r    c                 L    d}| j                  |       | j                  |       y )NrJ  rZ  )r   floatobjs     r   	testFloatzInstancingTestCase.testFloat  s    HXr    c                 L    d}| j                  |       | j                  |       y )NabcdeabcdeabcderZ  )r   strobjs     r   testStrzInstancingTestCase.testStr  s    FVr    c                 L    d}| j                  |       | j                  |       y )Ns   abcdeabcdeabcderZ  )r   bytesobjs     r   	testByteszInstancingTestCase.testBytes  s    HXr    c                 r    | j                   D ](  }||g}| j                  |       | j                  |       * y rW   r   r   rX  )r   r~   listobjs      r   testListzInstancingTestCase.testList  s6    99 	"CCjGKK LL!	"r    c                 r    | j                   D ](  }||f}| j                  |       | j                  |       * y rW   rh  )r   r~   tupleobjs      r   	testTuplezInstancingTestCase.testTuple  s6    99 	#CSzHKK!LL"	#r    c                 z    | j                   D ],  }|df|dfh}| j                  |       | j                  |       . y Nr%   r$   rh  )r   r~   setobjs      r   testSetzInstancingTestCase.testSet  s?    99 	!CAha)FKKLL 	!r    c                     | j                   D ]5  }t        |df|dfh      }| j                  |       | j                  |       7 y ro  )r   r   r   rX  )r   r~   frozensetobjs      r   testFrozenSetz InstancingTestCase.testFrozenSet  sD    99 	'C$sAha%9:LKK%LL&	'r    c                 z    | j                   D ],  }d|d||di}| j                  |       | j                  |       . y )Nr  goodbyerh  )r   r~   dictobjs      r   testDictzInstancingTestCase.testDict  s?    99 	"CYS'BGKK LL!	"r    c                     t        t        d      5 }|j                         }d d d        t        j                  d      rt	        t        d      }| j                         | j                  |       y # 1 sw Y   RxY wNr   z.pyrh   )r   __file__r   endswithrk   r   rX  )r   r   ru   s      r   
testModulezInstancingTestCase.testModule  sb    (D! 	Q668D	U#462DDT	 	s   A33A<c                     d}d|d||di}||d<   | j                  |d       ||g}|j                  |       | j                  |d       y )NrJ  r  rv  r   T)rQ  )rX  r   )r   r~   r   ls       r   testRecursionz InstancingTestCase.testRecursion  sV    c9c38&	Q$'#J	Q$'r    N)FF)r   r   r   r   r   rX  r\  r_  rc  rf  rj  rm  rq  rt  rx  r}  r  r   r    r   rH  rH    sW    ie.EFD:4*



"#!'"(r    rH  c                   *    e Zd Zd Zd Zd Zd Zd Zy)CompatibilityTestCasec                    t        t        d      5 }|j                         }d d d        t        j                  d      rt	        t        d      }t        j                  |      }t        j                  |       y # 1 sw Y   [xY wrz  )r   r{  r   r|  rk   r   r   r   )r   rM  r   ru   r   s        r   _testzCompatibilityTestCase._test  sf    (D! 	Q668D	U#462D}}T7+d	 	s   A<<Bc                 &    | j                  d       y )Nr   r  r   s    r   test0To3zCompatibilityTestCase.test0To3      

1r    c                 &    | j                  d       y )Nr%   r  r   s    r   test1To3zCompatibilityTestCase.test1To3   r  r    c                 &    | j                  d       y Nr$   r  r   s    r   test2To3zCompatibilityTestCase.test2To3#  r  r    c                 &    | j                  d       y )NrL  r  r   s    r   test3To3zCompatibilityTestCase.test3To3&  r  r    N)r   r   r   r  r  r  r  r  r   r    r   r  r    s    r    r  c                   @    e Zd ZdZ ej
                  e      Zd Zd Zy)InterningTestCasezthis is an interned stringc                 n   t        j                  t        j                  | j                              }| j	                  || j                         | j	                  t        |      t        | j                               t        j                  |      }| j	                  t        |      t        |             y rW   )r   r   r   rb  r   r@  r&   internr   r6   rV  s      r   
testInternzInterningTestCase.testIntern-  sr    MM'--45DKK(A4;;0ZZ]BA'r    c                 p   t        j                  t        j                  | j                  d            }| j	                  || j                         | j                  t        |      t        | j                               t        j                  |      }| j                  t        |      t        |             y r  )	r   r   r   rb  r   r  r@  r&   r  r  s      r   testNoInternzInterningTestCase.testNoIntern4  st    MM'--Q78DKK(BqE2dkk?3ZZ]BrFBqE*r    N)r   r   r   rb  r&   r  r  r  r   r    r   r  r  )  s!    )FSZZF(+r    r  zrequires _testcapic                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)CAPI_TestCasec                 x   t        t        j                  dz         D ]  }t        j                  dt
        j                  |       t        t
        j                  d      5 }|j                         }d d d        t        j                  t
        j                         | j                  d        y # 1 sw Y   AxY w)Nr%   xV4r   s   xV4)r   r   rM  	_testcapipymarshal_write_long_to_filer   r   r   r   r   r   )r   rF  r   r   s       r   test_write_long_to_filez%CAPI_TestCase.test_write_long_to_file?  s    w*+ 	8A22:y?O?OQRSi&&-  vvx Y--.T#67	8   s   B00B9	c                    dddddddz  f}t        t        j                  dz         D ]  }t        j                  |t
        j                  |       t        t
        j                  d	      5 }|j                         }d d d        t        j                  t
        j                         | j                  t        j                        |        y # 1 sw Y   TxY w)
N   €rQ   rI  F@      @       @z
long line r   r%   r   )r   r   rM  r  pymarshal_write_object_to_filer   r   r   r   r   r   r   )r   r~   rF  r   r   s        r   test_write_object_to_filez'CAPI_TestCase.test_write_object_to_fileG  s    dD,t2CDw*+ 	7A44S):J:JANi&&-  vvx Y--.W]]40#6	7   s   *CC	c                    t        t        j                  d      5 }|j                  d       d d d        t	        j
                  t        j                        \  }}t        j                  t        j                         | j                  |d       | j                  |d       t        t        j                  d      5 }|j                  d       d d d        | j                  t              5  t	        j
                  t        j                         d d d        t        j                  t        j                         y # 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   FxY w)Nr
   s   4xxxxi4  r$      )
r   r   r   r   r  pymarshal_read_short_from_filer   r   r   r  r   r   rps       r   test_read_short_from_filez'CAPI_TestCase.test_read_short_from_fileP  s   )""D) 	%QGGO$	%77	8H8HI1))*F#A)""D) 	QGGG	x( 	G44Y5E5EF	G))*	% 	%	 		G 	G#   D;<E+$E;EEEc                    t        t        j                  d      5 }|j                  d       d d d        t	        j
                  t        j                        \  }}t        j                  t        j                         | j                  |d       | j                  |d       t        t        j                  d      5 }|j                  d       d d d        | j                  t              5  t	        j
                  t        j                         d d d        t        j                  t        j                         y # 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   FxY w)Nr
   s   xV4xxxxr  r   s   V4)
r   r   r   r   r  pymarshal_read_long_from_filer   r   r   r  r  s       r   test_read_long_from_filez&CAPI_TestCase.test_read_long_from_file^  s   )""D) 	-QGG+,	-66y7G7GH1))*J'A)""D) 	%QGGO$	%x( 	F33I4D4DE	F))*	- 	-	% 	%	F 	Fr  c                    d}t        t        j                  dz         D ]F  }t        j                  ||      }t	        t
        j                  d      5 }|j                  |dz          d d d        t        j                  t
        j                        \  }}t        j                  t
        j                         | j                  ||       t	        t
        j                  d      5 }|j                  |d d        d d d        | j                  t              5  t        j                  t
        j                         d d d        t        j                  t
        j                         I y # 1 sw Y   xY w# 1 sw Y   ~xY w# 1 sw Y   IxY wN)r  rQ   rI  r  r  r%   r
   s   xxxx)r   r   rM  r   r   r   r   r   r  $pymarshal_read_last_object_from_filer   r   r   r  r   r~   rF  r   r   r  r  s          r   test_read_last_object_from_filez-CAPI_TestCase.test_read_last_object_from_filel  s1   1w*+ 	/A==a(Di&&- (w'(AA)BRBRSDAqY--.Q$i&&- "Ra!"""8, Q>>y?O?OPQY--.	/( (" "Q Qs$   E*%E7$F*E4	7F 	F	c                 T   d}t        t        j                  dz         D ]a  }t        j                  ||      }t	        t
        j                  d      5 }|j                  |dz          d d d        t        j                  t
        j                        \  }}t        j                  t
        j                         | j                  ||       | j                  |t        |             t	        t
        j                  d      5 }|j                  |d d        d d d        | j                  t              5  t        j                  t
        j                         d d d        t        j                  t
        j                         d y # 1 sw Y   xY w# 1 sw Y   ~xY w# 1 sw Y   IxY wr  )r   r   rM  r   r   r   r   r   r  pymarshal_read_object_from_filer   r   r   r   r  r  s          r   test_read_object_from_filez(CAPI_TestCase.test_read_object_from_file|  sE   1w*+ 	/A==a(Di&&- (w'(<<Y=M=MNDAqY--.Q$QD	*i&&- "Ra!"""8, L99):J:JKLY--.	/( (" "L Ls$   F F2$FF	F	F'	N)	r   r   r   r  r  r  r  r  r  r   r    r   r  r  ;  s     87++/ /r    r  __main__)*testr   test.supportr   r   test.support.script_helperr   r   r  r   r&   unittestr   r{   rs   r  ImportErrorr   TestCaser"   r>   rD   rU   r[   r   r   r   r<  r'   r=  r%  skipIfr(  rB  rH  r  r  r   
skipUnlessr  r   mainr   r    r   <module>r     s    9 7  	  
  	  / /"(##[ "HH%%{ 6X&& -)) -
3?8$$ 3?j4)); 42&X&& &(f58$$ f5P 
KK*,q!  ckk)+NO"3(++ "3 P"3H^(**K ^(@H-- *+)); +$ 	Y 45N/H%%{ N/ 6 N/b zHMMO   Is   G G*)G*