a ze@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z Gdddej Z Gdddej Z ddl mZGdd d ejZGd d d eZGd d d ejZedkredS)N)supportc@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^Z1e2j3d_d`Z4e2j3dadbZ5e2j3dcddZ6dedfZ7e2j3dgdhZ8e2j3didjZ9e2j3dkdlZ:e2j3dmdnZ;e2j3dodpZdudvZ?dwdxZ@dydzZAd{d|ZBd}d~ZCddZDddZEddZFddZGddZHddZIddZJddZKddZLddZMddZNddZOddZPddZQddZRddZSddZTe2j3ddZUe2j3ddZUdS)DictTestc CsGdddt}ddi|ddifD]v}|ttfi|Wdn1sV0Y|t ijfi|Wdq$1s0Yq$dS)Nc@s eZdZdS)z7DictTest.test_invalid_keyword_arguments..CustomN__name__ __module__ __qualname__rrB/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_dict.pyCustomsr )dict assertRaises TypeErrorupdate)selfr invalidrrr test_invalid_keyword_argumentss  , z'DictTest.test_invalid_keyword_argumentscCs |ti|tidSN) assertEqualr assertIsNotrrrr test_constructorszDictTest.test_constructorcCs^dD]T}ddt|D}t|dd|D}dd|d}|t|t|qdS) N)rr icSs$g|]}dttjd|fqS))joinrandomsamplestring ascii_letters.0irrr !sz5DictTest.test_literal_constructor..css|]\}}d||VqdS)z {!r}: {:d}N)format)r#kvrrr $z4DictTest.test_literal_constructor..{z, })rangershufflerrevalr )rnitemsZformatted_itemsZ dictliteralrrr test_literal_constructors z!DictTest.test_literal_constructorcCsbdddd}dddd}|}||O}|||Bddddd||ddddd|}||O}|||Bddddd||ddddd|}|gd O}||ddddd||dt||d t||d t||d t|t|jd||d dddd|t|jd ||d dddddS) Nrr )rr r r r r r3)rr r r3)r r r3r)r r r r r3r3rZBADr) copyrassertIs__or__NotImplementedrr__ior__ ValueError)rabcrrr test_merge_operator(s*   zDictTest.test_merge_operatorcCsD|i d|ddi|tid|tddiddS)NTr r F)r9 assertTrueboolrrrr test_boolHszDictTest.test_boolcCsi}|t|tddd}|}|t|ddh|d||d||d||d||t|jd|ttddddS)Nr r r>r?r>r?r>zdict_keys(['a']))rsetkeysassertInrrreprr )rdr'rrr test_keysNs     zDictTest.test_keyscCsfi}|t|tddi}|t|dh|t|jd|ttddddS)Nr r rFzdict_values([1]))rrGvaluesrrrJr rrKrrr test_values[s zDictTest.test_valuescCsfi}|t|tddi}|t|dh|t|jd|ttddddS)Nr r r r rFzdict_items([('a', 1)]))rrGr1rrrJr rNrrr test_itemscs zDictTest.test_itemscCsli}|d||d|v|d|vddd}|d||d||d||t|jdS)Nr>r r rEr?r@) assertNotIn assertFalserBrIrr __contains__rNrrr test_containsls     zDictTest.test_containscCs2i}|t|dddd}|t|ddS)Nrr r rE)rlenrNrrr test_lenxs zDictTest.test_lencsddd}||dd||ddd|d<d|d<||dd||dd|d=||ddd |t|jGfd d d t}i}d ||<|t|jd GdddtGfdddt}|}d ||<d|_||j|dS)Nr r rEr>r?r3r@)r>r@cs eZdZfddZddZdS)z$DictTest.test_getitem..BadEqcs dSrrrotherExcrr __eq__sz+DictTest.test_getitem..BadEq.__eq__cSsdS)Nrrrrr __hash__sz-DictTest.test_getitem..BadEq.__hash__Nrrrr]r_rr[rr BadEqs ra*c@s eZdZdS)z"DictTest.test_getitem..ExcNrrrrr r\r*r\cseZdZdZfddZdS)z&DictTest.test_getitem..BadHashFcs|jrndSdSNrbfailrr[rr r_sz/DictTest.test_getitem..BadHash.__hash__Nrrrrfr_rr[rr BadHashsrhT)rrr __getitem__objectKeyError Exceptionrf)rrKrarhxrr[r test_getitem~s(  zDictTest.test_getitemcCs4dddd}|||i|t|jddSNr r r3r4)clearrrrrNrrr test_clears  zDictTest.test_clearcsli}|ddi|ddi|dddd||dddd|||dddd|ttf|jdGddd}|||||ddddGd d d t|Gfd d d }||j|Gfd d d }||j|Gfdd d }||j|Gfdddt}|ij||tijdgdS)Nr dr r3r4c@s$eZdZddZddZddZdS)z,DictTest.test_update..SimpleUserDictcSsdddd|_dSrorKrrrr __init__sz5DictTest.test_update..SimpleUserDict.__init__cSs |jSr)rKrHrrrr rHsz1DictTest.test_update..SimpleUserDict.keyscSs |j|Srrt)rr$rrr risz8DictTest.test_update..SimpleUserDict.__getitem__N)rrrrurHrirrrr SimpleUserDictsrvc@s eZdZdS)z!DictTest.test_update..ExcNrrrrr r\r*r\cseZdZfddZdS)-DictTest.test_update..FailingUserDictcsdSrrrr[rr rHs2DictTest.test_update..FailingUserDict.keysN)rrrrHrr[rr FailingUserDictsrycs eZdZfddZddZdS)rwcsGfddd}|S)Ncs(eZdZddZddZfddZdS)EDictTest.test_update..FailingUserDict.keys..BogonItercSs d|_dSNr r$rrrr rusNDictTest.test_update..FailingUserDict.keys..BogonIter.__init__cSs|Srrrrrr __iter__sNDictTest.test_update..FailingUserDict.keys..BogonIter.__iter__cs|jrd|_dSdS)Nrr>r|rr[rr __next__sNDictTest.test_update..FailingUserDict.keys..BogonIter.__next__Nrrrrur~rrr[rr BogonItersrrrrr[rr rHs rxcSs|Srrrkeyrrr ris9DictTest.test_update..FailingUserDict.__getitem__NrrrrHrirr[rr rys cs eZdZddZfddZdS)rwcSsGddd}|S)Nc@s$eZdZddZddZddZdS)rzcSstd|_dS)Nr>)ordr$rrrr rusr}cSs|Srrrrrr r~srcSs2|jtdkr*t|j}|jd7_|StdS)Nzr )r$rchr StopIteration)rZrtnrrr rs  rNrrrrr rsrrrrrr rHs rxcsdSrrrr[rr risrNrrr[rr rys cs eZdZddZfddZdS)z$DictTest.test_update..badseqcSs|Srrrrrr r~sz-DictTest.test_update..badseq.__iter__cs dSrrrr[rr rsz-DictTest.test_update..badseq.__next__Nrrrr~rrr[rr badseqsr) rrrrAttributeErrorrprlrjr=)rrKrvryrrr[r test_updates. zDictTest.test_updatec sj|tdddddi|d|ddddd|ddddd|gidd}||ddi|tijdGd d d t}||d d di||d d di||d |||d |Gd d d t}|d}||ddd||tj|ttjGdddt Gfdddt}||jdgGfdddt }|tj|Gfdddt}||jdgtt t dt d|tdtt t ddgdGfdddt}ddt dD } | jdddd||hd| dS)Nabc)r>r?r@)rXrcss dVdSr{rrrrr gsz!DictTest.test_fromkeys..gr r3c@s eZdZdS)z(DictTest.test_fromkeys..dictlikeNrrrrr dictliker*rr>c@seZdZddZdS)z&DictTest.test_fromkeys..mydictcSstSr) collectionsUserDictclsrrr __new__sz.DictTest.test_fromkeys..mydict.__new__Nrrrrrrrr mydictsrabrEc@s eZdZdS)z#DictTest.test_fromkeys..ExcNrrrrr r\r*r\cseZdZfddZdS)z(DictTest.test_fromkeys..baddict1cs dSrrrr[rr rusz1DictTest.test_fromkeys..baddict1.__init__Nrrrrurr[rr baddict1srcs eZdZddZfddZdS)z&DictTest.test_fromkeys..BadSeqcSs|Srrrrrr r~sz/DictTest.test_fromkeys..BadSeq.__iter__cs dSrrrr[rr rsz/DictTest.test_fromkeys..BadSeq.__next__Nrrr[rr BadSeqsrcseZdZfddZdS)z(DictTest.test_fromkeys..baddict2cs dSrr)rrvaluer[rr __setitem__ sz4DictTest.test_fromkeys..baddict2.__setitem__N)rrrrrr[rr baddict2srrcseZdZfddZdS)z(DictTest.test_fromkeys..baddict3csSrrrrtrr r*sz0DictTest.test_fromkeys..baddict3.__new__Nrrrtrr baddict3)srcSsi|] }||qSrrr"rrr ,r*z*DictTest.test_fromkeys.. >r@r>r?)rr fromkeysrrrassertIsInstancerrrlrjzipr-r8r) rrrrZudrrrrresr)r\rKr test_fromkeyssB (zDictTest.test_fromkeyscCsdddd}||||||||dddd|}d|d<||||ii|t|jddS)Nr r r3r4rX)rr8rassertNotEqualrr)rrKr8rrr test_copy1s  zDictTest.test_copyc CsdD]}t|d||d}|j|dvi}t|D] }|||<q:|}||||||d|d<||||t|t|dWdq1s0YqdS)N)rrri'ir ) dict_sizerrr ) r randrangeZsubTestr-r8rrrrV)rrrKr$d2rrr test_copy_fuzz>s     zDictTest.test_copy_fuzzcCsPGddd}|}iddi|difD]$}|}|t|t|q&dS)Nc@s eZdZdS)z0DictTest.test_copy_maintains_tracking..ANrrrrr AOsrr>r val)r8rgc is_tracked)rrrrKrrrr test_copy_maintains_trackingNs z%DictTest.test_copy_maintains_trackingcCs>ddtdD}tdD] }||=q|}|||dS)NcSsi|] }||qSrrr#r'rrr r_r*z1DictTest.test_copy_noncompact..ri)r-r8r)rrKr'rrrr test_copy_noncompactXs  zDictTest.test_copy_noncompactcCsi}||dd||dddddd}||dd||ddd||dd||ddd|t|j|t|jddddS)Nr@r3r r rEr>)r9getrrrrNrrr test_getes zDictTest.test_getcsi}||dd|dg||dd|dgd||ddd|dgd|t|dd|t|jGdddtGfd d d t}|}d ||<d |_ ||j|gdS) NZkey0rr3rrXr c@s eZdZdS)z%DictTest.test_setdefault..ExcNrrrrr r\}r*r\cseZdZdZfddZdS)z)DictTest.test_setdefault..BadHashFcs|jrndSdSrdrerr[rr r_sz2DictTest.test_setdefault..BadHash.__hash__Nrgrr[rr rhsrhrbT) r9 setdefaultappendrrVrrrlrjrf)rrKrhrmrr[r test_setdefaultqs zDictTest.test_setdefaultcCsdGdddt}|}|di}|}||g||jd||jd||j|jddS)Nc@s$eZdZddZddZddZdS)z/DictTest.test_setdefault_atomic..HashedcSsd|_d|_dSNr hash_counteq_countrrrr rusz8DictTest.test_setdefault_atomic..Hashed.__init__cSs|jd7_dSNr rbrrrrr r_sz8DictTest.test_setdefault_atomic..Hashed.__hash__cSs|jd7_t|t|kSr{ridrYrrr r]sz6DictTest.test_setdefault_atomic..Hashed.__eq__Nrrrrur_r]rrrr Hashedsrrr )rjrrrrrrZhashed1yZhashed2rrr test_setdefault_atomics  zDictTest.test_setdefault_atomicc CspGdddt}|}|dddddddddi}|}g||<||jd||jd||j|jddS)Nc@s$eZdZddZddZddZdS)z6DictTest.test_setitem_atomic_at_resize..HashedcSsd|_d|_dSrrrrrr rusz?DictTest.test_setitem_atomic_at_resize..Hashed.__init__cSs|jd7_dSrrrrrr r_sz?DictTest.test_setitem_atomic_at_resize..Hashed.__hash__cSs|jd7_t|t|kSr{rrYrrr r]sz=DictTest.test_setitem_atomic_at_resize..Hashed.__eq__Nrrrrr rsrrrr r r3)rjrrrrrrr test_setitem_atomic_at_resizes z&DictTest.test_setitem_atomic_at_resizecCsdD]}tdD]}d|}i}i}t|D]$}||t|<|dkr,||t|<q,|dkrb|}t|D]Z}|\}}} ||t||\} } } || t| ||dko| | kqj||||qqi} |t| jdS)N)r r r) r-rJr8popitemrintrSrrk)rcopymodeZlog2sizesizer>r?r$kavataZkbZvbtbrKrrr test_popitems*     zDictTest.test_popitemcsi}d\}}|||<|t|jd|||||t|d|t|j|||||||||<|||d||t|jGdddtGfdddt}|}d ||<d |_||j|dS) N)rdefZghirr c@s eZdZdS)zDictTest.test_pop..ExcNrrrrr r\r*r\cseZdZdZfddZdS)z"DictTest.test_pop..BadHashFcs|jrndSdSrdrerr[rr r_sz+DictTest.test_pop..BadHash.__hash__Nrgrr[rr rhsrhrbT) rrkpoprrVrrlrjrf)rrKr'r(rhrmrr[r test_pops"zDictTest.test_popcCsPi}d|d<|t&|D]}d||d<qWdn1sB0YdSr{r RuntimeErrorrrKr$rrr test_mutating_iterations  z DictTest.test_mutating_iterationcCsRi}d|d<|t(|D]}|d=d|d<qWdn1sD0YdSrrrrrr test_mutating_iteration_deletes  z'DictTest.test_mutating_iteration_deletecCsVi}d|d<|t,|D]}|d=d|d<q Wdn1sH0YdSr)rrrMrrrr *test_mutating_iteration_delete_over_valuess   z3DictTest.test_mutating_iteration_delete_over_valuescCsVi}d|d<|t,|D]}|d=d|d<q Wdn1sH0YdSrrrr1rrrr )test_mutating_iteration_delete_over_items s   z2DictTest.test_mutating_iteration_delete_over_itemscsPGfdddd}d}|di}||f_d||<|||didS)Ncs,eZdZdZddZddZfddZdS)z/DictTest.test_mutating_lookup..NastyKeyNcSs ||_dSr)r)rrrrr rusz8DictTest.test_mutating_lookup..NastyKey.__init__cSsdSr{rrrrr r_sz8DictTest.test_mutating_lookup..NastyKey.__hash__cs(jrj\}}d_||=|j|jkSr) mutate_dictr)rrZrrNastyKeyrr r] s  z6DictTest.test_mutating_lookup..NastyKey.__eq__)rrrrrur_r]rrrr rsrr r )rr)rZkey1Zkey2rKrrr test_mutating_lookups zDictTest.test_mutating_lookupcsi}|t|dd|d<|t|di}||d<|t|dGdddtGfdd d t}d|i}|t|dS) Nz{}r r z{1: 2}z {1: {...}}c@s eZdZdS)zDictTest.test_repr..ExcNrrrrr r\7r*r\cseZdZfddZdS)z#DictTest.test_repr..BadReprcs dSrrrr[rr __repr__:sz,DictTest.test_repr..BadRepr.__repr__N)rrrrrr[rr BadRepr9sr)rrJrlrjr)rrKrrr[r test_repr.s zDictTest.test_reprcCs4i}ttdD] }d|i}q|tt|dS)Nrrr )r-sysgetrecursionlimitrRecursionErrorrJrrrr test_repr_deep@s zDictTest.test_repr_deepcs|ii|ddiddiGdddtGfdddt}|di}ddi}|||kWdn1s~0YdS)Nr r c@s eZdZdS)zDictTest.test_eq..ExcNrrrrr r\Jr*r\cs eZdZfddZddZdS)z DictTest.test_eq..BadCmpcs dSrrrYr[rr r]Msz'DictTest.test_eq..BadCmp.__eq__cSsdSr{rrrrr r_Osz)DictTest.test_eq..BadCmp.__hash__Nr`rr[rr BadCmpLs r)rrlrjr)rrd1rrr[r test_eqFs   zDictTest.test_eqcCs |dd|dddS)NcSs|Sr)rHrmrrr Yr*z.DictTest.test_keys_contained..cSs|Srr1rrrr rZr*)helper_keys_containedrrrr test_keys_containedXszDictTest.test_keys_containedcCs|t}|t}|ddd}|dddd}|dddd}|dddd}|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||kdS)Nr r rPr3r4)rXr r3)r rBrS)rfnemptyZempty2ZsmallerZlargerZlarger2Zlarger3rrr r\s<  zDictTest.helper_keys_containedcCsGddd}d|i}d|i}|t ||kWdn1sR0Y|t ||kWdn1s0Y|t ||kWdn1s0Y|t ||kWdn1s0Y||d}|t ||kWdn1sL0Y|t ||kWdn1s0YdS)Nc@seZdZddZdS)z9DictTest.test_errors_in_view_containment_check..CcSstdSrrrYrrr r]sz@DictTest.test_errors_in_view_containment_check..C.__eq__Nrrrr]rrrr Csrr rPr)rrrrZd3rrr %test_errors_in_view_containment_checks    . . . 0 0 z.DictTest.test_errors_in_view_containment_checkcCsddd}dddd}ddi}|||t|||ddh|||dh|||dh|||@ddh|||@t|||Bhd|||Adh|||AhddS) Nr r rPr3r4rX>r r r3>r r rX)rHrrGrk1k2Zk3rrr $test_dictview_set_operations_on_keyss z-DictTest.test_dictview_set_operations_on_keyscCsddd}dddd}ddi}|||t|||ddh|||d h|||d h|||@ddh|||@t|||Bhd |||Ad h|||Ahd dS) Nr r rPr3r4rXr5r6r7rXrX>r5r7r6>rr5r6)r1rrGrrrr %test_dictview_set_operations_on_itemss z.DictTest.test_dictview_set_operations_on_itemscCs|ddidhk|dhddik|ddidhBddh|dhddiBddh|ddidhk|dhddik|ddidhBddh|dhddiBddhdS)Nr r r5)rBrHrr1rrrr "test_dictview_mixed_set_operationssz+DictTest.test_dictview_mixed_set_operationsc Cs|ttd|tidGdddt}|ddd}||dd||dd|d||d|||dd Gd d d t}|}|t}|d Wdn1s0Y||jj d Gd ddt}|}|t }|d Wdn1s"0Y||jj d Gdddt}|} |t }| d Wdn1s|0Y||jj d dS)N __missing__c@seZdZddZdS)z DictTest.test_missing..DcSsdSrdrrrrr rsz,DictTest.test_missing..D.__missing__Nrrrrrrrr Dsrr rX)r r3r r3rbc@seZdZddZdS)z DictTest.test_missing..EcSs t|dSrrrrrr rsz,DictTest.test_missing..E.__missing__Nrrrrr Esr)rbc@seZdZddZdS)z DictTest.test_missing..FcSsdd|_dS)NcSsdSrr)rrrr rr*z;DictTest.test_missing..F.__init__..)rrrrr rusz)DictTest.test_missing..F.__init__Nrrrrr Fsrc@s eZdZdS)z DictTest.test_missing..GNrrrrr Gsr) rShasattrr rrRrHrr exceptionargsrk) rrrKrer@rfrrrrr test_missings0  & ( (zDictTest.test_missingcCsJi}|t}|dWdn1s,0Y||jjddS)Nr )r)rrkrr r )rrKr@rrr test_tuple_keyerrors &zDictTest.test_tuple_keyerrorc s~GdddtGfddd}i}|}|}d||<dD]:}|t|tWdq>1sn0Yq>dS)Nc@s eZdZdS)z.DictTest.test_bad_key..CustomExceptionNrrrrr CustomExceptionsrcs eZdZddZfddZdS)z)DictTest.test_bad_key..BadDictKeycSs t|jSr)hash __class__rrrr r_sz2DictTest.test_bad_key..BadDictKey.__hash__cst||jr|Sr) isinstancerrYrrr r]s z0DictTest.test_bad_key..BadDictKey.__eq__Nrrrr_r]rrrr BadDictKeysrr )z d[x2] = 2z z = d[x2]zx2 in dz d.get(x2)zd.setdefault(x2, 42)z d.pop(x2)zd.update({x2: 2}))rlrexeclocals)rrrKZx1Zx2Zstmtrrr test_bad_keys  zDictTest.test_bad_keycCsJi}tdD] }|||<q tdD] }||=q"tddD] }|||<q8dS)Nr )r-rrrr test_resize1s   zDictTest.test_resize1cs`Gfdddt}idd|<d|<d|<d|<d|<d d d <dS) Ncs"eZdZddZfddZdS)z DictTest.test_resize2..XcSsdS)Nrrrrrr r_+sz)DictTest.test_resize2..X.__hash__csr dSNFrprYrKZresizingrr r]-sz'DictTest.test_resize2..X.__eq__Nrrrrr X*srFr r r3rXrTrr)rjrrrrr test_resize2&s     zDictTest.test_resize2c CsL|t*dddddddddd}Wdn1s:0Yi}dS)Nr r)r>r?r@rKr r rh)rZeroDivisionErrorrNrrr $test_empty_presized_dict_in_freelist<s  $z-DictTest.test_empty_presized_dict_in_freelistcCsxGdddt}tjtjtjf}|D]N}|}t|}|di}|||_t|j|_ ~~t | |ddq$dS)Nc@s eZdZdS)z+DictTest.test_container_iterator..CNrrrrr rGsrr zCycle was not collected) rjr r1rMrHweakrefrefr(iterrmrcollectr9)rrZviewsr(objr& containerrrr test_container_iteratorDs   z DictTest.test_container_iteratorcCs&tt|t||dSr)rr(rSrrtrrr _not_trackedTszDictTest._not_trackedcCs8|t||tt|t||dSr)rBrrr(r,rrr _trackedZszDictTest._trackedcCsdddgf\}}}}|i||d|||di|ddd|dtd|dti|dgi|dgfi|dii|dtidS) N?r>)r Nrr r )r r?)r )NTFr)r.rrjr/rG)rrmrrwrrr test_track_literals`s zDictTest.test_track_literalsc CsVGdddt}dddtfg|f\}}}}}t}||d|d<||d||<||d||<||||||d<||||d|d<||||t}t}||d<||||||d<||t|||g}||t}||||t||||g}||t}||||t|||d }||t||||d }||t}|j|||d |||j|d ||t||f|dfg}||t||f||fg}||t}|||f|dfg|||||f||fg||dS) Nc@s eZdZdS)z-DictTest.test_track_dynamic..MyObjectNrrrrr MyObjectusr3r0r>r r r3rXrmrr)rmrrr1)r1)rjr r.r8r/rr) rr3rmrrr1orKddrrr test_track_dynamicrsh                        zDictTest.test_track_dynamiccCs Gdddt}||dS)Nc@s eZdZdS)z,DictTest.test_track_subtypes..MyDictNrrrrr MyDictsr8)r r/)rr8rrr test_track_subtypesszDictTest.test_track_subtypescCsFGddd}g}t|D]&}|}d\|_|_|_||jq|S)Nc@s eZdZdS)z(DictTest.make_shared_key_dict..CNrrrrr rsrr4)r-rmrrr__dict__)rr0rZdictsr$r>rrr make_shared_key_dicts zDictTest.make_shared_key_dictcCs~|d\}}d|d<t|}d|d<|ddt|}d|d<||||t|gd|t|gddS)zMsplit table must be combined when setdefault() breaks insertion orderr r r>r?)rmrrr>r?)rmrrr?r>N)r;r getsizeofr assertGreaterrlist)rr>r?Zsize_aZsize_brrr test_splittable_setdefaults    z#DictTest.test_splittable_setdefaultcCs|d\}}t|}|d=|t|d=Wdn1sD0Y|t|||t|ddg|t|gdd|d<|t|gd|t|gddS) z*split table must be combined when del d[k]r rNrmrr4rbrmrr)r;rr<rrkr=rr>rr>r? orig_sizerrr test_splittable_dels  $zDictTest.test_splittable_delcCs|d\}}t|}|d|t|dWdn1sL0Y|t|||t|ddg|t|gdd|d<|t|gd|t|gddS) z*split table must be combined when d.pop(k)r rNrmrr4rbr@) r;rr<rrrkr=rr>rArrr test_splittable_pops   (zDictTest.test_splittable_popcCsN|d\}}d|d<|t|dWdn1s@0YdS)z3pop a pending key in a split table should not crashr rXr>N)r;rrkr)rr>r?rrr test_splittable_pop_pendings z$DictTest.test_splittable_pop_pendingcCs|d\}}t|}|}||d|t|d=Wdn1sR0Y|t|||t|ddg|t|gddS)z-split table must be combined when d.popitem()r )rr3rNrmrr4) r;rr<rrrrkr=r>)rr>r?rBitemrrr test_splittable_popitems   $z DictTest.test_splittable_popitemcCsddl}Gddd}|}d|_|||j|jd|||jd|_|||j|}d|_|||j|j|||jd|_|||jdS) z;setattr() must not convert combined table into split table.rNc@s eZdZdS)z5DictTest.test_splittable_setattr_after_pop..CNrrrrr rsrr r>r r3) _testcapir>rBZdict_hassplittabler:rrSr)rrHrr>rrr !test_splittable_setattr_after_pops   z*DictTest.test_splittable_setattr_after_popc CsttjdD]}dddd}t|}t||}t|}|t|t|t|}z t|}Wnt y|YqYn0t||}t|}||=|t|t|qdSNr r>r?r@r4) r-pickleHIGHEST_PROTOCOLr'dumpsloadsrr>nextrrprotodataitrKdroprrr test_iterator_pickling5s         zDictTest.test_iterator_picklingcCsttjdD]}dddd}t|}t||}t|}||tj j | t ||t|}t |}t||}t|}||d=| t ||qdSNr r>r?r@r4r)r-rKrLr'r1rMrNrrrIteratorrr rOrrQrRZitorgrKrSrTrrr test_itemiterator_picklingGs        z#DictTest.test_itemiterator_picklingcCsttjdD]}dddd}t|}t||}t|}|t|t|t|}t |}t||}t|}t||g}|t |t t|qdSrJ) r-rKrLr'rMrMrNrr>rOsortedrrQrRrSrKrTrMrrr test_valuesiterator_pickling]s       z%DictTest.test_valuesiterator_picklingc CsttjdD]}dddd}t|}t||}t|}|t|tt|t|}z t|}Wnt yYqYn0t||}t|}||=|t|tt|qdSrJ) r-rKrLreversedrMrNrr>rOrrPrrr test_reverseiterator_picklingms         z&DictTest.test_reverseiterator_picklingcCsttjdD]}dddd}t|}t||}t|}||tj j | t ||t|}t |}t||}t|}||d=| t ||qdSrV)r-rKrLr]r1rMrNrrrrWrr rOrXrrr !test_reverseitemiterator_picklings        z*DictTest.test_reverseitemiterator_picklingcCsttjdD]}dddd}t|}t||}t|}|t|tt|t|}t |}t||}t|}t||g}|t |t |qdSrJ) r-rKrLr]rMrMrNrr>rOrZr[rrr #test_reversevaluesiterator_picklings       z,DictTest.test_reversevaluesiterator_picklingcCsZGddd}|d}Gdddt}||jt||d||j|j|ddS)Nc@seZdZddZdS)z=DictTest.test_instance_dict_getattr_str_subclass..FoocSs ||_dSr)msg)rrarrr ruszFDictTest.test_instance_dict_getattr_str_subclass..Foo.__init__Nrrrrr FoosrbZ123c@s eZdZdS)z>DictTest.test_instance_dict_getattr_str_subclass.._strNrrrrr _strsrcra)strrragetattrr:)rrbr rcrrr 'test_instance_dict_getattr_str_subclasss z0DictTest.test_instance_dict_getattr_str_subclasscCs<Gddd}|}d|jd<d|_||jddddS)Nc@s eZdZdS)zFDictTest.test_object_set_item_single_instance_non_str_key..FooNrrrrr rbr*rbr r>)r r>)r:r>r)rrbr rrr 0test_object_set_item_single_instance_non_str_keys  z9DictTest.test_object_set_item_single_instance_non_str_keycs@GfdddfdddDtD] }||<q.dS)NcseZdZfddZdS)z4DictTest.check_reentrant_insertion..Mutatingcs dSrrrrKmutaterr __del__sz.Mutating.__del__Nrrrrjrrhrr Mutatingsrlcsi|] }|qSrrr)rlrr rr*z6DictTest.check_reentrant_insertion..Zabcdefghijklmnopqr)r>)rrir'r)rlrKrir check_reentrant_insertions z"DictTest.check_reentrant_insertioncs>dd}|fdd}|dd}|dS)NcSs d|d<dS)Nrr?rrtrrr risz1DictTest.test_reentrant_insertion..mutatecs|j|dSr)rr:rprtrrr ris cSs|r|qdSr)rrtrrr ris)rm)rrirrr test_reentrant_insertions    z!DictTest.test_reentrant_insertioncsZGfddd}ddtddD}t|d|<|dddi}|t|jdS)Ncs eZdZddZfddZdS)z)DictTest.test_merge_and_mutate..XcSsdSrrrrrr r_sz2DictTest.test_merge_and_mutate..X.__hash__cs dSrr)rr5rZrr r]sz0DictTest.test_merge_and_mutate..X.__eq__Nrrrorr rsrcSsg|] }|dfqS)rrr"rrr r%r*z2DictTest.test_merge_and_mutate..r i9r)r-r rrr)rrlrKrror test_merge_and_mutates  zDictTest.test_merge_and_mutatecCsHt|ttt|ddtt|ddtt|ddtdS)NcSs t|Sr)r'rHrtrrr rr*z4DictTest.test_free_after_iterating..cSs t|Sr)r'rMrtrrr rr*cSs t|Sr)r'r1rtrrr rr*)rZcheck_free_after_iteratingr'r rrrr test_free_after_iteratingsz"DictTest.test_free_after_iteratingcspGfddd}|di||i|kGfddd}d|i}dti||kdS)Ncs,eZdZfddZfddZddZdS)z9DictTest.test_equal_operator_modifying_operand..Xcs dSrrr)dict_brr rjszADictTest.test_equal_operator_modifying_operand..X.__del__cs dSNTrrY)dict_arr r]sz@DictTest.test_equal_operator_modifying_operand..X.__eq__cSsdSN rrrrr r_szBDictTest.test_equal_operator_modifying_operand..X.__hash__N)rrrrjr]r_r)rursrr rs  rrcseZdZfddZdS)z9DictTest.test_equal_operator_modifying_operand..Ycs dSrtrrYdict_drr r]sz@DictTest.test_equal_operator_modifying_operand..Y.__eq__Nrrrxrr Ysrz)rBrG)rrrzZdict_cr)rursryr %test_equal_operator_modifying_operands    z.DictTest.test_equal_operator_modifying_operandcsRGfdddt}i|dd|ddiztWntyLYn0dS)Ncs eZdZddZfddZdS)zADictTest.test_fromkeys_operator_modifying_dict_operand..XcSsdSrvrrrrr r_szJDictTest.test_fromkeys_operator_modifying_dict_operand..X.__hash__cstdkrdSNr FrVrprYrtrr r]s zHDictTest.test_fromkeys_operator_modifying_dict_operand..X.__eq__Nrrrtrr rsrr r rr rrr rrtr -test_fromkeys_operator_modifying_dict_operands  z6DictTest.test_fromkeys_operator_modifying_dict_operandcsNGfdddt}i|d|dhztWntyHYn0dS)Ncs eZdZddZfddZdS)z@DictTest.test_fromkeys_operator_modifying_set_operand..XcSsdSrvrrrrr r_szIDictTest.test_fromkeys_operator_modifying_set_operand..X.__hash__cstdkrdSr|r}rYrtrr r]s zGDictTest.test_fromkeys_operator_modifying_set_operand..X.__eq__Nrrrtrr rsrr r r~r rrtr ,test_fromkeys_operator_modifying_set_operands  z5DictTest.test_fromkeys_operator_modifying_set_operandcs2Gfddd}dtid|fvdS)NcseZdZfddZdS)z:DictTest.test_dictitems_contains_use_after_free..Xcs tSrrpr;rYrtrr r](szADictTest.test_dictitems_contains_use_after_free..X.__eq__Nrrrtrr r'srr)rGr1r rrtr &test_dictitems_contains_use_after_free&s z/DictTest.test_dictitems_contains_use_after_freecs0Gfdddt}|di|dvdS)Ncs eZdZfddZddZdS)z4DictTest.test_dict_contain_use_after_free..Scs tSrrrYrtrr r]2sz;DictTest.test_dict_contain_use_after_free..S.__eq__cSstdS)Ntest)rrrrr r_6sz=DictTest.test_dict_contain_use_after_free..S.__hash__Nr`rrtrr S1s rrr)rdrS)rrrrtr test_dict_contain_use_after_free/s z)DictTest.test_dict_contain_use_after_freecs*Gfddd}|dgtgdS)NcseZdZfddZdS)z,DictTest.test_init_use_after_free..Xcsgdd<dSrvrrZpairrr r_>s z5DictTest.test_init_use_after_free..X.__hash__N)rrrr_rrrr r=sr{)r r rrr test_init_use_after_free<s z!DictTest.test_init_use_after_freecsFGfdddtfddtdDfdd}|t|dS)NcseZdZfddZdS)z;DictTest.test_oob_indexing_dictiter_iternextitem..Xcs dSrrrrtrr rjGszCDictTest.test_oob_indexing_dictiter_iternextitem..X.__del__Nrkrrtrr rFsrcsi|]}||qSrrr")rrr rJr*zDDictTest.test_oob_indexing_dictiter_iternextitem..rcs&D]}|ddkrdd<qdS)Nrr r)resultrtrr iter_and_mutateLs  zIDictTest.test_oob_indexing_dictiter_iternextitem..iter_and_mutate)rr-rr)rrr)rrKr 'test_oob_indexing_dictiter_iternextitemEs z0DictTest.test_oob_indexing_dictiter_iternextitemcCsDdddddd}|d=t|}|t|td|tt|dS) Nr r rr3rX)r>r?foor@rKrZdcba)r]rr>rrrO)rrKrrrr test_reversedSs zDictTest.test_reversedcCs|ttig|ttig|ttig|ttig|tttg|tttg|tttg|tttgdSr)rr>r]r1rMrHr rrrr $test_reverse_iterator_for_empty_dictZsz-DictTest.test_reverse_iterator_for_empty_dictcCsnGddd}|tt|ddjddg|tt|ddjdg|tt|ddjdgdS)Nc@seZdZddZdS)zADictTest.test_reverse_iterator_for_shared_shared_dicts..AcSs|r ||_|r||_dSr)rmr)rrmrrrr ruks zJDictTest.test_reverse_iterator_for_shared_shared_dicts..A.__init__Nrrrrr rjsrr r rrmr)rr>r]r:)rrrrr -test_reverse_iterator_for_shared_shared_dictsis z6DictTest.test_reverse_iterator_for_shared_shared_dictscCstddg}|dt|}t|}|t||Gdddt}gd}||}||tt|Gdddt}||}||ddd tt|dS) Nr>r r?r r>c@s eZdZdS)z1DictTest.test_dict_copy_order..CustomDictNrrrrr CustomDict}sr)rr)r@r3c@s eZdZddZeZddZdS)z9DictTest.test_dict_copy_order..CustomReversedDictcSsttt|Sr)r]r>r rHrrrr rHsz>DictTest.test_dict_copy_order..CustomReversedDict.keyscSstt|Sr)r]r r1rrrr r1sz?DictTest.test_dict_copy_order..CustomReversedDict.itemsN)rrrrHr~r1rrrr CustomReversedDictsrr)r OrderedDict move_to_endr>r1r r)rZodZexpectedr8rpairsrKrrrr test_dict_copy_orderss   zDictTest.test_dict_copy_ordercCs0tdgi}t|tt|dSr)r'r1rr(rBrrOrrSrrr test_dict_items_result_gcsz"DictTest.test_dict_items_result_gccCs0tdgi}t|tt|dSr)r]r1rr(rBrrOrrrr rsN)Vrrrrrr2rArDrLrOrQrUrWrnrqrrrrrrrrrrrrrrrrrrrrrrrrrrr rrrr!r$r+r.r/r cpython_onlyr2r7r9r;r?rCrDrErGrIrUrYr\r^r_r`rfrgrmrnrqrrr{rrrrrrrrrrrrrrr r s      &L:    !   , +  ?               rc@seZdZejddZdS)CAPITestcsddlm}dddd}|||dtdd|||dtdd|||d td d|t|gdtd|t|idtdGd d d tGfd d d }||}}|di}||||t|d||||t|dS)Nr)dict_getitem_knownhashr r r3r4rmrrc@s eZdZdS)z,CAPITest.test_getitem_knownhash..ExcNrrrrr r\r*r\cs eZdZfddZddZdS)z.CAPITest.test_getitem_knownhash..BadEqcsdSrrrYr[rr r]sz5CAPITest.test_getitem_knownhash..BadEq.__eq__cSsdS)Nrrrrr r_sz7CAPITest.test_getitem_knownhash..BadEq.__hash__Nr`rr[rr ras ra)rHrrrr SystemErrorrkrl)rrrKrarrrr[r test_getitem_knownhashs  zCAPITest.test_getitem_knownhashN)rrrrrrrrrr rsr) mapping_testsc@seZdZeZdS)GeneralMappingTestsN)rrrr type2testrrrr rsrc@s eZdZdS)DictNrrrrr rsrc@seZdZeZdS)SubclassMappingTestsN)rrrrrrrrr rsr__main__)rcollections.abcrrKrr rZunittestr%rrZTestCaserrrZBasicTestMappingProtocolrr rrrmainrrrr s8 #