a ze@s4ddlmZddlZddlmZmZddlZddlZddlZddl Z ddl Z ddl Z dZ ddZ GdddZGd d d ZGd d d ejZGd ddejZGdddeZGdddeZGdddejZGdddeZGdddejZGdddejZdZdeiZd"ddZedkr0ed d!dS)#dequeN)support seq_testsiccstdVdS)N) SyntaxErrorrrC/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_deque.pyfail sr c@seZdZddZdS)BadCmpcCstdSN) RuntimeErrorselfotherrrr __eq__sz BadCmp.__eq__N__name__ __module__ __qualname__rrrrr r sr c@seZdZddZddZdS) MutateCmpcCs||_||_dSr )rresult)rrrrrr __init__szMutateCmp.__init__cCs|j|jSr )rclearrrrrr rs zMutateCmp.__eq__N)rrrrrrrrr rsrc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?d@Z"dAdBZ#dCdDZ$dEdFZ%dGdHZ&dIdJZ'dKdLZ(dMdNZ)dOdPZ*dQdRZ+dSdTZ,dUdVZ-dWdXZ.dYdZZ/d[d\Z0d]d^Z1d_d`Z2e3j4Z4e3j5dadbZ6dcS)d TestBasiccsttddtdtddD]}|q&ttddD]}|qD|tttdd|tdfdd td D}||ttdd |tttd dfd d td D}| ||ttd d|tttd d dS)Niix8rXcsg|] }qSrpopleft.0idrr )z)TestBasic.test_basics..2csg|] }qSrpopr!r$rr r&-r') rrangerappendreversed appendleft assertEquallistlenreverserr#leftrightrr$r test_basicss  zTestBasic.test_basicsc Cs0|ttdd|ttddttd}t|dd}|t|g|t|d|t|gd||ttdd|d|t|gd | d |t|gd| dd g|t|gd | d d g|t|gdttddd}||t t jtt jd}zN|t||tt jd}||t|W|t t jn|t t j0ttddd}|t|dtt jd}zN|t||tt jd}||t|W|t t jn|t t j0dS)Nabc maxlenzdeque([7, 8, 9], maxlen=3)) )rArBr<r@ )rBr<rCrArwrz%deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])) assertRaises ValueErrorriterr-r1r2reprr.r0extend extendleftrunlinkTESTFNopenwritestrcloseread)ritr%forrr test_maxlen2sR          zTestBasic.test_maxlencCsttd}t|dd|t|gttd}tdd}|||t|gttd}tdd}|||t|gdS)Ndrr>)rHr-rr1r2rJrK)rrSr%rrr test_maxlen_zero\s        zTestBasic.test_maxlen_zerocCs|tjd|tdjd|tdddjd|tdddjd|tdddjd|ttd}d|_Wdn1s0YdS)Nr9r>rr<)r1rr?rFAttributeErrorrr%rrr test_maxlen_attributeks zTestBasic.test_maxlen_attributec Cs\dddddfD]>}t|}t|}dD]$}||||||||fq*q|t|j|t|jddGd d d }tdd|d g}|t|jdtgd }|t|j|Gd dd}|}tddd |ddg}||_|t|jd tdgd}t t |D]}| dq| d||dd||dddS)NZ abracadabraZ simsalabimr9abcdefghijklmnopqrstuvwxyzrrYc@seZdZddZdS)z(TestBasic.test_count..BadComparecSstdSr )ArithmeticErrorrrrr r~sz/TestBasic.test_count..BadCompare.__eq__Nrrrrr BadCompare}srar=rrYr=c@seZdZddZdS)z-TestBasic.test_count..MutatingComparecSs|jdS)NT)r%r+rrrr rs z4TestBasic.test_count..MutatingCompare.__eq__Nrrrrr MutatingComparesrcrXr:r) r2rr1countrF TypeErrorr`r%r r-r3rotate)rsr%Zletterrarcmr#rrr test_countus.$  zTestBasic.test_countcCsztd}||tdtdtt|fD]^}|||kt|t|koXt|t|k|||kt|t|kot|t|k q,ttd}|D]}|D]}|||kt|t|k||f|||kt|t|k||f|||kt|t|k||f|||kt|t|k||f|||kt|t|k||f|||kt|t|k||fqqdS)Nxabcr9ab) r]abrmZbar9ZxbarlZcba)rr r2r1typemap)rr%eargsxyrrr test_comparisonss ,0 """""zTestBasic.test_comparisonscCsd}tt|}t|D]}|||vq||d|vtt|}t|d||d<|t||vWdn1s0Ytt|}t||d<|t||vWdn1s0YdS)NrrFrY)rr- assertTruerrFr r )rnr%r#rrr test_containss    &  zTestBasic.test_containscsGfddd}t||g|tdv}Wdn1sJ0Yt||g|td}Wdn1s0YdS)NcseZdZfddZdS)z5TestBasic.test_contains_count_stop_crashes..Acs tSr )rNotImplementedrr$rr rsz.A.__eq__Nrrr$rr Asr{r=)rrFr rf)rr{_rr$r test_contains_count_stop_crashess & z*TestBasic.test_contains_count_stop_crashescCsXtd}|t|jd|d|t|td|||t|tddS)Nrnrbcdabcdabcdabcd)rrFrgrJr1r2r[rrr test_extends   zTestBasic.test_extendcCst}td}td}|||t|||td|||td|||td|||td|||t|||td|||tdtddd}td}|||td|ttddWdn1s0YdS) Nr9defabcdefabcabcrXr>ZghZefgh)rr1 assertIsNotrFrg)rr%rrfghrrr test_adds   zTestBasic.test_addcCsDtd}|d7}|t|td||7}|t|tddS)Nrnr~rr)rr1r2r[rrr test_iadds zTestBasic.test_iaddcCstd}|t|jd|d|t|ttd|||t|tdt}|td|t|tttd|t|jt dS)Nrnrr~rZabcddcba) rrFrgrKr1r2r/r-rr r[rrr test_extendlefts  zTestBasic.test_extendleftcCsd}tt|}tt|}t|D]f}||dtdkrZ||||tdt|t|D]}||||kspJqpq$td}||dd||ddt}| t |j d| t |j ddS) Nrrg?rZsupermanrir:rx) rr-r2r r+randomr.r3r1rF IndexError __getitem__)rrxr%lr#jrrr test_getitems"       zTestBasic.test_getitemc CsVdD] }tt|}t|D]}||||q|t||dWdn1sd0Ytt|}t|d||d<|t||Wdn1s0Ytt|}t||d<|t||Wdq1s0Yqd}d}t|d}t |d}tdt |ddt |dD]}tdt |ddt |dD]}|dD]~} z|| ||} WnNty|t|| ||Wdn1s0YYn0||| ||| qqzqTttd d d }td D]*} |d d}|||d | q&dS)N)rrY(rrFrY ABCDEFGHIZrdri'r<rVi4!i) rr-r1indexrFrGrr r r2r3rh) rrxr%r#elementsZ nonelementristartstopelementtargetsteprrr test_index s@    ,  (  ,  &&  4"  zTestBasic.test_indexcCsDtd}|t|ddd}Wdn1s60YdS)NZAAAz Hello worldrrX)rrFrGr)rr%r#rrr test_index_bug_249138s zTestBasic.test_index_bug_24913cCshd}tdt|ddt|dD]<}td}td}||d||d|t||q&dS)NrrrYrdr)r-r3rr2insertr1)rrr#r%rirrr test_insert=s&  zTestBasic.test_insertcCsd}t|t|d}|t|ddWdn1s@0Yd}tt| t|D]R}t|t|dd}||d|dkr|||dqb|||ddqbdS)NABCr>rYrrrr)rr3rFrrr-r1)rdatar%rr#rrr test_insert_bug_26194Gs * zTestBasic.test_insert_bug_26194c Cs4dD],}t}||9}||t||jqdD]4}td}||9}||td|||jq6dD]>}tdd}||9}||tdt|d||jdqpdD]4}td}||9}||td|||jqdD]@}tdd}||9}||td|dd||jdqdS)N)r:rrrYr<rrn) rr:rrrYr<ir^irr^ri )rr1Z assertIsNoner?min)rrxr%rrr test_imulVs2  zTestBasic.test_imulcCstd}||dt||dt||dtd||dtd||dtd||d||tdt|tdt|td t|d|t|d|t|d|td|d|td|d|tdtdd d }||dt||dt||dtd||dtd ||d td dS) Nr9rrrrYrr=Z abcabcabcrdr>Zbcabcr)rr1rr[rrr test_mulus* zTestBasic.test_mulcCsd}tt|}t|D]}d|||<q|t|ddt|Dt|}td|ddD]}d|||<d|||<q`|t||dS) Nrr<cSsg|] }d|qS)r<rr!rrr r&r'z*TestBasic.test_setitem..rrr:r@)rr-r1r2)rrxr%r#rrrr test_setitems   zTestBasic.test_setitemcCsd}tt|}|t|j| d|t|j|t|D]T}|t|||tt| t|}||}| ||||=| ||q>|t|ddS)Nr^rr) rr-rFr __delitem__r1r3r randrangeassertInZ assertNotIn)rrxr%r#rvalrrr test_delitems   zTestBasic.test_delitemc Csd}ddt|D}t|D]h}t|d|}|}|t|tt|d|||d||t||d|q|t|jddS)Nr^cSsg|] }tqSrrr!rrr r&r'z*TestBasic.test_reverse..r) r-rr4r1r2r/ZassertIsrFrg)rrxrr#r%rErrr test_reverses   zTestBasic.test_reversecCs,td}t|}t|}|d|d|dt|}|d|d|d||t||t|dD]}t|}t|}||t|D]}|dq|t|t||| |t||||||t||q|t|dD]}t|}t|}|| t|D]}|dq6|t|t||||t||||||t||qt|}t|}|td|j}ttdD] }|q|t|t||t |jd |t |jdd t}|||tdS) Nabcderr]Zeabcdr:Zbcdear=rtr<) tupler3rrhr1joinr-BIGrFrg)rrirxr%r#rrrZdrrrr test_rotatesX          zTestBasic.test_rotatecCstd}|t|d||t|d||t|d|t|j|t|d|d|t|d|d|t|d| |t|ddS)NrmrYrrcr%) rr1r3r r+rFrr.r0rr[rrr test_lens  zTestBasic.test_lencCs&t}|t|j|t|jdSr )rrFrr+r r[rrr test_underflowszTestBasic.test_underflowcCs`ttd}|t|d||t|d|t|g||t|gdS)NrVr)rr-r1r3rr2r[rrr test_clears zTestBasic.test_clearcCstd}|d||td|d||td|t|jd||tdtddtdg}t|}|t|jdt||D]\}}|||uqdD]@}tdg}| t ||dg|t |jd||tqdS) NZ abcdefghcijrZ abdefghcijZ abdefghijrnro)TFrm) rremover1rFrGr r ziprwrJrr)rr%rrrtrumatchrrr test_removes"   zTestBasic.test_removecCsJttd}tt|}|t|t||||dt|dS)Nrz...)rr-evalrIr1r2r.rrr%rrrrr test_repr s    zTestBasic.test_reprc Csttd}||zfttjttjd}t||dd|ttjd}| | t |W|ttjn|ttj0dS)NrrDr])fileendrE) rr-r.rrLrMrNprintrQr1rRrI)rr%rTrrr test_print's     zTestBasic.test_printcCs$|ttddd|ttddS)Nr9rYr=r)rFrgrrrrr test_init5szTestBasic.test_initcCs|tttddS)Nr9)rFrghashrrrrr test_hash9szTestBasic.test_hashcCsdD]v}tt|}|j|j}}t|tD].}|||}|||kr,||||q,|t|ttt|tqdSN)rrrYrVr)rr-r.r rr1r2rsizer%r.r+r#rtrrr #test_long_steadystate_queue_popleft<s  z-TestBasic.test_long_steadystate_queue_popleftcCsdD]}ttt|}|j|j}}t|tD].}|||}|||kr0||||q0|ttt|ttt|tqdSr)rr/r-r0r+rr1r2rrrr $test_long_steadystate_queue_poprightGs z.TestBasic.test_long_steadystate_queue_poprightcCsVt}|j|j}}ttD] }||qttD]}|}||kr2|||q2dSr )rr.r r-rr1rr%r.r+r#rtrrr test_big_queue_popleftSs   z TestBasic.test_big_queue_popleftcCsVt}|j|j}}ttD] }||qttD]}|}||kr2|||q2dSr )rr0r+r-rr1rrrr test_big_queue_popright^s   z!TestBasic.test_big_queue_poprightcCsjt}|j|j}}ttD] }||qtttD]}|}||kr6|||q6|t|ddSNr)rr.r+r-rr/r1r3rrrr test_big_stack_righths  zTestBasic.test_big_stack_rightcCsjt}|j|j}}ttD] }||qtttD]}|}||kr6|||q6|t|ddSr)rr0r r-rr/r1r3rrrr test_big_stack_leftss  zTestBasic.test_big_stack_leftcCs@ttd}t|}|t|t||t|t|dS)Nr)rr-assertNotEqualidr1r2rrrr test_roundtrip_iter_init~s z"TestBasic.test_roundtrip_iter_initcCsttdttddfD]f}ttjdD]R}t||}t|}|t|t||t |t |||j |j q,qdS)NrrVr) rr-pickleHIGHEST_PROTOCOLdumpsloadsrrr1r2r?)rr%r#rirrrrr test_pickles  zTestBasic.test_picklecCstdtddfD]p}||ttjdD]R}tt||}|t|t|| t|dt|| |j |j q.qdS)Nr9r=rr:) rr.r-rrrrrrr1r?)rr%r#rrrrr test_pickle_recursives zTestBasic.test_pickle_recursivec Csttd}dd|D}ttjdD]}t|}t||f|}t|\}}t|D]\}} | ||<q\|t |t ||t ||t |t||f|}t|\}}t|D]\}} | ||<q|t |t ||t ||ddtdt |D]}t |q t||f|}t|\}}t|D]\}} | ||<qB|t |t ||t |g| tt |t||f|}t|\}}t|D]\}} | ||<q|t |t ||t |gq(dS)NrcSsg|] }|dqS)g)\(?rr!rrr r&r'z2TestBasic.test_iterator_pickle..r)rr-rrrHrr enumerater1rpr2nextr3rF StopIteration) rZorigrprotoZitorgdumprSr%r#rtrrr test_iterator_pickles@      zTestBasic.test_iterator_picklecCsbdg}t|g}t|}|t|t|d|d<|t|t||t|t|dSNr<rCr)rcopydeepcopyr1r2rrrmutr%rrrrr test_deepcopys  zTestBasic.test_deepcopyc Csdg}t|g}t|}|t|t|d|d<|t|t||t|t|tdD]}tddD]r}ddt|D}|dkrt|nt||}|}|||||j|j|t d d t ||DqtqfdS) Nr<rCrrdr:cSsg|] }tqSrr)r"rrrr r&r'z'TestBasic.test_copy..css|]\}}||uVqdSr r)r"rtrurrr r'z&TestBasic.test_copy..) rrr1r2rrr-r?rwallr)rrr%rrr#r?rirrr test_copys    zTestBasic.test_copycCs`dg}t|g}|}|t|t|d|d<|t|t||t|t|dSr)rrr1r2rrrrrr test_copy_methods zTestBasic.test_copy_methodcCs6dtdfD]$}|ttt|tt|q dSNr)r-r1r2r/r)rrirrr test_reversedszTestBasic.test_reversedcCsDttt}dtdfD]$}|t|t|tt|qdSr)rpr/rr-r1r2)rklassrirrr test_reversed_newszTestBasic.test_reversed_newcCs2ddl}t}tdD]}|d|qdS)NrrVr)gcrr-r.collect)rrr%r#rrr test_gc_doesnt_blowups   zTestBasic.test_gc_doesnt_blowupcCsGdddt}tdD]b}|}t|}|dkrBt|dg}ntt|dg}t||_~~t | |dudqdS)Nc@s eZdZdS)z,TestBasic.test_container_iterator..CNrrrrrrr CsrrYrrzCycle was not collected) objectr-weakrefrefrr/rHrtrrrw)rrr#objr containerrrr test_container_iterators   z!TestBasic.test_container_iteratorcCsd}td}td|}|tt||j}|t|||td|||td|d|||td||d||tdd||d|dS) N@Z2P4nPzP%dPPrnrrY*+) rZ calcvobjsizestructcalcsizer1r __sizeof__r check_sizeof)rZBLOCKLENZbasesize blocksizecheckrrr test_sizeofs zTestBasic.test_sizeofN)7rrrr8rUrWr\rkrvryr}rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr cpython_onlyr rrrr rsf* !  .   5         )   rc@s$eZdZddZddZddZdS)TestVariousIteratorArgscCsddtddtdddfD]}tjtjtjtjtjtjfD]$}|t t ||t ||q:| t t t || t t t|| tt t|qdS)NZ123r]r)Zdog333333?rird)r-rSequenceZIterFuncZIterGenZ IterFuncStopZ itermultiZiterfuncr1r2rrFrgZ IterNextOnlyZ IterNoNextZeroDivisionErrorZ IterGenExc)rrirrrr test_constructors"z(TestVariousIteratorArgs.test_constructorcCs*td}t|}||tt|dS)NZabcdefg)rrHr+rFr rrr%rSrrr test_iter_with_altered_data sz3TestVariousIteratorArgs.test_iter_with_altered_datacCs*t}t|}|d|tt|dS)Nr<)rrHr.rFr rrrrr !test_runtime_error_on_empty_deque&s z9TestVariousIteratorArgs.test_runtime_error_on_empty_dequeN)rrrrrrrrrr r s r c@s eZdZdS)DequeNrrrrr r,src@seZdZddZdS)DequeWithBadItercCstdSr )rgrrrr __iter__0szDequeWithBadIter.__iter__Nrrrrrrrr r/src@sBeZdZddZddZddZddZd d Zej d d Z d S) TestSubclasscs,ttdtdtddD]}|q$ttddD]}|qB|tttdd|tdfddtd D}||ttdd |tttd dfd dtd D}| ||ttd d|tttd d  |tddS) Nrrrrrcsg|] }qSrrr!r$rr r&?r'z,TestSubclass.test_basics..r(r)csg|] }qSrr*r!r$rr r&Cr'r,) rr-rr.r/r0r1r2r3r4rr5rr$r r85s"   zTestSubclass.test_basicscCstd}|}|t|t||t|t|t|}|t|t||t|t|ttjdD]V}t||}t |}| t |t ||t|t||t|t|qvtddd}|}|t|t||t|t|t|}|t|t||t|t|ttjdD]X}t||}t |}| t |t ||t|t||t|t|qHdS)Nr9rrrXr>) r__copy__r1rpr2r-rrrrrr)rr%rrrrirrr test_copy_pickleKs4     zTestSubclass.test_copy_picklecCs ttjdD]}tdtddfD]}||tt||}|t|t|| t |t || |j |j | }| }| t|t|| ||||_ tt||}| t|j t|q$tdtddfD]}|ttj||qqdS)Nrr9r=rY)r-rrrr.rrrrr1rpr?r+rtrrFrg)rrr%rrddeerrr ros   z"TestSubclass.test_pickle_recursivecCsDtd}t|}|t|t|d}t|tt|dS)NZgallahad) rrproxyr1rPr gc_collectrFReferenceError)rr%prrr test_weakrefs  zTestSubclass.test_weakrefcCs4Gdddt}|gd}|gd}||kdS)Nc@seZdZddZdS)z-TestSubclass.test_strange_subclass..XcSstgSr )rHrrrr rsz6TestSubclass.test_strange_subclass..X.__iter__Nrrrrr Xsr!rb)rXrdrr)rr!Zd1Zd2rrr test_strange_subclasss  z"TestSubclass.test_strange_subclasscCsGdddt}|}dd}||_|t|dWdn1sL0Y|t |tgdWdn1s0YdS)Nc@s eZdZdS)z&TestSubclass.test_bug_31608..XNrrrrr r!sr!c_sdgS)Nrr)clsrskwargsrrr bad___new__sz0TestSubclass.test_bug_31608..bad___new__rrb)r__new__rFrg)rr!r%r%rrr test_bug_31608s & zTestSubclass.test_bug_31608N) rrrr8rrr r"rr r'rrrr r3s$ rc@seZdZdddZdS)SubclassWithKwargsrcCst|dSr )rr)rnewargrrr rszSubclassWithKwargs.__init__N)r)rrrrrrrr r(sr(c@seZdZddZdS)TestSubclassWithKwargscCstdddS)Nr)r))r(rrrr test_subclass_with_kwargssz0TestSubclassWithKwargs.test_subclass_with_kwargsN)rrrr+rrrr r*sr*c@s0eZdZeZddZddZddZddZd S) TestSequencecCsdSr rrrrr rszTestSequence.test_getitemcCsdSr rrrrr test_getsliceszTestSequence.test_getslicecCsdSr rrrrr test_subscriptszTestSequence.test_subscriptcCs|ddS)Nz-Exhausted deque iterator doesn't free a deque)ZskipTestrrrr test_free_after_iteratingsz&TestSequence.test_free_after_iteratingN) rrrrZ type2testrr-r.r/rrrr r,s r,a Example from the Library Reference: Doc/lib/libcollections.tex >>> from collections import deque >>> d = deque('ghi') # make a new deque with three items >>> for elem in d: # iterate over the deque's elements ... print(elem.upper()) G H I >>> d.append('j') # add a new entry to the right side >>> d.appendleft('f') # add a new entry to the left side >>> d # show the representation of the deque deque(['f', 'g', 'h', 'i', 'j']) >>> d.pop() # return and remove the rightmost item 'j' >>> d.popleft() # return and remove the leftmost item 'f' >>> list(d) # list the contents of the deque ['g', 'h', 'i'] >>> d[0] # peek at leftmost item 'g' >>> d[-1] # peek at rightmost item 'i' >>> list(reversed(d)) # list the contents of a deque in reverse ['i', 'h', 'g'] >>> 'h' in d # search the deque True >>> d.extend('jkl') # add multiple elements at once >>> d deque(['g', 'h', 'i', 'j', 'k', 'l']) >>> d.rotate(1) # right rotation >>> d deque(['l', 'g', 'h', 'i', 'j', 'k']) >>> d.rotate(-1) # left rotation >>> d deque(['g', 'h', 'i', 'j', 'k', 'l']) >>> deque(reversed(d)) # make a new deque in reverse order deque(['l', 'k', 'j', 'i', 'h', 'g']) >>> d.clear() # empty the deque >>> d.pop() # cannot pop from an empty deque Traceback (most recent call last): File "", line 1, in -toplevel- d.pop() IndexError: pop from an empty deque >>> d.extendleft('abc') # extendleft() reverses the input order >>> d deque(['c', 'b', 'a']) >>> def delete_nth(d, n): ... d.rotate(-n) ... d.popleft() ... d.rotate(n) ... >>> d = deque('abcdef') >>> delete_nth(d, 2) # remove the entry at d[2] >>> d deque(['a', 'b', 'd', 'e', 'f']) >>> def roundrobin(*iterables): ... pending = deque(iter(i) for i in iterables) ... while pending: ... task = pending.popleft() ... try: ... yield next(task) ... except StopIteration: ... continue ... pending.append(task) ... >>> for value in roundrobin('abc', 'd', 'efgh'): ... print(value) ... a d e b f c g h >>> def maketree(iterable): ... d = deque(iterable) ... while len(d) > 1: ... pair = [d.popleft(), d.popleft()] ... d.append(pair) ... return list(d) ... >>> print(maketree('abcdefgh')) [[[['a', 'b'], ['c', 'd']], [['e', 'f'], ['g', 'h']]]] libreftestcCsddl}tttttf}tj||rxt|drxddl }dgd}t t |D]"}tj|| | ||<qLt|ddlm}t||dS)Nrgettotalrefcountrd) test_deque)sysrr rr*r,rZ run_unittesthasattrrr-r3rr1rtestr2Z run_doctest)verboser3Z test_classesrcountsr#r2rrr test_main,s$    r8__main__T)r6)N) collectionsrZunittestr5rrrrrrrrrr r rZTestCaserr rrrr(r*Z CommonTestr,r0Z__test__r8rrrrr s< |rg