a zeA@sdZddlZddlZddlZddlmZddlmZmZddlm Z ej ddgdZ ej ddgd Z gd Z Gd d d eZd dZGdddZGdddeeZee dGdddeeZGdddZGdddZddZGdddZGdddZGd d!d!ZGd"d#d#ZGd$d%d%ZGd&d'd'ZGd(d)d)Zdd*lmZd+d,ZGd-d.d.Z Gd/d0d0Z!Gd1d2d2e!eZ"ee dGd3d4d4e!eZ#e$d5kre%dS)6zUnittests for heapq.N)support)TestCase skipUnless) itemgetterheapq_heapq)Zblocked)Zfresh)heapifyheappopheappush heappushpop heapreplace _heappop_max_heapreplace_max _heapify_maxc@s&eZdZddZeedddZdS) TestModulescCs"tD]}|tt|jdqdS)Nr) func_names assertEqualgetattrpy_heapq __module__selfZfnamerC/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_heapq.pytest_py_functionsszTestModules.test_py_functionsrequires _heapqcCs"tD]}|tt|jdqdS)Nr)rrrc_heapqrrrrrtest_c_functionsszTestModules.test_c_functionsN)__name__r __qualname__rrrrrrrrrsrcCs(Gddd}|tjt|d|S)Nc@seZdZddZdS)z+load_tests..HeapqMergeDocTestFinderc_st}|tjSN)doctestZ DocTestFinderfindrmerge)rargskwargsZdtfrrrr"'sz0load_tests..HeapqMergeDocTestFinder.findN)rrrr"rrrrHeapqMergeDocTestFinder&sr&)Z test_finder)ZaddTestsr!Z DocTestSuiter)loaderZtestsignorer&rrr load_testss  r)c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#S)$TestHeapcCsg}g}||tdD].}t}|||j||||qg}|rt|j|}||||qN|dd}||||||| t |jjgz*| t |jjdd| t |jjdWnt yYn0dS)N) check_invariantrangerandomappendmoduler r sortr assertRaises TypeErrorAttributeError)rheapdataiitemresultsZ data_sortedrrr test_push_pop1s.           zTestHeap.test_push_popcCs8t|D]*\}}|r|dd?}||||kqdSN) enumerateZ assertTrue)rr5posr8 parentposrrrr,Ms zTestHeap.check_invariantcCsVttddgD],}ddt|D}|j|||q|t|jjddS)N NcSsg|] }tqSrr.).0dummyrrr Vz)TestHeap.test_heapify..)listr-r0rr,r2r3)rsizer5rrr test_heapifyTs   zTestHeap.test_heapifycCsjddtdD}g}|D]*}|j||t|dkr|j|q|||t|dddS)NcSsg|]}tdqSr. randrangerCr7rrrrE]rFz-TestHeap.test_naive_nbest.. )r-r0r lenr r1rsortedrr6r5r8rrrtest_naive_nbest\s zTestHeap.test_naive_nbestccs,z|j|VqWnty&Yn0dSr )r0r IndexError)rr5rrrheapiterfs zTestHeap.heapitercCsddtdD}|dd}|j||ddD]}||dkr6|j||q6|t||t|dd|t |jjd|t |jjdd|t |jjgddS)NcSsg|]}tdqSrJrLrNrrrrEtrFz'TestHeap.test_nbest..rOrPrrQ) r-r0rr rrGrWrSr2r3rVrTrrr test_nbestns   "zTestHeap.test_nbestcCsddtdD}|dd}|j||ddD]}|j||q6|t||t|dd||jgdddS)NcSsg|]}tdqSrJrLrNrrrrErFz4TestHeap.test_nbest_with_pushpop..rOrPrQx)r-r0rr rrGrWrSrTrrrtest_nbest_with_pushpops  "z TestHeap.test_nbest_with_pushpopcCsg}|j|d}|||fgdfdg}|j|d}|||fdgdf|t|dt|t|tdg}|j|d}|||fdgdfdg}|j|d}|||fdgdfdS)NrPg$@r )r0r rtypeintfloat)rhrYrrrtest_heappushpopszTestHeap.test_heappushpopcCs4ddg}||j|d||j|ddS)N)rr0r )rr`rrrtest_heappop_maxszTestHeap.test_heappop_maxcstdD]}td}ddt|D}|d@rJ|ddjng|D]}j|qRfddt|D}|t|qdS)Nd2cSsg|]}tdqS)rLrNrrrrErFz*TestHeap.test_heapsort..r<csg|]}jqSr)r0r rNr5rrrrErF)r-r.rMr0rr rrS)rZtrialrHr6r8Z heap_sortedrrhr test_heapsorts   zTestHeap.test_heapsortc Csg}ttdD]F}g}ttdD]$}tdtddf}||q(||qdtdtdtddfD]t}dD]j}g}|D]} |t| ||d q|tt|||d t |j j |||d |t |j gq|qtdS) NrgreABCi rr<)FTkeyreverse) r-r.rMchoicer/rrSrchainrGr0r#) rinputsr7rowjtuprmrnZseqsseqrrr test_merges   zTestHeap.test_mergecCs@|t|jggg|t|jjggdddgdS)NcSsdS)NrrrrrrFz,TestHeap.test_empty_merges..rm)rrGr0r#rrrrtest_empty_mergesszTestHeap.test_empty_mergescCsLdd}|t&t|j||Wdn1s>0YdS)Ncss(ttd}tdD]}||VqdS)NrP)rGr-)sr7rrriterables  zCTestHeap.test_merge_does_not_suppress_index_error..iterable)r2rVrGr0r#)rr~rrr(test_merge_does_not_suppress_index_errors z1TestHeap.test_merge_does_not_suppress_index_errorcCsGdddt}ggggg}tdD]8}td}td}||}||f|_|||q$|D] }|qbdd|jj|D}| |t |dS)Nc@s eZdZdS)z*TestHeap.test_merge_stability..IntN)rrrrrrrIntsrrArkcSsg|] }|jqSr)pairrNrrrrErFz1TestHeap.test_merge_stability..) r^r-r.rMrr/r1r0r#rrS)rrrqr7streamrYobjresultrrrtest_merge_stabilitys      zTestHeap.test_merge_stabilityc CsddtdD}dddfD]b}dD]X}|t|j||t|d||t|jj|||dt||dd|q&qdS)NcSsg|]}td|fqSrJrLrNrrrrErFz+TestHeap.test_nsmallest..rOcSs|dddSNri#rKrrYrrrrxrFz)TestHeap.test_nsmallest.. rr<rcrPreiirOiLry)r-rrGr0 nsmallestrSrr6fnrrrtest_nsmallestszTestHeap.test_nsmallestc CsddtdD}dddfD]h}dD]^}|t|j||t|ddd||t|jj|||d t||dd d|q&qdS) NcSsg|]}td|fqSrJrLrNrrrrErFz*TestHeap.test_nlargest..rOcSs|dddSrrrrrrrxrFz(TestHeap.test_nlargest..rTrnryrl)r-rrGr0nlargestrSrrrr test_nlargestszTestHeap.test_nlargestcsjfdd}Gddd}Gddd}ddtd D}t|d d }||||t||dS) Ncs:fddDjfddttDS)Ncsg|] }|qSrr)rCrY)comprrrErFzDTestHeap.test_comparison_operator..hsort..csg|]}jjqSr)r0r rYrN)r6rrrrErF)r0rr-rR)r6rrz)rr6rhsorts z0TestHeap.test_comparison_operator..hsortc@seZdZddZddZdS)z-TestHeap.test_comparison_operator..LTcSs ||_dSr rrrYrrr__init__sz6TestHeap.test_comparison_operator..LT.__init__cSs |j|jkSr rrotherrrr__lt__sz4TestHeap.test_comparison_operator..LT.__lt__NrrrrrrrrrLTsrc@seZdZddZddZdS)z-TestHeap.test_comparison_operator..LEcSs ||_dSr rrrrrrsz6TestHeap.test_comparison_operator..LE.__init__cSs |j|jkSr rrrrr__le__sz4TestHeap.test_comparison_operator..LE.__le__N)rrrrrrrrrLEsrcSsg|] }tqSrrBrNrrrrErFz5TestHeap.test_comparison_operator..reTr)r-rSrr2r3)rrrrr6targetrrzrtest_comparison_operators  z!TestHeap.test_comparison_operatorN)rrrr:r,rIrUrWrXrZrardrirvr{rrrrrrrrrr*/s"     r*c@seZdZeZdS)TestHeapPythonNrrrrr0rrrrr srrc@seZdZeZdS) TestHeapCNrrrrr0rrrrrsrc@seZdZdZddZdS)LenOnlyz:Dummy sequence class defining __len__ but not __getitem__.cCsdSNrPrrzrrr__len__szLenOnly.__len__N)rrr__doc__rrrrrrsrc@s,eZdZdZddZeZZZZZ dS)CmpErrz;Dummy element that always raises an error during comparisoncCstdSr )ZeroDivisionErrorrrrr__eq__sz CmpErr.__eq__N) rrrrr__ne__rr__gt____ge__rrrrrsrccs|D] }|VqdS)zRegular generatorNrseqnr7rrrR!src@s eZdZdZddZddZdS)GzSequence using __getitem__cCs ||_dSr rrrrrrr(sz G.__init__cCs |j|Sr r)rr7rrr __getitem__*sz G.__getitem__N)rrrrrrrrrrr&src@s(eZdZdZddZddZddZdS) Iz Sequence using iterator protocolcCs||_d|_dSNrrrrrrr/sz I.__init__cCs|Sr rrzrrr__iter__2sz I.__iter__cCs2|jt|jkrt|j|j}|jd7_|Sr;r7rRr StopIterationrvrrr__next__4s z I.__next__Nrrrrrrrrrrrr-src@s eZdZdZddZddZdS)Igz9Sequence using iterator protocol defined with a generatorcCs||_d|_dSrrrrrrr<sz Ig.__init__ccs|jD] }|VqdSr r)rvalrrrr?s z Ig.__iter__Nrrrrrrrrrrr:src@s eZdZdZddZddZdS)Xz Missing __getitem__ and __iter__cCs||_d|_dSrrrrrrrEsz X.__init__cCs2|jt|jkrt|j|j}|jd7_|Sr;rrrrrrHs z X.__next__N)rrrrrrrrrrrCsrc@s eZdZdZddZddZdS)NzIterator missing __next__()cCs||_d|_dSrrrrrrrPsz N.__init__cCs|Sr rrzrrrrSsz N.__iter__NrrrrrrNsrc@s(eZdZdZddZddZddZdS) EzTest propagation of exceptionscCs||_d|_dSrrrrrrrXsz E.__init__cCs|Sr rrzrrrr[sz E.__iter__cCs dddS)Nrbrrrzrrrr]sz E.__next__NrrrrrrVsrc@s(eZdZdZddZddZddZdS) SzTest immediate stopcCsdSr rrrrrrbsz S.__init__cCs|Sr rrzrrrrdsz S.__iter__cCstdSr )rrzrrrrfsz S.__next__Nrrrrrr`sr)rpcCsttddttt|S)z Test multiple tiers of iteratorscSs|Sr rrrrrrxlrFzL..)rpmaprrrrrrrLjsrc@seZdZddZddZdS) SideEffectLTcCs||_||_dSr )valuer5)rrr5rrrrpszSideEffectLT.__init__cCsg|jdd<|j|jkSr )r5rrrrrrtszSideEffectLT.__lt__Nrrrrrrosrc@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)TestErrorHandlingcCsb|jj|jjfD]}|ttf|dq|jj|jj|jj|jj fD]}|ttf|ddqDdSr) r0rr r2r3r4r r rrrrrrrtest_non_sequence{s   z#TestErrorHandling.test_non_sequencecCs|jj|jjfD]}|ttf|tq|jj|jjfD]}|ttf|tdq:|jj |jj fD]}|t|dtqfdSNrPrc) r0rr r2r3r4rr r rrrrrr test_len_onlys zTestErrorHandling.test_len_onlycCstttg}|jj|jjfD]}|t||q |jj|jjfD]}|t||dqD|jj|jj fD]}|t|d|qjdSr) rr0rr r2rr r rr)rrurrrr test_cmp_errszTestErrorHandling.test_cmp_errcCsD|jj|jj|jj|jj|jj|jjfD]}|tt f|dq(dSr) r0rr r r rrr2r3r4rrrrtest_arg_parsings    z"TestErrorHandling.test_arg_parsingc Cs|jj|jjfD]}ddtddtdddfD]}tttttfD](}| t |d||t |d|q@| t |dt |g| t |dt|| t |dt|| t|dt|q.qdS) NZ123rO)r<g333333?rKirc)r0rrr-rrrrrrrGrr2r3rrrr)rrr}grrrtest_iterable_argss&z$TestErrorHandling.test_iterable_argscsfgfddtdD|ttf$|jtdWdn1sX0YdS)Nc3s|]}t|VqdSr rrNr5rr rFz@TestErrorHandling.test_heappush_mutating_heap..r)extendr-r2rV RuntimeErrorr0r rrzrrrtest_heappush_mutating_heapsz-TestErrorHandling.test_heappush_mutating_heapcs^gfddtdD|ttf|jWdn1sP0YdS)Nc3s|]}t|VqdSr rrNrrrrrFz?TestErrorHandling.test_heappop_mutating_heap..r)rr-r2rVrr0r rzrrrtest_heappop_mutating_heapsz,TestErrorHandling.test_heappop_mutating_heapcsBGfdddt}g|j|d|t|jjddS)NcseZdZfddZdS)zMTestErrorHandling.test_comparison_operator_modifiying_heap..EvilClasscs tSr clearNotImplementedrorrrrszTTestErrorHandling.test_comparison_operator_modifiying_heap..EvilClass.__lt__Nrrrrrrrr EvilClasssrrr<)r^r0r r2rVr )rrrrr(test_comparison_operator_modifiying_heapsz:TestErrorHandling.test_comparison_operator_modifiying_heapcsGfdddt}Gfdddt}gg|j|d|j|d|ttf|jj|d|ttf|jj|ddS)NcseZdZfddZdS)zOTestErrorHandling.test_comparison_operator_modifiying_heap_two_heaps..hcs tSr rrlist2rrrszVTestErrorHandling.test_comparison_operator_modifiying_heap_two_heaps..h.__lt__Nrrrrrr`sr`cseZdZfddZdS)zOTestErrorHandling.test_comparison_operator_modifiying_heap_two_heaps..gcs tSr rrlist1rrrszVTestErrorHandling.test_comparison_operator_modifiying_heap_two_heaps..g.__lt__Nrrrrrrsrrr<)r^r0r r2rVr)rr`rr)rrr2test_comparison_operator_modifiying_heap_two_heapss zDTestErrorHandling.test_comparison_operator_modifiying_heap_two_heapsN) rrrrrrrrrrrrrrrrrys   rc@seZdZeZdS)TestErrorHandlingPythonNrrrrrrsrc@seZdZeZdS)TestErrorHandlingCNrrrrrrsr__main__)&rr.Zunittestr!testrrroperatorrZimport_fresh_modulerrrrr)r*rrrrrrrrrrrr itertoolsrprrrrrrmainrrrrsF   ]      Z