a 5êdgIRã@sØddlmZddlZddlZddlZddlZddlZddlZddlZz ddl Z Wne yfdZ Yn0Gdd„dƒZ Gdd„dej e ƒZ Gdd„dej e ƒZGd d „d ej e ƒZGd d „d ej ƒZGd d„dej ƒZGdd„dej e ƒZGdd„dej e ƒZGdd„dej ƒZdZejdkr$dndZGdd„dƒZe eejkd¡Gdd„dej ƒƒZdd„ZGd d!„d!ej e ƒZGd"d#„d#ej ƒZGd$d%„d%ej e ƒZeje  e d&¡Gd'd(„d(ej e ƒƒƒZ!e"d)krÔe #¡dS)*é)ÚsupportNc@seZdZdd„ZdS)Ú HelperMixinc GsÊt tj|g|¢RŽ¡}| ||¡z’ttjdƒ$}tj||g|¢RŽWdƒn1s\0Yttjdƒ}t |¡}Wdƒn1s’0Y| ||¡Wt  tj¡nt  tj¡0dS)NÚwbÚrb) ÚmarshalÚloadsÚdumpsÚ assertEqualÚopenrÚTESTFNÚdumpÚloadÚunlink)ÚselfÚsampleÚextraÚnewÚf©rú-/usr/local/lib/python3.9/test/test_marshal.pyÚhelpers 2(zHelperMixin.helperN)Ú__name__Ú __module__Ú __qualname__rrrrrrsrc@s$eZdZdd„Zdd„Zdd„ZdS)Ú IntTestCasecCs6tjd}|r2| |fD]}| |¡q|d?}q dS)Néé)ÚsysÚmaxsizer)rÚnÚexpectedrrrÚ test_intss   zIntTestCase.test_intscCsÌd}| d}||| |d? fD]L}|r"dtj|dddd}t |¡}| ||¡|dkrdd }q&|dL}q&q"t d ¡}| |d ¡t d ¡}| |d ¡t d¡}| |d¡t d¡}| |d¡dS)NlÿÿÿÿróIéÚlittleT)Úsignedéÿÿÿÿrs Iþܺ˜vT2lþ\u1ÚQ’s I#Eg‰«Íïlûÿÿÿÿ\u1ÚQ’s I*;L]nlTv0ur{s I÷æÕij¢‘€lûÿÿÿ Tv0ur{)ÚintÚto_bytesrrr )rZmaxint64Zminint64ÚbaseÚsÚgotrrrÚ test_int64%s$           zIntTestCase.test_int64cCsdD]}| |¡qdS)N)TF©r)rÚbrrrÚ test_bool<szIntTestCase.test_boolN)rrrr!r,r/rrrrrsrc@seZdZdd„ZdS)Ú FloatTestCasecCsÔd}tjd}||kr>| |fD]}| t|ƒ¡q |d}qd}t |d¡}t |¡}| ||¡t |d¡}t |¡}| ||¡tjd}||krÐ| |fD]"}t|ƒ}| |¡| |d¡q¢|d9}qdS)NgÙ}ÚõÐò¾:gŸ6˜Ò«ôsgS£’:Ý^@grrgìZ1% )rrrÚfloatrrrr )rZsmallrr rr*r+rrrÚ test_floatsAs(          zFloatTestCase.test_floatsN)rrrr2rrrrr0@sr0c@s$eZdZdd„Zdd„Zdd„ZdS)ÚStringTestCasecCs0dddddfD]}| t t |¡¡¡qdS©NÚõ Andrè PrevinÚabcú é')rrrr©rr*rrrÚ test_unicode\szStringTestCase.test_unicodecCs$dddddfD]}| |¡qdSr4r-r:rrrÚ test_string`szStringTestCase.test_stringcCs$dddddfD]}| |¡qdS)Nós Andrè Previnóabcó r9r-r:rrrÚ test_bytesdszStringTestCase.test_bytesN)rrrr;r<r@rrrrr3[sr3c@seZdZdd„ZdS)ÚExceptionTestCasecCs t t t¡¡}| t|¡dS©N)rrrÚ StopIterationr )rrrrrÚtest_exceptionsisz!ExceptionTestCase.test_exceptionsN)rrrrDrrrrrAhsrAc@s2eZdZdd„Zdd„Zdd„Zejdd„ƒZd S) Ú CodeTestCasecCs(tjj}t t |¡¡}| ||¡dSrB)rArDÚ__code__rrrr )rÚcorrrrÚ test_codenszCodeTestCase.test_codecCs&d}tjjf|}t t |¡¡dS)Niˆ)rArDrFrrr)rÚcountZcodesrrrÚtest_many_codeobjectsssz"CodeTestCase.test_many_codeobjectscCsPtdddƒ}tdddƒ}t t ||f¡¡\}}| |jd¡| |jd¡dS)NÚxÚf1ÚexecÚyÚf2)Úcompilerrrr Ú co_filename)rZco1Zco2rrrÚtest_different_filenamesys   z%CodeTestCase.test_different_filenamescCsLd}t|ddƒ}t t |¡¡}|jD] }t|tjƒr&| |j |j ¡q&dS)Nzdef f(): pass def g(): passZmyfilerM) rPrrrÚ co_constsÚ isinstanceÚtypesÚCodeTypeÚassertIsrQ)rr*rGÚobjrrrÚtest_same_filename_used€s    z$CodeTestCase.test_same_filename_usedN) rrrrHrJrRrÚ cpython_onlyrYrrrrrEms rEc @sReZdZdddddgdddd œZd d „Zd d „Zdd„Zdd„Zej dd„ƒZ dS)ÚContainerTestCasezfoo@bar.baz.spamgHázns¼@érú.zyx.41) r]r]r]r]r]r]r]r]r]r]Fr6)ZastringZafloatZanintZ ashortlongZalistZatupleZabooleanZaunicodecCs| |j¡dSrB)rÚd©rrrrÚ test_dict”szContainerTestCase.test_dictcCs| t|j ¡ƒ¡dSrB)rÚlistr^Úitemsr_rrrÚ test_list—szContainerTestCase.test_listcCs| t|j ¡ƒ¡dSrB)rÚtupler^Úkeysr_rrrÚ test_tuplešszContainerTestCase.test_tuplecCs&ttfD]}| ||j ¡ƒ¡qdSrB)ÚsetÚ frozensetrr^re)rÚ constructorrrrÚ test_setss zContainerTestCase.test_setscCs&tƒ}t t |¡¡}| ||¡dSrB)rhrrrrW)rrXÚobj2rrrÚtest_empty_frozenset_singleton¡sz0ContainerTestCase.test_empty_frozenset_singletonN) rrrr^r`rcrfrjrrZrlrrrrr[‰sù r[c@s$eZdZdd„Zdd„Zdd„ZdS)ÚBufferTestCasecCs6tdƒ}| |¡t t |¡¡}| t|ƒt¡dS©Nr>)Ú bytearrayrrrrr ÚtypeÚbytes©rr.rrrrÚtest_bytearray«s zBufferTestCase.test_bytearraycCs6tdƒ}| |¡t t |¡¡}| t|ƒt¡dSrn)Ú memoryviewrrrrr rprqrrrrrÚtest_memoryview±s zBufferTestCase.test_memoryviewcCs,t dd¡}t t |¡¡}| |d¡dS)NÚBr>)Úarrayrrrr )rÚarrrrÚ test_array·s zBufferTestCase.test_arrayN)rrrrsruryrrrrrm©srmc@steZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZdS)Ú BugsTestCasecCst dgd¡dS)Né€éè)rrr_rrrÚtest_bug_5888452¾szBugsTestCase.test_bug_5888452cCsF| ttjd¡| ttjd¡| ttjt dd¡dd…¡dS)Nó0ófréAr&)Ú assertRaisesÚ Exceptionrrrr_rrrÚtest_patch_873224ÂszBugsTestCase.test_patch_873224cCs8| t t dd¡¡d¡| t t dd¡¡d¡dS)Nérr)r rrrr_rrrÚtest_version_argumentÇsz"BugsTestCase.test_version_argumentc Cs>tdƒD]0}t|gƒ}zt |¡Wqty6Yq0qdS)Né)Úrangerqrrr‚)rÚiÚcrrrÚ test_fuzzÌs    zBugsTestCase.test_fuzzcs.dd„}|dtjƒ‡fdd„}|d|ƒdS)NcSs\|d|dƒ|d|dƒ|d|dƒ|d|dd|ƒ|d|dƒdS)Ns)óNs(s[s{Nr~s>r)ÚNÚcheckrrrÚ run_tests×s z4BugsTestCase.test_loads_recursion..run_testsédcsˆ ttj|¡dSrB©rÚ ValueErrorrr)r*r_rrråsz0BugsTestCase.test_loads_recursion..checkr\)rr)rrŽrrr_rÚtest_loads_recursionÖs  z!BugsTestCase.test_loads_recursioncCsÂg}}tjdkrd}nd}t|dƒD]}| dg¡|d}q(t |¡}t |¡}| t|ƒt|ƒ¡| t|dƒt|dƒ¡| t|dƒt|dƒ¡| dg¡|  t tj|¡dS)NÚntr|iÐrrr&) ÚosÚnamer‡Úappendrrrr Úlenrr‘)rÚheadZlastZMAX_MARSHAL_STACK_DEPTHrˆÚdataZnew_headrrrÚtest_recursion_limités      z!BugsTestCase.test_recursion_limitcCs>ttttttttfD]$}td|fiƒ}|  t t j |ƒ¡qdS)NÚsubtyp) r'r1ÚcomplexrdraÚdictrgrhrprr‘rr)rÚtypr›rrrÚtest_exact_type_matchsz"BugsTestCase.test_exact_type_matchcCstdƒ}d|}t |¡dS)Ng€„.Ar7)r'rr)rÚsizeZ testStringrrrÚtest_large_marshalszBugsTestCase.test_large_marshalcCsd}| ttj|¡dS)Ns lr)rZinvalid_stringrrrÚtest_invalid_longsszBugsTestCase.test_invalid_longsc Cs$ddddddddgff}d D]}t|ƒ}g}zàttjd ƒB}|D],}t ||¡|r`| |¡| | ¡¡qBWdƒn1s„0Yttjd ƒV}t |ƒD]<\}}|  |t  |¡¡|rÌ|  |¡|  ||| ¡¡q¤Wdƒn1sö0YWt  tj¡qt  tj¡0qdS) Nrr7sdefçð?rrxr.óc)r=s0123rr)r—r rr rr Úwriter–ÚtellÚ enumerater r Úreadr)rr™Z interleavedZilenZ positionsrr^rˆrrrÚtest_multiple_dumps_and_loadss$   . 6z*BugsTestCase.test_multiple_dumps_and_loadscCsd}| ttj|¡dS)NÚT)rÚ TypeErrorrr)rZunicode_stringrrrÚ!test_loads_reject_unicode_strings2sz.BugsTestCase.test_loads_reject_unicode_stringsc Cs:Gdd„dtjƒ}dD]}| ttj|t |¡ƒ¡qdS)NcseZdZ‡fdd„Z‡ZS)z/BugsTestCase.test_bad_reader..BadReadercs(tƒ |¡}|dur$|dkr$|d7}|S)Néi@B)ÚsuperÚreadinto)rÚbufr©Ú __class__rrr¯9s z8BugsTestCase.test_bad_reader..BadReader.readinto)rrrr¯Ú __classcell__rrr±rÚ BadReader8sr´)r£yð?s 0123456789Ú 0123456789)ÚioÚBytesIOrr‘rr r)rr´ÚvaluerrrÚtest_bad_reader7s   ÿzBugsTestCase.test_bad_readercCs8t d¡}tt|ƒƒD]}| ttj|d|…¡qdS)N)ÚhelloZdollyNr)rrr‡r—rÚEOFErrorr)rr™rˆrrrÚtest_eofBs zBugsTestCase.test_eofN)rrrr}rƒr…rŠr’ršrŸr¡r¢r©r¬r¹r¼rrrrrz½s   rzllÿÿr#r­c@seZdZdd„ZdS)Ú NullWritercCsdSrBrr:rrrr¥KszNullWriter.writeN)rrrr¥rrrrr½Jsr½z!test cannot run on 32-bit systemsc@sèeZdZdd„Zejeddddd„ƒZejeddddd „ƒZejee d ddd d „ƒZ ejee d ddd d„ƒZ ejee de   ed ¡dddd„ƒZejee de   ed ¡dddd„ƒZejeddddd„ƒZdS)ÚLargeValuesTestCasecCs| ttj|tƒ¡dSrB)rr‘rr r½)rr™rrrÚcheck_unmarshallablePsz(LargeValuesTestCase.check_unmarshallablerF)r ZmemuseÚdry_runcCs| d|¡dS)Nóx©r¿©rr rrrr@SszLargeValuesTestCase.test_bytescCs| d|¡dS)NrKrÂrÃrrrÚtest_strWszLargeValuesTestCase.test_strrcCs| d|¡dS)NrBrÂrÃrrrrf[szLargeValuesTestCase.test_tuplecCs| dg|¡dSrBrÂrÃrrrrc_szLargeValuesTestCase.test_listé cCs| tt|ƒƒ¡dSrB)r¿rgr‡rÃrrrÚtest_setcszLargeValuesTestCase.test_setcCs| tt|ƒƒ¡dSrB)r¿rhr‡rÃrrrÚtest_frozensetisz"LargeValuesTestCase.test_frozensetcCs| t|ƒ¡dSrB)r¿rorÃrrrrsosz"LargeValuesTestCase.test_bytearrayN)rrrr¿rZ bigmemtestÚ LARGE_SIZEr@rÄÚ pointer_sizerfrcrÚ getsizeofrÆrÇrsrrrrr¾Ns*    þ þ r¾cCs~t|ƒ|vrdS| t|ƒ¡t|ttttfƒrF|D]}t||ƒq4n0t|tƒrv|  ¡D]\}}t||ƒt||ƒqXt |ƒS)z&Collect object ids seen in a structureN) ÚidÚaddrTrardrgrhÚCollectObjectIDsrrbr—)ZidsrXÚeÚkÚvrrrrÍss    rÍc@s„eZdZddddeddhƒfZddd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„ZdS) ÚInstancingTestCaseé{ç—nƒÀó?r7)rÒr7Fc Cs´||f}ttƒ|ƒ}tdtjdƒD].}t ||¡}ttƒt |¡ƒ}| ||¡q$|s°t |d¡} ttƒt | ¡ƒ} | | |¡|sœ| t | ƒt |ƒ¡n|  t | ƒt |ƒ¡dS)Nérr) rÍrgr‡rÚversionrrr Z assertGreaterr—ZassertGreaterEqual) rZrsampleÚ recursiveÚsimplerZn0rÐZs3Zn3Ús2Zn2rrrÚhelper3„s    zInstancingTestCase.helper3cCs d}| |¡|j|dddS)Ni¹áT)rשrrÙ)rZintobjrrrÚtestIntžs zInstancingTestCase.testIntcCsd}| |¡| |¡dS)NrÓrÚ)rZfloatobjrrrÚ testFloat£s zInstancingTestCase.testFloatcCsd}| |¡| |¡dS)NZabcdeabcdeabcderÚ)rÚstrobjrrrÚtestStr¨s zInstancingTestCase.testStrcCsd}| |¡| |¡dS)NsabcdeabcdeabcderÚ)rZbytesobjrrrÚ testBytes­s zInstancingTestCase.testBytescCs,|jD] }||g}| |¡| |¡qdSrB©rerrÙ)rrXZlistobjrrrÚtestList²s  zInstancingTestCase.testListcCs,|jD] }||f}| |¡| |¡qdSrBrà)rrXZtupleobjrrrÚ testTuple¸s  zInstancingTestCase.testTuplecCs4|jD](}|df|dfh}| |¡| |¡qdS©Nrrrà)rrXZsetobjrrrÚtestSet¾s  zInstancingTestCase.testSetcCs8|jD],}t|df|dfhƒ}| |¡| |¡qdSrã)rerhrrÙ)rrXZ frozensetobjrrrÚ testFrozenSetÄs  z InstancingTestCase.testFrozenSetcCs4|jD](}d|d||di}| |¡| |¡qdS)NrºÚgoodbyerà)rrXZdictobjrrrÚtestDictÊs  zInstancingTestCase.testDictcCs`ttdƒ}| ¡}Wdƒn1s(0Yt d¡rHt|tdƒ}| |¡| |¡dS©Nrz.pyrM)r Ú__file__r¨ÚendswithrPrrÙ)rrÚcoderrrÚ testModuleÐs  &   zInstancingTestCase.testModulecCsNd}d|d||di}||d<|j|dd||g}| |¡|j|dddS)NrÓrºrærT)rÖ)rÙr–)rrXr^ÚlrrrÚ testRecursionØs z InstancingTestCase.testRecursionN)FF)rrrrhrerÙrÛrÜrÞrßrárârärårçrìrîrrrrrÑs rÑc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚCompatibilityTestCasecCsbttdƒ}| ¡}Wdƒn1s(0Yt d¡rHt|tdƒ}t ||¡}t |¡dSrè)r rér¨rêrPrrr)rrÕrrër™rrrÚ_testâs  &   zCompatibilityTestCase._testcCs| d¡dS)Nr©rðr_rrrÚtest0To3êszCompatibilityTestCase.test0To3cCs| d¡dS)Nrrñr_rrrÚtest1To3íszCompatibilityTestCase.test1To3cCs| d¡dS©Nrrñr_rrrÚtest2To3ðszCompatibilityTestCase.test2To3cCs| d¡dS)NrÔrñr_rrrÚtest3To3ószCompatibilityTestCase.test3To3N)rrrrðròrórõrörrrrrïás rïc@s*eZdZdZe e¡Zdd„Zdd„ZdS)ÚInterningTestCasezthis is an interned stringcCsXt t |j¡¡}| ||j¡| t|ƒt|jƒ¡t |¡}| t|ƒt|ƒ¡dSrB)rrrrÝr rËrÚintern©rr*rØrrrÚ testInternús  zInterningTestCase.testInterncCsZt t |jd¡¡}| ||j¡| t|ƒt|jƒ¡t |¡}| t|ƒt|ƒ¡dSrô) rrrrÝr ZassertNotEqualrËrrørùrrrÚ testNoInterns  zInterningTestCase.testNoInternN)rrrrÝrrørúrûrrrrr÷ös r÷zrequires _testcapic@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)Ú CAPI_TestCasec CstttjdƒD]`}t dtj|¡ttjdƒ}| ¡}Wdƒn1sL0Yt  tj¡|  |d¡qdS)NréxV4rsxV4) r‡rrÕÚ _testcapiZpymarshal_write_long_to_filerr r r¨rr )rrÐrr™rrrÚtest_write_long_to_file s & z%CAPI_TestCase.test_write_long_to_filec CsŽdddddddf}ttjdƒD]f}t |tj|¡ttjd ƒ}| ¡}Wdƒn1s`0Yt  tj¡|  t  |¡|¡q"dS) Nõ€r>rÒçÍÌÌÌÌÌF@ù@ @z long line r|rr) r‡rrÕrþZpymarshal_write_object_to_filerr r r¨rr r)rrXrÐrr™rrrÚtest_write_object_to_files& z'CAPI_TestCase.test_write_object_to_filecCsættjdƒ}| d¡Wdƒn1s,0Yt tj¡\}}t tj¡| |d¡| |d¡ttjdƒ}| d¡Wdƒn1s–0Y| t ¡t tj¡Wdƒn1sÌ0Yt tj¡dS)Nrs4xxxxi4ró) r rr r¥rþZpymarshal_read_short_from_filerr rr»©rrÚrÚprrrÚtest_read_short_from_files(   ( *z'CAPI_TestCase.test_read_short_from_filecCsættjdƒ}| d¡Wdƒn1s,0Yt tj¡\}}t tj¡| |d¡| |d¡ttjdƒ}| d¡Wdƒn1s–0Y| t ¡t tj¡Wdƒn1sÌ0Yt tj¡dS)NrsxV4xxxxrýr­sV4) r rr r¥rþZpymarshal_read_long_from_filerr rr»rrrrÚtest_read_long_from_file+s(   ( *z&CAPI_TestCase.test_read_long_from_filec Cs d}ttjdƒD]ò}t ||¡}ttjdƒ}| |d¡Wdƒn1sR0Yt  tj¡\}}t  tj¡|  ||¡ttjdƒ"}| |dd…¡Wdƒn1s¸0Y|  t ¡t  tj¡Wdƒn1sî0Yt  tj¡qdS©N)rr>rÒrrrrsxxxx)r‡rrÕrr rr r¥rþZ$pymarshal_read_last_object_from_filerr rr»©rrXrÐr™rrrrrrÚtest_read_last_object_from_file9s ,  0 *z-CAPI_TestCase.test_read_last_object_from_filec Csd}ttjdƒD]}t ||¡}ttjdƒ}| |d¡Wdƒn1sT0Yt  tj¡\}}t  tj¡|  ||¡|  |t |ƒ¡ttjdƒ"}| |dd…¡Wdƒn1sÊ0Y|  t¡t  tj¡Wdƒn1s0Yt  tj¡qdSr )r‡rrÕrr rr r¥rþZpymarshal_read_object_from_filerr r—rr»r rrrÚtest_read_object_from_fileIs ,  0 ,z(CAPI_TestCase.test_read_object_from_fileN) rrrrÿrrr r r rrrrrüs  rüÚ__main__)$Útestrrwr¶rrZunittestr”rUrþÚ ImportErrorrZTestCaserr0r3rArEr[rmrzrÈrrÉr½ZskipIfr¾rÍrÑrïr÷rZZ skipUnlessrürÚmainrrrrÚsF     $   $` Q