a zeIR@sddlmZddlZddlZddlZddlZddlZddlZddlZz ddl Z Wne yfdZ Yn0GdddZ Gdddej e Z Gdddej e ZGd d d ej e ZGd d d ej ZGd ddej ZGdddej e ZGdddej e ZGdddej ZdZejdkr$dndZGdddZeeejkdGdddej ZddZGd d!d!ej e ZGd"d#d#ej ZGd$d%d%ej e Zeje e d&Gd'd(d(ej e Z!e"d)kre#dS)*)supportNc@seZdZddZdS) HelperMixinc Gsttj|g|R}|||zttjd$}tj||g|RWdn1s\0Yttjd}t|}Wdn1s0Y|||Wt tjnt tj0dS)Nwbrb) marshalloadsdumps assertEqualopenrTESTFNdumploadunlink)selfsampleextranewfrE/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_marshal.pyhelpers 2(zHelperMixin.helperN)__name__ __module__ __qualname__rrrrrrsrc@s$eZdZddZddZddZdS) IntTestCasecCs6tjd}|r2| |fD]}||q|d?}q dS)N)sysmaxsizer)rnexpectedrrr test_intss   zIntTestCase.test_intscCsd}| d}||| |d? fD]L}|r"dtj|dddd}t|}||||dkrdd }q&|dL}q&q"td }||d td }||d td}||dtd}||ddS)NlrIlittleT)signedrs IܺvT2l\u1Qs I#Egl\u1Qs I*;L]nlTv0ur{s Iijl Tv0ur{)intto_bytesrrr )rZmaxint64Zminint64basesgotrrr test_int64%s$           zIntTestCase.test_int64cCsdD]}||qdS)N)TFr)rbrrr test_bool<szIntTestCase.test_boolN)rrrr!r,r/rrrrrsrc@seZdZddZdS) FloatTestCasecCsd}tjd}||kr>| |fD]}|t|q |d}qd}t|d}t|}|||t|d}t|}|||tjd}||kr| |fD]"}t|}||||dq|d9}qdS)Ng}:g6ҫsgS:^@grrgZ1% )rrrfloatrrrr )rZsmallrr rr*r+rrr test_floatsAs(          zFloatTestCase.test_floatsN)rrrr2rrrrr0@sr0c@s$eZdZddZddZddZdS)StringTestCasecCs0dddddfD]}|tt|qdSN Andrè Previnabc ')rrrrrr*rrr test_unicode\szStringTestCase.test_unicodecCs$dddddfD]}||qdSr4r-r:rrr test_string`szStringTestCase.test_stringcCs$dddddfD]}||qdS)Ns Andr Previnabc r9r-r:rrr test_bytesdszStringTestCase.test_bytesN)rrrr;r<r@rrrrr3[sr3c@seZdZddZdS)ExceptionTestCasecCs ttt}|t|dSN)rrr StopIterationr )rrrrrtest_exceptionsisz!ExceptionTestCase.test_exceptionsN)rrrrDrrrrrAhsrAc@s2eZdZddZddZddZejddZd S) CodeTestCasecCs(tjj}tt|}|||dSrB)rArD__code__rrrr )rcorrrr test_codenszCodeTestCase.test_codecCs&d}tjjf|}tt|dS)Ni)rArDrFrrr)rcountZcodesrrrtest_many_codeobjectsssz"CodeTestCase.test_many_codeobjectscCsPtddd}tddd}tt||f\}}||jd||jddS)Nxf1execyf2)compilerrrr co_filename)rZco1Zco2rrrtest_different_filenamesys   z%CodeTestCase.test_different_filenamescCsLd}t|dd}tt|}|jD] }t|tjr&||j |j q&dS)Nzdef f(): pass def g(): passZmyfilerM) rPrrr co_consts isinstancetypesCodeTypeassertIsrQ)rr*rGobjrrrtest_same_filename_useds    z$CodeTestCase.test_same_filename_usedN) rrrrHrJrRr cpython_onlyrYrrrrrEms rEc @sReZdZdddddgdddd Zd d Zd d ZddZddZej ddZ dS)ContainerTestCasezfoo@bar.baz.spamgHzns@r.zyx.41) r]r]r]r]r]r]r]r]r]r]Fr6)ZastringZafloatZanintZ ashortlongZalistZatupleZabooleanZaunicodecCs||jdSrB)rdrrrr test_dictszContainerTestCase.test_dictcCs|t|jdSrB)rlistr^itemsr_rrr test_listszContainerTestCase.test_listcCs|t|jdSrB)rtupler^keysr_rrr test_tupleszContainerTestCase.test_tuplecCs&ttfD]}|||jqdSrB)set frozensetrr^re)r constructorrrr test_setss zContainerTestCase.test_setscCs&t}tt|}|||dSrB)rhrrrrW)rrXobj2rrrtest_empty_frozenset_singletonsz0ContainerTestCase.test_empty_frozenset_singletonN) rrrr^r`rcrfrjrrZrlrrrrr[s r[c@s$eZdZddZddZddZdS)BufferTestCasecCs6td}||tt|}|t|tdSNr>) bytearrayrrrrr typebytesrr.rrrrtest_bytearrays zBufferTestCase.test_bytearraycCs6td}||tt|}|t|tdSrn) memoryviewrrrrr rprqrrrrrtest_memoryviews zBufferTestCase.test_memoryviewcCs,tdd}tt|}||ddS)NBr>)arrayrrrr )rarrrr test_arrays zBufferTestCase.test_arrayN)rrrrsruryrrrrrmsrmc@steZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS) BugsTestCasecCstdgddS)N)rrr_rrrtest_bug_5888452szBugsTestCase.test_bug_5888452cCsF|ttjd|ttjd|ttjtdddddS)N0frAr&) assertRaises Exceptionrrrr_rrrtest_patch_873224szBugsTestCase.test_patch_873224cCs8|ttddd|ttddddS)Nrr)r rrrr_rrrtest_version_argumentsz"BugsTestCase.test_version_argumentc Cs>tdD]0}t|g}zt|Wqty6Yq0qdS)N)rangerqrrr)ricrrr test_fuzzs    zBugsTestCase.test_fuzzcs.dd}|dtjfdd}|d|dS)NcSs\|d|d|d|d|d|d|d|dd||d|ddS)Ns)Ns(s[s{Nr~s>r)Ncheckrrr run_testss z4BugsTestCase.test_loads_recursion..run_testsdcsttj|dSrBr ValueErrorrr)r*r_rrrsz0BugsTestCase.test_loads_recursion..checkr\)rr)rrrrr_rtest_loads_recursions  z!BugsTestCase.test_loads_recursioncCsg}}tjdkrd}nd}t|dD]}|dg|d}q(t|}t|}|t|t||t|dt|d|t|dt|d|dg| t tj|dS)Nntr|irrr&) osnamerappendrrrr lenrr)rheadZlastZMAX_MARSHAL_STACK_DEPTHrdataZnew_headrrrtest_recursion_limits      z!BugsTestCase.test_recursion_limitcCs>ttttttttfD]$}td|fi}| t t j |qdS)Nsubtyp) r'r1complexrdradictrgrhrprrrr)rtyprrrrtest_exact_type_matchsz"BugsTestCase.test_exact_type_matchcCstd}d|}t|dS)Ng.Ar7)r'rr)rsizeZ testStringrrrtest_large_marshalszBugsTestCase.test_large_marshalcCsd}|ttj|dS)Ns lr)rZinvalid_stringrrrtest_invalid_longsszBugsTestCase.test_invalid_longsc Cs$ddddddddgff}d D]}t|}g}zttjd B}|D],}t|||r`||||qBWdn1s0Yttjd V}t |D]<\}}| |t ||r| || |||qWdn1s0YWt tjqt tj0qdS) Nrr7sdef?rrxr.c)r=s0123rr)rr rr rr writertell enumerater r readr)rrZ interleavedZilenZ positionsrr^rrrrtest_multiple_dumps_and_loadss$   . 6z*BugsTestCase.test_multiple_dumps_and_loadscCsd}|ttj|dS)NT)r TypeErrorrr)rZunicode_stringrrr!test_loads_reject_unicode_strings2sz.BugsTestCase.test_loads_reject_unicode_stringsc Cs:Gdddtj}dD]}|ttj|t|qdS)NcseZdZfddZZS)z/BugsTestCase.test_bad_reader..BadReadercs(t|}|dur$|dkr$|d7}|S)Ni@B)superreadinto)rbufr __class__rrr9s z8BugsTestCase.test_bad_reader..BadReader.readinto)rrrr __classcell__rrrr BadReader8sr)ry?s 0123456789 0123456789)ioBytesIOrrrr r)rrvaluerrrtest_bad_reader7s   zBugsTestCase.test_bad_readercCs8td}tt|D]}|ttj|d|qdS)N)helloZdollyNr)rrrrrEOFErrorr)rrrrrrtest_eofBs zBugsTestCase.test_eofN)rrrr}rrrrrrrrrrrrrrrrrzs   rzllr#rc@seZdZddZdS) NullWritercCsdSrBrr:rrrrKszNullWriter.writeN)rrrrrrrrrJsrz!test cannot run on 32-bit systemsc@seZdZddZejedddddZejeddddd Zejee d ddd d Z ejee d ddd dZ ejee de ed ddddZejee de ed ddddZejedddddZdS)LargeValuesTestCasecCs|ttj|tdSrB)rrrr r)rrrrrcheck_unmarshallablePsz(LargeValuesTestCase.check_unmarshallablerF)rZmemusedry_runcCs|d|dS)Nxrrrrrrr@SszLargeValuesTestCase.test_bytescCs|d|dS)NrKrrrrrtest_strWszLargeValuesTestCase.test_strrcCs|d|dS)NrBrrrrrrf[szLargeValuesTestCase.test_tuplecCs|dg|dSrBrrrrrrc_szLargeValuesTestCase.test_list cCs|tt|dSrB)rrgrrrrrtest_setcszLargeValuesTestCase.test_setcCs|tt|dSrB)rrhrrrrrtest_frozensetisz"LargeValuesTestCase.test_frozensetcCs|t|dSrB)rrorrrrrsosz"LargeValuesTestCase.test_bytearrayN)rrrrrZ bigmemtest LARGE_SIZEr@r pointer_sizerfrcr getsizeofrrrsrrrrrNs*      rcCs~t||vrdS|t|t|ttttfrF|D]}t||q4n0t|trv| D]\}}t||t||qXt |S)z&Collect object ids seen in a structureN) idaddrTrardrgrhCollectObjectIDsrrbr)ZidsrXekvrrrrss    rc@seZdZddddeddhfZdddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZdS) InstancingTestCase{獗n?r7)rr7Fc Cs||f}tt|}tdtjdD].}t||}ttt|}|||q$|st|d} ttt| } || ||s|t | t |n| t | t |dS)Nrr) rrgrrversionrrr Z assertGreaterrZassertGreaterEqual) rZrsample recursivesimplerZn0rZs3Zn3s2Zn2rrrhelper3s    zInstancingTestCase.helper3cCs d}|||j|dddS)NiT)rrr)rZintobjrrrtestInts zInstancingTestCase.testIntcCsd}||||dS)Nrr)rZfloatobjrrr testFloats zInstancingTestCase.testFloatcCsd}||||dS)NZabcdeabcdeabcder)rstrobjrrrtestStrs zInstancingTestCase.testStrcCsd}||||dS)Nsabcdeabcdeabcder)rZbytesobjrrr testBytess zInstancingTestCase.testBytescCs,|jD] }||g}||||qdSrBrerr)rrXZlistobjrrrtestLists  zInstancingTestCase.testListcCs,|jD] }||f}||||qdSrBr)rrXZtupleobjrrr testTuples  zInstancingTestCase.testTuplecCs4|jD](}|df|dfh}||||qdSNrrr)rrXZsetobjrrrtestSets  zInstancingTestCase.testSetcCs8|jD],}t|df|dfh}||||qdSr)rerhrr)rrXZ frozensetobjrrr testFrozenSets  z InstancingTestCase.testFrozenSetcCs4|jD](}d|d||di}||||qdS)Nrgoodbyer)rrXZdictobjrrrtestDicts  zInstancingTestCase.testDictcCs`ttd}|}Wdn1s(0YtdrHt|td}||||dSNrz.pyrM)r __file__rendswithrPrr)rrcoderrr testModules  &   zInstancingTestCase.testModulecCsNd}d|d||di}||d<|j|dd||g}|||j|dddS)NrrrrT)r)rr)rrXr^lrrr testRecursions z InstancingTestCase.testRecursionN)FF)rrrrhrerrrrrrrrrrrrrrrrrs rc@s4eZdZddZddZddZddZd d Zd S) CompatibilityTestCasecCsbttd}|}Wdn1s(0YtdrHt|td}t||}t|dSr)r rrrrPrrr)rrrrrrrr_tests  &   zCompatibilityTestCase._testcCs|ddS)Nrrr_rrrtest0To3szCompatibilityTestCase.test0To3cCs|ddS)Nrrr_rrrtest1To3szCompatibilityTestCase.test1To3cCs|ddSNrrr_rrrtest2To3szCompatibilityTestCase.test2To3cCs|ddS)Nrrr_rrrtest3To3szCompatibilityTestCase.test3To3N)rrrrrrrrrrrrrs rc@s*eZdZdZeeZddZddZdS)InterningTestCasezthis is an interned stringcCsXtt|j}|||j|t|t|jt|}|t|t|dSrB)rrrrr rrinternrr*rrrr testInterns  zInterningTestCase.testInterncCsZtt|jd}|||j|t|t|jt|}|t|t|dSr) rrrrr ZassertNotEqualrrrrrrr testNoInterns  zInterningTestCase.testNoInternN)rrrrrrrrrrrrrs rzrequires _testcapic@s<eZdZddZddZddZddZd d Zd d Zd S) CAPI_TestCasec CstttjdD]`}tdtj|ttjd}|}Wdn1sL0Yt tj| |dqdS)NrxV4rsxV4) rrr _testcapiZpymarshal_write_long_to_filerr r rrr )rrrrrrrtest_write_long_to_file s & z%CAPI_TestCase.test_write_long_to_filec Csdddddddf}ttjdD]f}t|tj|ttjd }|}Wdn1s`0Yt tj| t ||q"dS) N€r>rF@@ @z long line r|rr) rrrrZpymarshal_write_object_to_filerr r rrr r)rrXrrrrrrtest_write_object_to_files& z'CAPI_TestCase.test_write_object_to_filecCsttjd}|dWdn1s,0Yttj\}}ttj||d||dttjd}|dWdn1s0Y|t ttjWdn1s0YttjdS)Nrs4xxxxi4r) r rr rrZpymarshal_read_short_from_filerr rrrrrprrrtest_read_short_from_files(   ( *z'CAPI_TestCase.test_read_short_from_filecCsttjd}|dWdn1s,0Yttj\}}ttj||d||dttjd}|dWdn1s0Y|t ttjWdn1s0YttjdS)NrsxV4xxxxrrsV4) r rr rrZpymarshal_read_long_from_filerr rrrrrrtest_read_long_from_file+s(   ( *z&CAPI_TestCase.test_read_long_from_filec Cs d}ttjdD]}t||}ttjd}||dWdn1sR0Yt tj\}}t tj| ||ttjd"}||ddWdn1s0Y| t t tjWdn1s0Yt tjqdSN)rr>rrrrrsxxxx)rrrrr rr rrZ$pymarshal_read_last_object_from_filerr rrrrXrrrrrrrrtest_read_last_object_from_file9s ,  0 *z-CAPI_TestCase.test_read_last_object_from_filec Csd}ttjdD]}t||}ttjd}||dWdn1sT0Yt tj\}}t tj| ||| |t |ttjd"}||ddWdn1s0Y| tt tjWdn1s0Yt tjqdSr )rrrrr rr rrZpymarshal_read_object_from_filerr rrrr rrrtest_read_object_from_fileIs ,  0 ,z(CAPI_TestCase.test_read_object_from_fileN) rrrrrrr r r rrrrrs  r__main__)$testrrwrrrZunittestrrUr ImportErrorrZTestCaserr0r3rArEr[rmrzrrrrZskipIfrrrrrrZZ skipUnlessrrmainrrrrsF     $   $` Q