a 5dg<@sddlZddlmZddlZddlmZddlmZm Z ddl Z ddl Z GdddZ GdddZ Gd d d ejZed kredS) N)WeakSet) UserString)Set MutableSetc@s eZdZdS)FooN)__name__ __module__ __qualname__r r -/usr/local/lib/python3.9/test/test_weakset.pyr src@seZdZddZdS)RefCyclecCs ||_dSN)cycleselfr r r __init__szRefCycle.__init__N)rrr rr r r r r sr c@s|eZdZddZddZddZddZd 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]S)^ TestWeakSetcCsdddD|_dddD|_dddD|_ddd D|_d dd D|_t|j|_t|j|_t|j|_d dt j D|_ t|j|_ t |j|_td |_t|jg|_dS)NcSsg|] }t|qSr ustr.0cr r r z%TestWeakSet.setUp..abrcSsg|] }t|qSr rrr r r rr)xyzcSsg|] }t|qSr rrr r r rrabcSsg|] }t|qSr rrr r r rrZabcdecSsg|] }t|qSr rrr r r rrdefcSsg|] }t|qSr rrr r r rrF)itemsitems2Zab_itemsZ abcde_itemsZ def_itemsr ab_weakset abcde_weakset def_weaksetstring ascii_lettersletterssdictfromkeysdrobjfsrr r r setUps     zTestWeakSet.setUpcCs@tt}ttD]*}|dks|dr(q|||d|qdS)NZ test_c_api_zWeakSet missing method )dirrset startswithassertIn)rZweaksetmethodsmethodr r r test_methods$s zTestWeakSet.test_methodscCs|ttgddS)N) assertRaises TypeErrorrrr r r test_new_or_init,szTestWeakSet.test_new_or_initcCsD|t|jt|j|t|jd|`|t|jddS)Nr) assertEquallenr+r.r0r/rr r r test_len/szTestWeakSet.test_lencCs\|jD]}|||jv||jvq|d|j||j|j|`|td|jdS)Nr=r") r*r>r+r. assertNotInr6r/r0rrrr r r test_contains5s  zTestWeakSet.test_containscCs|j|j}|jD]$}|||v||jvp4||jvq||jt|j|t|t| t |jjggt t t jttfD]4}t|j|j}||j}||j||~q|t|t|jt|j|jt|t|t|jt|jdSr )r+unionr$r*r>r.rr#typer:r;r4 frozensetr,r-listtupler?popgccollect)rurCrr r r test_union>s "   zTestWeakSet.test_unioncCsB|j|j}||jt|jB|||jt|jB|dSr )r+rDr$r>r4rFrir r r test_orOszTestWeakSet.test_orcCst|j}||j}|jD]$}|||v||jvo<||jvq||t|j|t|ttttj t t fD]$}tg}||||j |qt|t |t |j|jt|t |t |jdSr )rr* intersectionr$r>rEr4rFr,r-rGrHr#r?rIrJrK)rr+rPrrMrr r r test_intersectionTs   " zTestWeakSet.test_intersectioncCs6||jt|j||jt|j dSr ) assertTruer+ isdisjointrr$r*rr r r test_isdisjointcszTestWeakSet.test_isdisjointcCsB|j|j}||jt|j@|||jt|j@|dSr )r+rRr$r>r4rFrOr r r test_andgszTestWeakSet.test_andcCsv|j|j}|jD]$}|||v||jvo4||jvq||jt|j|t|t| t |jjggdSr ) r+ differencer$r*r>r.rr#rEr:r;rrPrr r r test_differencels  "zTestWeakSet.test_differencecCsB|j|j}||jt|j|||jt|j|dSr )r+rXr$r>r4rFrOr r r test_subtszTestWeakSet.test_subcCs|j|j}|jD]$}|||v||jv||jvAq||jt|j|t|t| t |jjgg|t |t |jt |j|j t |t |t |jt |jdSr )r+symmetric_differencer$r*r>r.rr#rEr:r;r?rIrJrKrYr r r test_symmetric_differenceys "  z%TestWeakSet.test_symmetric_differencecCsB|j|j}||jt|jA|||jt|jA|dSr )r+r\r$r>r4rFrOr r r test_xorszTestWeakSet.test_xorcCs||j|jk||j|jk||j|jk||j|jk||j|jk|tdd|tdd|tdd|tdddS)NrabcZcbs)rTr%r& assertFalser'r4issubset issupersetrr r r test_sub_and_superszTestWeakSet.test_sub_and_supercCsL||j|jk||j|jk||j|jk|ttkdSr )rTr%r&r`r'rrr r r test_ltszTestWeakSet.test_ltcCsL||j|jk||j|jk||j|jk|ttkdSr )rTr&r%r`r'rrr r r test_gtszTestWeakSet.test_gtcCs<tddtdD}|D]}||_||_t|g|_qdS)Ncss|] }tVqdSr )rrrPr r r rz&TestWeakSet.test_gc..i)rrangersubr4)rr+elemr r r test_gcs zTestWeakSet.test_gccCsTGdddt}|}t}|||||||||||dS)Nc@seZdZddZdS)z5TestWeakSet.test_subclass_with_custom_hash..HcSstt|d@S)Ni)intidrr r r __hash__sz>TestWeakSet.test_subclass_with_custom_hash..H.__hash__N)rrr rnr r r r Hsro)rr4addr6removediscard)rror+fr r r test_subclass_with_custom_hashs    z*TestWeakSet.test_subclass_with_custom_hashcCsdt}||j|||j||j||t|j|t|j|d|t|jddS)Nr9r=)rrr#r>r+r$r:r;)rr+r r r test_inits  zTestWeakSet.test_initcCs*t|j}t|}|t|t|dSr )rr#assertNotEqualrm)rr+tr r r test_constructor_identitys z%TestWeakSet.test_constructor_identitycCs|tt|jdSr )r:r;hashr+rr r r test_hashszTestWeakSet.test_hashcCs2|j||jtg|t|jddS)Nr)r+clearr>rr?rr r r test_clears zTestWeakSet.test_clearcCs2|j}||j||t|jt|dSr )r+copyr>rvrm)rdupr r r test_copys zTestWeakSet.test_copycCstd}|j||||j|j}|j|||j||t|jjg|jt | t |jdk|j|j | t |jdkdS)NQr=) rr+rpr6r}r>r:r;r0rrTr?r/)rrr~r r r test_adds   zTestWeakSet.test_addcCsJtd}|j||||j|t|jj||t|jjgdS)Nr)rr+rqrAr:KeyErrorr;)rrr r r test_removes  zTestWeakSet.test_removecCsNtdtd}}|j||||j|j||t|jjgdS)Nrr)rr+rrrAr:r;)rrqr r r test_discards   zTestWeakSet.test_discardcCs@tt|jD]}|j}|||jq|t|jjdSr )rhr?r+rIrAr:r)rrPrjr r r test_pops zTestWeakSet.test_popcCsR|j|j}||d|j|jD]}|||jq&|t|jjggdSr )r+updater$r>r#r6r:r;rZretvalrr r r test_updates  zTestWeakSet.test_updatecCs6|jt|j|j|jD]}|||jqdSr )r+rr4r$r#r6rBr r r test_update_setszTestWeakSet.test_update_setcCs8|jt|jO_|j|jD]}|||jq dSr )r+r4r$r#r6rBr r r test_iorszTestWeakSet.test_iorcCsv|j|j}||d|j|jD]6}||jvrN||jvrN|||jq&|||jq&|t|jjggdSr ) r+intersection_updater$r>r#r6rAr:r;rr r r test_intersection_updates z$TestWeakSet.test_intersection_updatecCs\|jt|jM_|j|jD]6}||jvrH||jvrH|||jq |||jq dSr r+r4r$r#r6rArBr r r test_iand s zTestWeakSet.test_iandcCs|j|j}||d|j|jD]6}||jvrN||jvrN|||jq&|||jq&|t|jjgg|t|jj ggdSr ) r+difference_updater$r>r#r6rAr:r;symmetric_difference_updaterr r r test_difference_updates z"TestWeakSet.test_difference_updatecCs\|jt|j8_|j|jD]6}||jvrH||jvrH|||jq |||jq dSr rrBr r r test_isub s zTestWeakSet.test_isubcCsv|j|j}||d|j|jD]6}||jv||jvArN|||jq&|||jq&|t|jjggdSr ) r+rr$r>r#r6rAr:r;rr r r test_symmetric_difference_update(s z,TestWeakSet.test_symmetric_difference_updatecCs\|jt|jN_|j|jD]6}||jv||jvArH|||jq |||jq dSr rrBr r r test_ixor2s zTestWeakSet.test_ixorcCsp|j}||O}|||j||M}|||j||8}||t|j}||N}||tdSr )r+r}r>r)rrwr r r test_inplace_on_self:s  z TestWeakSet.test_inplace_on_selfcCs||j|jk||jt|jk||jt|jk||jt|jk||jt|jk||jttgk||jdkdS)Nr=) rTr+rr#r`r4rGrHrrr r r test_eqFszTestWeakSet.test_eqcCs4||jt|jkt}t}|||kdSr )rTr+r4r#rr`)rs1s2r r r test_nePszTestWeakSet.test_necCsrdddD}t|}t|}t||d=t|tt|t|t|dg~|t|t|dS)NcSsg|] }t|qSr rrr r r rYrzATestWeakSet.test_weak_destroy_while_iterating..rr=) riternextrJrKr6r?rGr>)rr#r+itr r r !test_weak_destroy_while_iteratingVs$z-TestWeakSet.test_weak_destroy_while_iteratingcsnddtjDttjfdd}|}||Wdn1sT0Y| }|tj|Wdn1s0Y|||} |Wdn1s0Y| | }|} |Wdn1s 0Y| tt||}Wdn1sP0Y| tddS)NcSsg|] }t|qSr rrr r r rhrzLTestWeakSet.test_weak_destroy_and_mutate_while_iterating..c3sZzNt}ttt|}tt}||kr:t|t|VWd}nd}0dSr )rrstrrrIrJrK)ryieldedrLr#r+r r testcontextjszMTestWeakSet.test_weak_destroy_and_mutate_while_iterating..testcontextr)r(r)r contextlibcontextmanagerrAr:rrqrpr6r}rr>r?r{)rrrLrwr rr ,test_weak_destroy_and_mutate_while_iteratingfs&*. ( *(z8TestWeakSet.test_weak_destroy_and_mutate_while_iteratingcCsd}ddt|D}t|}~t|}z t|WntyFYn0tt|}~tt|}||d| |ddS)NcSsg|] }tqSr r rfr r r rrz/TestWeakSet.test_len_cycles..)rr=r) rhrrr StopIterationrJrKr?r6r>)rNr#r+rn1n2r r r test_len_cycless    zTestWeakSet.test_len_cyclesc Cs|jtjgtRtddD]}d}tdt|||ddt|D}t|}~t|}z t|Wnt yYn0t |}~t |}| |d| ||| |d| ||q"dS)Nr=drrcSsg|] }tqSr rrfr r r rrz-TestWeakSet.test_len_race..) Z addCleanuprJZ set_thresholdZ get_thresholdrhrKrrrrr?ZassertGreaterEqualZassertLessEqual)rthrr#r+rrrr r r test_len_races(      zTestWeakSet.test_len_racecCst|jt|jjksJdSr )reprr+datarr r r test_reprszTestWeakSet.test_reprcCs ||jt||jtdSr )ZassertIsInstancer+rrrr r r test_abcszTestWeakSet.test_abcN)1rrr r1r8r<r@rCrNrQrSrVrWrZr[r]r^rcrdrerkrtrurxrzr|rrrrrrrrrrrrrrrrrrrrrrrr r r r rs\           %r__main__)Zunittestweakrefrr( collectionsrrcollections.abcrrrJrrr ZTestCaserrmainr r r r s  /