a 5dg@sddlZddlmZddlZddlZddlZddlZddlZddlm Z m Z ddl Z ddl Z ddl Z ddlZGdddeZddZGdd d ZGd d d ZGd d d eZGdddZGdddeejZGdddeZGdddeZGdddeZGdddeZGdddeejZGdddeZ GdddeZ!eZ"Gd d!d!Z#Gd"d#d#e#ejZ$Gd$d%d%e#ejZ%Gd&d'd'e#ejZ&Gd(d)d)e#ejZ'Gd*d+d+e#ejZ(Gd,d-d-e#ejZ)Gd.d/d/e#ejZ*d0d1Z+d2d3Z,Gd4d5d5ejZ-Gd6d7d7ejZ.Gd8d9d9ejZ/Gd:d;d;ejZ0Gdd?d?Z2Gd@dAdAe2ejZ3GdBdCdCe2ejZ4GdDdEdEe2ejZ5GdFdGdGe2ejZ6GdHdIdIe2ejZ7GdJdKdKZ8GdLdMdMe8ejZ9GdNdOdOe8ejZ:GdPdQdQe8ejZ;GdRdSdSe8ejZGdXdYdYZ?GdZd[d[e?ejZ@Gd\d]d]e?ejZAGd^d_d_e?ejZBGd`dadae?ejZCGdbdcdce?ejZDGdddedeejZEdfdgZFGdhdidiZGGdjdkdkZHGdldmdmZIGdndodoZJGdpdqdqZKGdrdsdsZLGdtduduZMddvlmNZNdwdxZOGdydzdzejZPGd{d|d|ZQGd}d~d~ZRGdddejZSddZTddZUddZVddZWGdddejZXeYdkreZdS)N)support) randrangeshufflec@s eZdZdS)PassThruN__name__ __module__ __qualname__r r )/usr/local/lib/python3.9/test/test_set.pyrsrccstdVdSN)rr r r r check_pass_thrusrc@seZdZddZddZdS)BadCmpcCsdSr r selfr r r __hash__szBadCmp.__hash__cCstdSN) RuntimeErrorrotherr r r __eq__sz BadCmp.__eq__Nrrr rrr r r r rsrc@seZdZdZddZdS) ReprWrapperz*Used to test self-referential repr() callscCs t|jSr)reprvaluerr r r __repr__szReprWrapper.__repr__N)rrr __doc__rr r r r rsrc@s eZdZdZddZddZdS)HashCountingIntzBint-like object that counts the number of times __hash__ is calledcGs d|_dSNr hash_count)rargsr r r __init__"szHashCountingInt.__init__cCs|jd7_t|Sr )r!intrrr r r r$szHashCountingInt.__hash__N)rrr rr#rr r r r r src@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/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9S): TestJointOpscCs2d|_}d|_d|_|||_t||_dS)NZ simsalabimZ madagascarZ4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)word otherwordlettersthetypesdictfromkeysd)rr&r r r setUp+s   zTestJointOps.setUpcCs*|t|jgd|jttjdddS)Nr a) assertRaises TypeErrorr)setr#rr r r test_new_or_init2szTestJointOps.test_new_or_initcCsHt|j}t|j}||||t|jt|t|jggdSr) sortedr*r- assertEqualr2rr)rr3)ractualexpectedr r r test_uniquification6s    z TestJointOps.test_uniquificationcCs|t|jt|jdSr)r7lenr*r-rr r r test_len=szTestJointOps.test_lencCsb|jD]}|||jv||jvq|t|jjgg|t|jg}| ||j|dSr) r(r7r*r-r2r3 __contains__r) frozensetassertIn)rcr*r r r test_contains@s  zTestJointOps.test_containscCs|j|j}|jD]$}|||v||jvp4||jvq||j||j|t||j | t |jjt | t |jjggtttjtttfD]}||d|dtd||d|dtd||d|dtd||d|dtd ||d|d|d tdq|}||td g|td g|d d gdS) NabcbacdcabcdefgfeabcefgccbabcefabcefZfgr r/)r*unionr'r(r7r-r)r&typebasetyper2rrr3r4r>r+r,strlisttuple)rur@Cxr r r test_unionGs "    (zTestJointOps.test_unioncCsp|j|j}||jt|jB|||jt|jB|z|j|jBWnty`Yn 0|ddS)Nz(s|t did not screen-out general iterables)r*rKr'r7r4r>r3failrir r r test_orZs zTestJointOps.test_orcCs|j|j}|jD]$}|||v||jvo4||jvq||j||j|t||j | t |jjt t ttjtttfD]}||d|dt d||d|dt d||d|dt d||d|dt d||d|d |d t d q|d}|}|jtkrj|t|t|n|t|t|dS) NrBrCccrErGbcrIZcbcfZbagb)r* intersectionr'r(r7r-r)r&rLrMr2rrr4r>r+r,rNrOrPidassertNotEqual)rrWr@rRr*zr r r test_intersectiones" "    ( zTestJointOps.test_intersectionc Csdd}dD]n}||}dD]Z}tttjtttfD]B}||}||}|||}| ||| |dupr|duq4qq dS)NcSst|| S)z&Pure python equivalent of isdisjoint())r4r])s1s2r r r fzsz'TestJointOps.test_isdisjoint..f) rZr1abrHZababacrCrYrErGrITF) r)r4r>r+r,rNrOrP isdisjointr7 assertTrue) rrdZlargrbZrargrRrcr8r9r r r test_isdisjointys    zTestJointOps.test_isdisjointcCsp|j|j}||jt|j@|||jt|j@|z|j|j@Wnty`Yn 0|ddS)Nz(s&t did not screen-out general iterables)r*r]r'r7r4r>r3rUrVr r r test_ands zTestJointOps.test_andcCsf|j|j}|jD]$}|||v||jvo4||jvq||j||j|t||j | t |jjt | t |jjggtttjtttfD]}||d|dtd||d|dtd||d|dtd||d|dtd||dtd||d|d|d td qdS) NrBrCrerErHrGr1rIr\r@)r* differencer'r(r7r-r)r&rLrMr2rrr3r4r>r+r,rNrOrPrrWr@rRr r r test_differences "    zTestJointOps.test_differencecCsp|j|j}||jt|j|||jt|j|z|j|jWnty`Yn 0|ddS)Nz(s-t did not screen-out general iterables)r*rjr'r7r4r>r3rUrVr r r test_subs zTestJointOps.test_subcCs&|j|j}|jD]$}|||v||jv||jvAq||j||j|t||j | t |jjt | t |jjggtttjtttfD]}||d|dtd||d|dtd||d|dtd||d|dtd qdS) NrBrCabdrErFrGr1rIrJ)r*symmetric_differencer'r(r7r-r)r&rLrMr2rrr3r4r>r+r,rNrOrPrkr r r test_symmetric_differences "   z&TestJointOps.test_symmetric_differencecCsp|j|j}||jt|jA|||jt|jA|z|j|jAWnty`Yn 0|ddS)Nz(s^t did not screen-out general iterables)r*ror'r7r4r>r3rUrVr r r test_xors zTestJointOps.test_xorcCs|||jt|j||jt|j||j|jkd||jt|j||jt|j||j|jkddSNFT)r7r*r4r&r>r_r'rr r r test_equalitys zTestJointOps.test_equalitycCs,ttgd}||}|t|ddS)N)ZabcdefZbcdZbdcbZfedZfedccba)mapr>r)r7r;)rtr*r r r test_setOfFrozensetss z!TestJointOps.test_setOfFrozensetscCst|jgd\}}}|||k|||k|||k|||k|||k|||k|||k|||k|||k|tdd|tdd|tdd|tdddS)N)reZabcdedefr1rHZcbs)rur)rgZ assertFalser4issubset issuperset)rpqrr r r test_sub_and_superszTestJointOps.test_sub_and_supercCsttjdD]z}t|j|}t|}||j|d|j|ft|jtt fvrd|j_ t|j|}t|}||jj |j qdS)Nr %s != %s ) rangepickleHIGHEST_PROTOCOLdumpsr*loadsr7rLr4r>rS)rrWr{dupr r r test_picklings  zTestJointOps.test_picklingc CsttjdD]}t|j}||j}t||}t|}||t j j | |||t|}z t |}WntyYqYn0t||}t|}| |||||fqdSr )rrriterr*r)rrZassertIsInstance collectionsrHIteratorr7next StopIteration)rprotoZitorgdatar-itZdropr r r test_iterator_picklings          z#TestJointOps.test_iterator_picklingcs~Gfdddd}||g}t|}|t|t||D]}|}qH|t|t|||jd|jdS)Ncs*eZdZddZddZdfdd ZdS) z*TestJointOps.test_deepcopy..TracercSs ||_dSrr)rrr r r r#sz3TestJointOps.test_deepcopy..Tracer.__init__cSs|jSrrrr r r rsz3TestJointOps.test_deepcopy..Tracer.__hash__Ncs|jdSr r)rmemoTracerr r __deepcopy__ sz7TestJointOps.test_deepcopy..Tracer.__deepcopy__)N)rrr r#rrr rr r rsrrr )r)copydeepcopyr_r^r7r)rrvr*relemZnewtr rr test_deepcopys  zTestJointOps.test_deepcopycsNGdddtfddtdD}|D]}||_||_t|g|_q,dS)Nc@s eZdZdS)zTestJointOps.test_gc..ANrr r r r Asrc3s|] }VqdSrr .0rWrr r z'TestJointOps.test_gc..)r4rcyclesub)rr*rr rr test_gcs zTestJointOps.test_gccCsVGddd|j}|}t}|||||||||||dS)Nc@seZdZddZdS)z6TestJointOps.test_subclass_with_custom_hash..HcSstt|d@S)Ni)r$r^rr r r r!sz?TestJointOps.test_subclass_with_custom_hash..H.__hash__N)rrr rr r r r H sr)r)r4addr?removediscard)rrr*rdr r r test_subclass_with_custom_hashs    z+TestJointOps.test_subclass_with_custom_hashcCs||tg}|t|jttg|t|jtt|drx|t|jt|t|jt|t|jtdS)Nr) r)rr2rr=hasattrrrrrr*r r r test_badcmp+s zTestJointOps.test_badcmpcCsbt}||g}||_|jtkr4|t|dn*t|dd}|t|d||fdS)Nz {set(...)}(rz %s({%s(...)}))rr)rr4r7r partition)rwr*namer r r test_cyclical_repr6s  zTestJointOps.test_cyclical_reprc Cst}||g}||_ttjd}zN|t||ttjd}| | t |W|t tjn|t tj0dSNrr}) rr)ropenrTESTFNwriterNcloser7readrunlink)rrr*for r r test_cyclical_print@s   z TestJointOps.test_cyclical_printcCs:d}tttt|}|tdd|D|||}|tdd|D||||tdd|D|t |dr| ||tdd|D|tt |}|tdd|D|tt |}|td d|D|tt |d }|td d|D|||t|d dS) Nrcss|] }|jVqdSrr rrr r r rQrz.css|] }|jVqdSrr rr r r rSrcss|] }|jVqdSrr rr r r rUrsymmetric_difference_updatecss|] }|jVqdSrr rr r r rXrcss|] }|jVqdSrr rr r r rZrcss|] }|jVqdSrr rr r r r\r{css|] }|jVqdSrr rr r r r^r) r+r,rurrr7sumr)rjrrr4r>)rnr-r*Zd2Zd3r r r test_do_not_rehash_dict_keysNs"    z)TestJointOps.test_do_not_rehash_dict_keyscCsXGdddt}|}t|}t|dg}t||_~~t||duddS)Nc@s eZdZdS)z/TestJointOps.test_container_iterator..CNrr r r r rRcsrRr zCycle was not collected) objectweakrefrefr4rrSgcZcollectrg)rrRobjr containerr r r test_container_iteratoras   z$TestJointOps.test_container_iteratorcCst|t|jdSr)rZcheck_free_after_iteratingrr)rr r r test_free_after_iteratingmsz&TestJointOps.test_free_after_iteratingN)rrr r.r5r:r<rArTrXrarhrirlrmrprqrsrwr~rrrrrrrrrrrr r r r r%(s8          r%c@seZdZeZeZddZddZddZddZ d d Z d d Z d dZ ddZ ddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Ze e!ed3d4d5d6Z"d7S)8TestSetcCsj|}||j||t|j||j||t|j|t|j|d|t|jddS)Nr/r )r)r#r&r7r4r'r2r3rr r r test_initts  zTestSet.test_initcCs0|td}||}|t|t|dSNrtr)rr_r^rr*rvr r r test_constructor_identity}s z!TestSet.test_constructor_identitycCs$tgd}hd}|||dS)Nr r/rtr r/rtr4r7rr r r test_set_literals zTestSet.test_set_literalcCs4hd}|t|d|}|t|tdS)N>r r )r7r;poprLr$)rr*Z stored_valuer r r test_set_literal_insertion_ordersz(TestSet.test_set_literal_insertion_ordercs:gfdd}|d|d|dh}|gddS)Ncs|dSr)append)reventsr r recordsz9TestSet.test_set_literal_evaluation_order..recordr r/rtr)r7)rrr*r rr !test_set_literal_evaluation_orders z)TestSet.test_set_literal_evaluation_ordercCs|tt|jdSr)r2r3hashr*rr r r test_hashszTestSet.test_hashcCs0|j||jt|t|jddSr)r*clearr7r4r;rr r r test_clears zTestSet.test_clearcCsD|j}||j||t|jt||t||jdSr)r*rr7r_r^rLrMrrr r r test_copys zTestSet.test_copycCsT|jd|d|j|j}|jd||j||t|jjgdS)NQ)r*rr?rr7r2r3rr r r test_adds    zTestSet.test_addcCs|jd|d|j|t|jjd|t|jjg|t|jg}| ||j||||j|||j||t|jj||jdSNr1r) r*r assertNotInr2KeyErrorr3r)r>r&r?rr r r test_removes zTestSet.test_removec CsbdD]X}z|j|Wn:tyR}z"|jd}|||WYd}~qd}~00|qdS)N)rr r)r*rrr"r7rU)rv1ev2r r r test_remove_keyerror_unpackings "z&TestSet.test_remove_keyerror_unpackingc Cst|ddg}z|j|WnHtyf}z0||jd|ud||jdWYd}~nd}~00|dS)NrtrzKeyError should be {0}, not {1})r)r*rrrgr"formatrU)rkeyrr r r test_remove_keyerror_setsz TestSet.test_remove_keyerror_setcCs|jd|d|j|jd|t|jjg|t|jg}|||j||||j|||j||||jdSr) r*rrr2r3r)r>r&r?rr r r test_discards  zTestSet.test_discardcCs@tt|jD]}|j}|||jq|t|jjdSr)rr;r*rrr2r)rrWrr r r test_pops zTestSet.test_popc Cs(|j|j}||d|j|jD]}|||jq&|t|jjt|t |jjggdD]P\}}t t t j tttfD]4}|d}||||d||t |qqfdD]f}d}t t t j tttfD]J}|d}||||||d||t |t |Bt |BqqdS)N))rCrDrErF)rGrHrIrJrB)rCrErGrIZabcdaZahi)r*updater'r7r&r?r2rrr3r4r>r+r,rNrOrPr)rretvalr@r{r|rRr*r r r test_updates"    zTestSet.test_updatecCs8|jt|jO_|j|jD]}|||jq dSr)r*r4r'r&r?rr@r r r test_iorszTestSet.test_iorc Cs.|j|j}||d|j|jD]6}||jvrN||jvrN|||jq&|||jq&|t|jjt |t |jjggdD]\}}t t t jtttfD]}|d}||||d||t |d}||}d}||||||d||t dt |@t |@qqdS)N))rCr@)rErZ)rGr[)rIrZrBZcbc)r*intersection_updater'r7r&r?rr2rrr3r4r>r+r,rNrOrPr)) rrr@r{r|rRr*ssrvr r r test_intersection_updates$    z TestSet.test_intersection_updatecCs\|jt|jM_|j|jD]6}||jvrH||jvrH|||jq |||jq dSrr*r4r'r&r?rrr r r test_iand s zTestSet.test_iandcCsr|j|j}||d|j|jD]6}||jvrN||jvrN|||jq&|||jq&|t|jjt |t |jjgg|t |jj ggdD]\}}t t tjtttfD]}|d}||||d||t ||d}||||d|d}||d|||d|d}||d|d|||dqqdS)N))rCre)rErHrGr1)rIrHrBZ abcdefghihZabaZcdefghihrCZefghih)r*difference_updater'r7r&r?rr2rrr3rr4r>r+r,rNrOrPr)rr r r test_difference_updates.      zTestSet.test_difference_updatecCs\|jt|j8_|j|jD]6}||jvrH||jvrH|||jq |||jq dSrrrr r r test_isub0s zTestSet.test_isubcCs|j|j}||d|j|jD]6}||jv||jvArN|||jq&|||jq&|t|jjt |t |jjggdD]P\}}t t t jtttfD]4}|d}||||d||t |qqdS)N))rCrnrrrrB)r*rr'r7r&r?rr2rrr3r4r>r+r,rNrOrPr)rr r r test_symmetric_difference_update8s   z(TestSet.test_symmetric_difference_updatecCs\|jt|jN_|j|jD]6}||jv||jvArH|||jq |||jq dSrrrr r r test_ixorHs zTestSet.test_ixorcCst|j}||O}|||j||M}|||j||8}||||j}||N}|||dSr)r*rr7r))rrvr r r test_inplace_on_selfPs  zTestSet.test_inplace_on_selfcCs>|d}t|}|t|t|d}|tt|dS)NZgallahad)r)rproxyr7rNr2ReferenceError)rr*r{r r r test_weakref\s   zTestSet.test_weakrefcCsGddd}hd}|}||k||j|}||k||j|}||k||j|}||k||jdS)Nc@s,eZdZddZddZddZddZd S) z5TestSet.test_rich_compare..TestRichSetComparecSs d|_dSNTF) gt_calledrZsome_setr r r __gt__esz.TestRichSetCompare.__gt__cSs d|_dSr) lt_calledr r r r __lt__hsz.TestRichSetCompare.__lt__cSs d|_dSr) ge_calledr r r r __ge__ksz.TestRichSetCompare.__ge__cSs d|_dSr) le_calledr r r r __le__nsz.TestRichSetCompare.__le__N)rrr r r rrr r r r TestRichSetComparedsrr)rgrr r r)rrZmysetZmyobjr r r test_rich_comparecs   zTestSet.test_rich_compare test_c_apiz*C API test only available in a debug buildcCs|tddSNT)r7r4rrr r r rszTestSet.test_c_apiN)#rrr r4r)rMrrrrrrrrrrrrrrrrrrrrrrrrrunittestZ skipUnlessrrr r r r rps>      $ rc@s eZdZdS) SetSubclassNrr r r r rsrc@seZdZeZeZdS)TestSetSubclassN)rrr rr)r4rMr r r r rsrc@seZdZgdfddZdS)SetSubclassWithKeywordArgsNcCst||dSr)r4r#)riterablenewargr r r r#sz#SetSubclassWithKeywordArgs.__init__)rrr r#r r r r rsrc@seZdZddZdS)TestSetSubclassWithKeywordArgscCstdddS)z=SF bug #1486663 -- this used to erroneously raise a TypeErrorr )rN)rrr r r test_keywords_in_subclasssz8TestSetSubclassWithKeywordArgs.test_keywords_in_subclassN)rrr rr r r r rsrc@sTeZdZeZeZddZddZddZddZ d d Z d d Z d dZ ddZ dS) TestFrozenSetcCs.||j}||j||t|jdSr)r)r&r#r'r7r4rr r r rs  zTestFrozenSet.test_initc Csnt}ttgtdtdttgtdtdttdttt||g }|tttt|ddS)Nr rZrr )r>rr7r;r4rur^)rrdefsr r r test_singleton_empty_frozensetsz,TestFrozenSet.test_singleton_empty_frozensetcCs0|td}||}|t|t|dSr)r)rr7r^rr r r rs z'TestFrozenSet.test_constructor_identitycs~|t|dt|ddfddtD}t}tdD] }t||t||qH|t|ddS)NZabcdebZebecdadcsg|] }tqSr )rrrr r rz+TestFrozenSet.test_hash..r )r7rr)rr4rrr;)rseqresultsrWr r!r rs  zTestFrozenSet.test_hashcCs$|j}|t|jt|dSr)r*rr7r^rr r r rs zTestFrozenSet.test_copycCsrttdtddg}||}|t|}||||t|t|i}d||<|||ddS)NrZabcdefgZapple*)rOrr)reversedr7r_r^)rr$Zkey1Zkey2r-r r r test_frozen_as_dictkeys  z$TestFrozenSet.test_frozen_as_dictkeycCs"|d}|t|t|dS)NZabcdcda)r)r7r)rrdr r r test_hash_cachings zTestFrozenSet.test_hash_cachingc sd}t}|j}ddt|D}td|D]"|ttfdd|Dq.|t|d|dd}dd }td D]V}d|}|d t|fD]8}tfd d tt|||D} |d| |qq~dS)N cSsg|]}|dd|>fqSrr rr r r r"rz9TestFrozenSet.test_hash_effectiveness..r/csg|]\}}|@r|qSr r )rrmrWr r r"rcSs8tg}t|dD]}t|}||q|d|Sr )r>rr)rnumsrWnumr r r zf_ranges  z7TestFrozenSet.test_hash_effectiveness..zf_rangecss2tt|dD]}ttt||EdHqdSr )rr;rur> itertools combinations)r*rWr r r powersetsz7TestFrozenSet.test_hash_effectiveness..powersetr csh|] }|@qSr r )rh)maskr r rz8TestFrozenSet.test_hash_effectiveness..r) r4rrrr>r7r;ruZ assertGreater) rrZ hashvaluesZ addhashvalueZ elemmasksr/r2rvr-rQr )rWr5r test_hash_effectivenesss   $z%TestFrozenSet.test_hash_effectivenessN)rrr r>r)rMrrrrrr(r)r7r r r r rs   rc@s eZdZdS)FrozenSetSubclassNrr r r r r8sr8c@s4eZdZeZeZddZddZddZ ddZ d S) TestFrozenSetSubclasscCs0|td}||}|t|t|dSrrrr r r rs z/TestFrozenSetSubclass.test_constructor_identitycCs$|j}|t|jt|dSr)r*rr_r^rr r r rs zTestFrozenSetSubclass.test_copycCs"|}||}|||dSr)r)r7rr r r test_nested_empty_constructors z3TestFrozenSetSubclass.test_nested_empty_constructorcCs|j}t}|}||g|d|d||g|d|d|td|||t||||||g}|tttt|t|dS)Nr rZr)r)r>rr7r;r4rur^)rZ FrozensetrdFrr r r rsz4TestFrozenSetSubclass.test_singleton_empty_frozensetN) rrr r8r)r>rMrrr:rr r r r r9s r9c@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/d0Zd1S)2 TestBasicOpscCs"|jdur|t|j|jdSr)rr7r4rr r r test_reprs zTestBasicOps.test_reprcCslt|j}||d||d|ddd}|dd|jD}||||dS)N{}r z, cSsg|] }t|qSr )r)rrr r r r""rz:TestBasicOps.check_repr_against_values..) rr4rg startswithendswithsplitsortvaluesr7)rtextresultZsorted_repr_valuesr r r check_repr_against_valuess z&TestBasicOps.check_repr_against_valuesc Cszz^ttjd}|t|j|ttjd}||t |jW|t tjn|t tj0dSr) rrrrrNr4rr7rrr)rrr r r test_print&s  zTestBasicOps.test_printcCs|t|j|jdSr)r7r;r4lengthrr r r test_length1szTestBasicOps.test_lengthcCs||j|jdSrr7r4rr r r test_self_equality4szTestBasicOps.test_self_equalitycCs||j|jdSr)r7r4rrr r r test_equivalent_equality7sz%TestBasicOps.test_equivalent_equalitycCs||j|jdSr)r7r4rrrr r r r:szTestBasicOps.test_copycCs|j|jB}|||jdSrr4r7rrrGr r r test_self_union=s zTestBasicOps.test_self_unioncCs|jtB}|||jdSrr4 empty_setr7rrPr r r test_empty_unionAs zTestBasicOps.test_empty_unioncCst|jB}|||jdSr)rSr4r7rrPr r r test_union_emptyEs zTestBasicOps.test_union_emptycCs|j|j@}|||jdSrrOrPr r r test_self_intersectionIs z#TestBasicOps.test_self_intersectioncCs|jt@}||tdSrr4rSr7rPr r r test_empty_intersectionMs z$TestBasicOps.test_empty_intersectioncCst|j@}||tdSrrSr4r7rPr r r test_intersection_emptyQs z$TestBasicOps.test_intersection_emptycCs"|j|j}|||j dSrr4rfr7rPr r r test_self_isdisjointUsz!TestBasicOps.test_self_isdisjointcCs|jt}||ddSr)r4rfrSr7rPr r r test_empty_isdisjointYs z"TestBasicOps.test_empty_isdisjointcCst|j}||ddSr)rSrfr4r7rPr r r test_isdisjoint_empty]s z"TestBasicOps.test_isdisjoint_emptycCs|j|jA}||tdSrr4r7rSrPr r r test_self_symmetric_differenceas z+TestBasicOps.test_self_symmetric_differencecCs|jtA}|||jdSrrWrPr r r test_empty_symmetric_differencees z,TestBasicOps.test_empty_symmetric_differencecCs|j|j}||tdSrr_rPr r r test_self_differenceis z!TestBasicOps.test_self_differencecCs|jt}|||jdSrrRrPr r r test_empty_differencems z"TestBasicOps.test_empty_differencecCst|j}||tdSrrYrPr r r test_empty_difference_revqs z&TestBasicOps.test_empty_difference_revcCs>|jD]}|||jqt|j}||t|jdSr)r4r?rErr7__length_hint__r;)rvZsetiterr r r test_iterationus  zTestBasicOps.test_iterationcCsJttjdD]6}t|j|}t|}||j|d|j|fqdS)Nr r)rrrrr4rr7)rrr{rr r r r{s    zTestBasicOps.test_picklingcCsp|ttdWdn1s,0Y|ttdWdn1sb0YdS)Nr)r2r3r4rjrrr r r test_issue_37219s * zTestBasicOps.test_issue_37219N)rrr r=rHrIrKrMrNrrQrTrUrVrXrZr\r]r^r`rarbrcrdrgrrhr r r r r<s0  r<c@seZdZddZdS)TestBasicOpsEmptycCs4d|_g|_t|j|_t|j|_d|_d|_dS)Nz empty setrzset()caserEr4rrJrrr r r r.s   zTestBasicOpsEmpty.setUpNrrr r.r r r r risric@s$eZdZddZddZddZdS)TestBasicOpsSingletoncCs6d|_dg|_t|j|_t|j|_d|_d|_dS)Nzunit set (number)rtr z{3}rjrr r r r.s   zTestBasicOpsSingleton.setUpcCs|d|jdSrr?r4rr r r test_inszTestBasicOpsSingleton.test_incCs|d|jdS)Nr/rr4rr r r test_not_insz!TestBasicOpsSingleton.test_not_inNrrr r.rorqr r r r rmsrmc@s$eZdZddZddZddZdS)TestBasicOpsTuplecCs6d|_dg|_t|j|_t|j|_d|_d|_dS)Nzunit set (tuple)rzeror z {(0, 'zero')}rjrr r r r.s   zTestBasicOpsTuple.setUpcCs|d|jdS)Nrtrnrr r r roszTestBasicOpsTuple.test_incCs|d|jdS)N rprr r r rqszTestBasicOpsTuple.test_not_inNrrr r r r rssrsc@seZdZddZdS)TestBasicOpsTriplecCs<d|_ddtjg|_t|j|_t|j|_d|_d|_dS)Nz triple setrrurt)rkoperatorrrEr4rrJrrr r r r.s   zTestBasicOpsTriple.setUpNrlr r r r rwsrwc@seZdZddZddZdS)TestBasicOpsStringcCs2d|_gd|_t|j|_t|j|_d|_dS)Nz string setr1r\r@rtrkrEr4rrJrr r r r.s    zTestBasicOpsString.setUpcCs |dSrrHrr r r r=szTestBasicOpsString.test_reprNrrr r.r=r r r r rysryc@seZdZddZddZdS)TestBasicOpsBytescCs2d|_gd|_t|j|_t|j|_d|_dS)Nz bytes set)abcrtr{rr r r r.s    zTestBasicOpsBytes.setUpcCs |dSrr|rr r r r=szTestBasicOpsBytes.test_reprNr}r r r r r~sr~c@s$eZdZddZddZddZdS)TestBasicOpsMixedStringBytescCsRt|_|jtdtd|_gd|_t |j|_ t |j|_ d|_ dS)Nignorezstring and bytes set)r1r\rrr) rZcheck_warnings_warning_filters __enter__warnings simplefilter BytesWarningrkrEr4rrJrr r r r.s      z"TestBasicOpsMixedStringBytes.setUpcCs|jddddSr)r__exit__rr r r tearDownsz%TestBasicOpsMixedStringBytes.tearDowncCs |dSrr|rr r r r=sz&TestBasicOpsMixedStringBytes.test_reprN)rrr r.rr=r r r r rs rccstdVdSr)r3r r r r baditersrccs dVdSrr r r r r gooditersrc@s(eZdZdZddZddZddZdS) TestExceptionPropagationz?SF 628246: Set constructor should not trap iterator TypeErrorscCs|tttdSr)r2r3r4rrr r r test_instanceWithExceptionsz3TestExceptionPropagation.test_instanceWithExceptioncCsFtgdtdtddddttdtdttdS)Nrr r/rt)ZoneZtwoZthreerH)r4rrrr r r test_instancesWithoutExceptions   z7TestExceptionPropagation.test_instancesWithoutExceptioncCsHtgd}z|D]}|dgqWnty8Yn 0|ddS)Nrrz0no exception when changing size during iteration)r4rrrU)rr*rWr r r test_changingSizeWhileIteratings  z8TestExceptionPropagation.test_changingSizeWhileIteratingN)rrr rrrrr r r r rs rc@seZdZddZdS) TestSetOfSetscCs\tdg}t|g}|}|t|t||||||t||dSr )r>r4rr7rLrrr)rinnerZouterelementr r r test_constructors    zTestSetOfSets.test_constructorN)rrr rr r r r rsrc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%S)& TestBinaryOpscCstd|_dSNr/rr4rr r r r.szTestBinaryOps.setUpcCs||jtdddddS)Nr rtrrLrr r r test_eq"szTestBinaryOps.test_eqcCs$|jtdgB}||tddSNr/rrrPr r r test_union_subset%szTestBinaryOps.test_union_subsetcCs*|jtgdB}||tgddSNr/rrrrPr r r test_union_superset)sz!TestBinaryOps.test_union_supersetcCs*|jtgdB}||tgddSNrtrr)r/rtrrrrrPr r r test_union_overlap-sz TestBinaryOps.test_union_overlapcCs(|jtdgB}||tgddSNrrrrPr r r test_union_non_overlap1sz$TestBinaryOps.test_union_non_overlapcCs"|jtd@}||tddSNr/rrrPr r r test_intersection_subset5sz&TestBinaryOps.test_intersection_subsetcCs*|jtgd@}||tgddSNrrrrPr r r test_intersection_superset9sz(TestBinaryOps.test_intersection_supersetcCs(|jtgd@}||tdgdSNrrrrPr r r test_intersection_overlap=sz'TestBinaryOps.test_intersection_overlapcCs |jtdg@}||tdSNrr_rPr r r test_intersection_non_overlapAsz+TestBinaryOps.test_intersection_non_overlapcCs |jtd}||ddS)NrFr[rPr r r test_isdisjoint_subsetEsz$TestBinaryOps.test_isdisjoint_subsetcCs$|jtgd}||ddS)NrFr[rPr r r test_isdisjoint_supersetIsz&TestBinaryOps.test_isdisjoint_supersetcCs$|jtgd}||ddS)NrFr[rPr r r test_isdisjoint_overlapMsz%TestBinaryOps.test_isdisjoint_overlapcCs"|jtdg}||ddS)NrTr[rPr r r test_isdisjoint_non_overlapQsz)TestBinaryOps.test_isdisjoint_non_overlapcCs$|jtdA}||tdgdSNrrrrPr r r test_sym_difference_subsetUsz(TestBinaryOps.test_sym_difference_subsetcCs$|jtdA}||tdgdSNrrrrPr r r test_sym_difference_supersetYsz*TestBinaryOps.test_sym_difference_supersetcCs&|jtdA}||tgddSNr)r/rtrrrrPr r r test_sym_difference_overlap]sz)TestBinaryOps.test_sym_difference_overlapcCs(|jtdgA}||tgddSrrrPr r r test_sym_difference_non_overlapasz-TestBinaryOps.test_sym_difference_non_overlapN)rrr r.rrrrrrrrrrrrrrrrrr r r r rs$rc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+S), TestUpdateOpscCstd|_dSrrrr r r r.hszTestUpdateOps.setUpcCs*|jtdgO_||jtddSrrrr r r rkszTestUpdateOps.test_union_subsetcCs0|jtgdO_||jtgddSrrrr r r rosz!TestUpdateOps.test_union_supersetcCs0|jtgdO_||jtgddSrrrr r r rssz TestUpdateOps.test_union_overlapcCs.|jtdgO_||jtgddSrrrr r r rwsz$TestUpdateOps.test_union_non_overlapcCs.|jtgd||jtgddSr)r4rr7rr r r test_union_method_call{sz$TestUpdateOps.test_union_method_callcCs(|jtdM_||jtddSrrrr r r rsz&TestUpdateOps.test_intersection_subsetcCs0|jtgdM_||jtgddSrrrr r r rsz(TestUpdateOps.test_intersection_supersetcCs.|jtgdM_||jtdgdSrrrr r r rsz'TestUpdateOps.test_intersection_overlapcCs&|jtdgM_||jtdSrr_rr r r rsz+TestUpdateOps.test_intersection_non_overlapcCs,|jtgd||jtdgdSr)r4rr7rr r r test_intersection_method_callsz+TestUpdateOps.test_intersection_method_callcCs*|jtdN_||jtdgdSrrrr r r rsz(TestUpdateOps.test_sym_difference_subsetcCs*|jtdN_||jtdgdSrrrr r r rsz*TestUpdateOps.test_sym_difference_supersetcCs,|jtdN_||jtgddSrrrr r r rsz)TestUpdateOps.test_sym_difference_overlapcCs.|jtdgN_||jtgddSrrrr r r rsz-TestUpdateOps.test_sym_difference_non_overlapcCs.|jtgd||jtgddSr)r4rr7rr r r test_sym_difference_method_callsz-TestUpdateOps.test_sym_difference_method_callcCs*|jtd8_||jtdgdSrrrr r r test_difference_subsetsz$TestUpdateOps.test_difference_subsetcCs(|jtd8_||jtgdSrrrr r r test_difference_supersetsz&TestUpdateOps.test_difference_supersetcCs,|jtd8_||jtddgdSNrr/rrrr r r test_difference_overlapsz%TestUpdateOps.test_difference_overlapcCs.|jtdg8_||jtgddS)Nrrrrr r r test_difference_non_overlapsz)TestUpdateOps.test_difference_non_overlapcCs.|jtgd||jtddgdSr)r4rr7rr r r test_difference_method_callsz)TestUpdateOps.test_difference_method_callN)rrr r.rrrrrrrrrrrrrrrrrrrrr r r r rgs*rc@s|eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS) TestMutatecCsgd|_t|j|_dS)Nrz)rEr4rr r r r.s zTestMutate.setUpcCs"|jd||jtddS)Nr@rHr4rr7rr r r test_add_presents zTestMutate.test_add_presentcCs"|jd||jtddS)Nr-rDrrr r r test_add_absents zTestMutate.test_add_absentcCsJt}d}|jD]&}|||d7}|t||q|||jdS)Nrr )r4rErr7r;)rtmp expected_lenrfr r r test_add_until_fulls  zTestMutate.test_add_until_fullcCs"|jd||jtddS)Nr\Zac)r4rr7rr r r test_remove_presents zTestMutate.test_remove_presentcCs2z|jd|dWnty,Yn0dS)Nr-z7Removing missing element should have raised LookupError)r4rrU LookupErrorrr r r test_remove_absents   zTestMutate.test_remove_absentcCs@t|j}|jD]*}|j||d8}|t|j|qdSr )r;r4rErr7)rrrfr r r test_remove_until_emptys    z"TestMutate.test_remove_until_emptycCs"|jd||jtddS)Nr@rer4rr7rr r r test_discard_presents zTestMutate.test_discard_presentcCs"|jd||jtddS)Nr-rHrrr r r test_discard_absents zTestMutate.test_discard_absentcCs |j|t|jddSr)r4rr7r;rr r r rs zTestMutate.test_clearcCsLi}|jrd||j<q|t|t|j|jD]}|||q6dSr)r4rr7r;rEr?)rZpoppedrfr r r rs  zTestMutate.test_popcCs$|jd||jt|jdS)Nr r4rr7rErr r r test_update_empty_tuples z"TestMutate.test_update_empty_tuplecCs$|jd||jt|jdS)Nr0rrr r r test_update_unit_tuple_overlaps z)TestMutate.test_update_unit_tuple_overlapcCs*|jd||jt|jdgdS)N)r1r`r`rrr r r "test_update_unit_tuple_non_overlaps z-TestMutate.test_update_unit_tuple_non_overlapN)rrr r.rrrrrrrrrrrrrr r r r rs rc@s0eZdZdddZdddddd d Zd d Zd S) TestSubsetsryrz)<=>===!=>_rz:TestOnlySetsInBinaryOps.test_ge_gt_le_lt..cs jjkSrrr rr r r`rcs jjkSrrr rr r rarcs jjkSrrr rr r rbrcs jjkSrrr4r rr r rdrcs jjkSrrr rr r rercs jjkSrrr rr r rfrcs jjkSrrr rr r rgr)r2r3rr rr test_ge_gt_le_lt^sz(TestOnlySetsInBinaryOps.test_ge_gt_le_ltcCs6z|j|jO_Wnty&Yn 0|ddSNzexpected TypeErrorr4rr3rUrr r r test_update_operatoris  z,TestOnlySetsInBinaryOps.test_update_operatorcCs.|jr|j|jn|t|jj|jdSr)otherIsIterabler4rrr2r3rr r r rqsz#TestOnlySetsInBinaryOps.test_updatecsVtfddtfddjr>jjntjjjdS)Ncs jjBSrrr rr r rxrz4TestOnlySetsInBinaryOps.test_union..cs jjBSrrr rr r ryr)r2r3rr4rKrrr rr rTws z"TestOnlySetsInBinaryOps.test_unioncCs6z|j|jM_Wnty&Yn 0|ddSrrrr r r !test_intersection_update_operators  z9TestOnlySetsInBinaryOps.test_intersection_update_operatorcCs.|jr|j|jn|t|jj|jdSr)rr4rrr2r3rr r r rs z0TestOnlySetsInBinaryOps.test_intersection_updatecsVtfddtfddjr>jjntjjjdS)Ncs jj@Srrr rr r rrz;TestOnlySetsInBinaryOps.test_intersection..cs jj@Srrr rr r rr)r2r3rr4r]rrr rr ras z)TestOnlySetsInBinaryOps.test_intersectioncCs6z|j|jN_Wnty&Yn 0|ddSrrrr r r #test_sym_difference_update_operators  z;TestOnlySetsInBinaryOps.test_sym_difference_update_operatorcCs.|jr|j|jn|t|jj|jdSr)rr4rrr2r3rr r r test_sym_difference_updates z2TestOnlySetsInBinaryOps.test_sym_difference_updatecsVtfddtfddjr>jjntjjjdS)Ncs jjASrrr rr r rrz=TestOnlySetsInBinaryOps.test_sym_difference..cs jjASrrr rr r rr)r2r3rr4rorrr rr test_sym_differences z+TestOnlySetsInBinaryOps.test_sym_differencecCs6z|j|j8_Wnty&Yn 0|ddSrrrr r r test_difference_update_operators  z7TestOnlySetsInBinaryOps.test_difference_update_operatorcCs.|jr|j|jn|t|jj|jdSr)rr4rrr2r3rr r r rs z.TestOnlySetsInBinaryOps.test_difference_updatecsVtfddtfddjr>jjntjjjdS)Ncs jjSrrr rr r rrz9TestOnlySetsInBinaryOps.test_difference..cs jjSrrr rr r rr)r2r3rr4rjrrr rr rls z'TestOnlySetsInBinaryOps.test_differenceN)rrr rrrrrTrrrarrrrrrlr r r r rUs rc@seZdZddZdS)TestOnlySetsNumericcCstd|_d|_d|_dS)NrFr4rrrr r r r.s zTestOnlySetsNumeric.setUpNrlr r r r rsrc@seZdZddZdS)TestOnlySetsDictcCs td|_ddd|_d|_dS)Nrr/r)r rtTrrr r r r.s  zTestOnlySetsDict.setUpNrlr r r r rsrc@seZdZddZdS)TestOnlySetsOperatorcCstd|_tj|_d|_dS)NrF)r4rxrrrrr r r r.s zTestOnlySetsOperator.setUpNrlr r r r rsrc@seZdZddZdS)TestOnlySetsTuplecCstd|_d|_d|_dS)NrrTrrr r r r.s zTestOnlySetsTuple.setUpNrlr r r r rsrc@seZdZddZdS)TestOnlySetsStringcCstd|_d|_d|_dS)NrrHTrrr r r r.s zTestOnlySetsString.setUpNrlr r r r rsrc@seZdZddZdS)TestOnlySetsGeneratorcCs$dd}td|_||_d|_dS)NcsstdddD] }|Vq dS)Nrrr/)rr,r r r gensz(TestOnlySetsGenerator.setUp..genrTr)rrr r r r.s zTestOnlySetsGenerator.setUpNrlr r r r rsrc@seZdZddZddZdS) TestCopyingcCsd|j}t|td}t|jtd}|t|t|tt|D]}|||||uqDdSNr)r4rr6rr7r;rrgrrZdup_listZset_listrWr r r rs   zTestCopying.test_copycCsdt|j}t|td}t|jtd}|t|t|tt|D]}|||||qFdSr )rrr4r6rr7r;rr r r r test_deep_copys   zTestCopying.test_deep_copyN)rrr rr r r r r r sr c@seZdZddZdS)TestCopyingEmptycCs t|_dSrrrr r r r.szTestCopyingEmpty.setUpNrlr r r r rsrc@seZdZddZdS)TestCopyingSingletoncCstdg|_dS)NZhellorrr r r r.szTestCopyingSingleton.setUpNrlr r r r rsrc@seZdZddZdS)TestCopyingTriplecCstgd|_dS)N)rurNrrr r r r.szTestCopyingTriple.setUpNrlr r r r rsrc@seZdZddZdS)TestCopyingTuplecCstdg|_dS)Nr r/rrr r r r.$szTestCopyingTuple.setUpNrlr r r r r#src@seZdZddZdS)TestCopyingNestedcCstdg|_dS)N)r)rtrrrr r r r.*szTestCopyingNested.setUpNrlr r r r r)src@s4eZdZddZddZddZddZd d Zd S) TestIdentitiescCstd|_td|_dS)NZ abracadabraZalacazam)r4r1r\rr r r r.0s zTestIdentities.setUpcCs|j|j}}||||k||||k|||@|k|||@|k|||B|k|||B|k|||A||BkdSr)r1r\rgrr1r\r r r test_binopsVsSubsets4sz#TestIdentities.test_binopsVsSubsetscCsj|j|j}}|||@||@|||B||B|||A||A||krf|||||dSr)r1r\r7r_rr r r test_commutativity>s z!TestIdentities.test_commutativitycCs|j|j}}|||||@B||B||B|||@||AB||B||||B||B||||B||B|||||@B||||||@B||||||B||AdSr)r1r\r7rr r r test_summationsFs$zTestIdentities.test_summationscCsZ|j|jt}}}||||@|||||@||||@||A@|dSr)r1r\r4r7)rr1r\rur r r test_exclusionQszTestIdentities.test_exclusionN)rrr r.rrrrr r r r r/s   rccs|D] }|VqdS)zRegular generatorNr seqnrWr r r RZsrc@s eZdZdZddZddZdS)GzSequence using __getitem__cCs ||_dSrrrrr r r r#asz G.__init__cCs |j|SrrrVr r r __getitem__csz G.__getitem__N)rrr rr#r r r r r r_src@s(eZdZdZddZddZddZdS) Iz Sequence using iterator protocolcCs||_d|_dSrrrr r r r#hsz I.__init__cCs|Srr rr r r __iter__ksz I.__iter__cCs2|jt|jkrt|j|j}|jd7_|Sr rWr;rrrrfr r r __next__ms z I.__next__Nrrr rr#r"r%r r r r r!fsr!c@s eZdZdZddZddZdS)Igz9Sequence using iterator protocol defined with a generatorcCs||_d|_dSrrrr r r r#usz Ig.__init__ccs|jD] }|VqdSrr)rvalr r r r"xs z Ig.__iter__Nrrr rr#r"r r r r r'ssr'c@s eZdZdZddZddZdS)Xz Missing __getitem__ and __iter__cCs||_d|_dSrrrr r r r#~sz X.__init__cCs2|jt|jkrt|j|j}|jd7_|Sr r#r$r r r r%s z X.__next__N)rrr rr#r%r r r r r*|sr*c@s eZdZdZddZddZdS)NzIterator missing __next__()cCs||_d|_dSrrrr r r r#sz N.__init__cCs|Srr rr r r r"sz N.__iter__Nr)r r r r r+sr+c@s(eZdZdZddZddZddZdS) EzTest propagation of exceptionscCs||_d|_dSrrrr r r r#sz E.__init__cCs|Srr rr r r r"sz E.__iter__cCs dddS)Nrtrr rr r r r%sz E.__next__Nr&r r r r r,sr,c@s(eZdZdZddZddZddZdS) SzTest immediate stopcCsdSrr rr r r r#sz S.__init__cCs|Srr rr r r r"sz S.__iter__cCstdSr)rrr r r r%sz S.__next__Nr&r r r r r-sr-)chaincCsttddttt|S)z Test multiple tiers of iteratorscSs|Srr rSr r r rrzL..)r.rurr'rrr r r Lsr0c@s$eZdZddZddZddZdS)TestVariousIteratorArgsc CsttfD]}ddtddtdddfD]x}ttttttfD],}| t |||t dt ||t dq:| t |t|| t |t|| t|t|q&qdS) N123rZrZdog333333?rr )r4r>rrr!r'r-r0rr7r6rr2r3r*r+ZeroDivisionErrorr,)rZconsr*gr r r rs *z(TestVariousIteratorArgs.test_constructorc Cstd}ddtddtdddd fD]}|j|j|j|j|jfD]}ttt t t fD]L}||}|||}t |t r|||qR|t|td t|td qR|t|t||t|t||t|t|q@q$dS) NZnovemberr2rZrr3r4r5rdecemberr )r4rrKr]rjrorfrr!r'r0r isinstanceboolr7r6rr2r3r*r+r6r,)rr*rmethr7r9r8r r r test_inline_methodss   z+TestVariousIteratorArgs.test_inline_methodsc CsddtddtddddfD]}d D]}ttttttfD]X}td }|}t ||t ||t ||||| t |t d t |t d q8|tt td |t||tt td |t||tt td |t|q$qdS) Nr2rZrr3r4r5rr8)rrrrZjanuaryr )rrr!r'r-r0rr4rrrOr7r6rr2r3r*r+r6r,)rrZmethnamer7r*rvr r r test_inplace_methodss z,TestVariousIteratorArgs.test_inplace_methodsN)rrr rr<r=r r r r r1s r1c@seZdZddZddZdS)bad_eqcCstrtt||uSr)be_badset2rr6rr r r rsz bad_eq.__eq__cCsdSrr rr r r rszbad_eq.__hash__Nrrr rrr r r r r>sr>c@seZdZddZddZdS)bad_dict_clearcCstr t||uSr)r?dict2rrr r r rszbad_dict_clear.__eq__cCsdSrr rr r r rszbad_dict_clear.__hash__NrAr r r r rBsrBc@s$eZdZddZddZddZdS) TestWeirdBugscCsZdath}ddtdDada|t|jtdath}tdiada| tdS)NFcSsh|] }tqSr )r>rr r r r6rz4TestWeirdBugs.test_8420_set_merge..KT) r?r>rr@r2r6rrBrCr)rZset1r r r test_8420_set_merges z!TestWeirdBugs.test_8420_set_mergecCsXttd}||tdt|}|ttd}|tdt|dS)Nr )r4rrrrrO)rr*sir1r r r test_iter_and_mutates  z"TestWeirdBugs.test_iter_and_mutatecsBGfdddtfddtdDdh}|dS)Ncs eZdZddZfddZdS)z.TestWeirdBugs.test_merge_and_mutate..XcSstdSr)rrr r r rsz7TestWeirdBugs.test_merge_and_mutate..X.__hash__cs dS)NF)r)rorr r rsz5TestWeirdBugs.test_merge_and_mutate..X.__eq__Nrr rJr r r*sr*csh|] }qSr r r)r*r r r6rz6TestWeirdBugs.test_merge_and_mutate..rr)r4rrrr )r*rr test_merge_and_mutates z#TestWeirdBugs.test_merge_and_mutateN)rrr rFrHrKr r r r rDs rDccsXt|}z0tt|g}t|D]}|V||BVq WntyRtVYn0dS)z-Generates all subsets of a set or sequence U.N)rr>rr2r)UrSr-r r r r2 s  r2cs0ddt|Dtfddtt|DS)z!Graph of n-dimensional hypercube.cSsg|]}t|gqSr r>)rrSr r r r"rzcube..cs&g|]tfddDfqS)csg|] }|AqSr r )rr*r/r r r"rz#cube...rM)rZ singletonsr/r r"s)rr+r2r!r rNr cubes  rOcshi}|D]Z|D]Lfdd|D}fdd|D}t|||tg<qq|S)zGraph, the vertices of which are edges of G, with two vertices being adjacent iff the corresponding edges share a vertex.cs g|]}|krt|gqSr rMrr`rSrr r r"#rzlinegraph..cs g|]}|krt|gqSr rMrPrQr r r"$rrM)rr0Znxnyr rQr linegraphs rSc Cst}|D]\}}|D]}||D]}||kr4q&|||vrV|t|||gq&||D]v}||krlq^|||vr|t||||gq^||D]:}||ks||krq|||vr|t|||||gqq^q&qq|S)zKReturn a set of faces in G. Where a face is a set of vertices on that face)r4itemsrr>)rrdredgesrZv3Zv4Zv5r r r faces(s&      "rVc@seZdZddZddZdS) TestGraphscCstd}t|}|t|d|D]}|t|dq(tdd|D}|||t|}|t|d|D]}|t|dq|dS)Nrtrcss|]}|D] }|Vq qdSrr )rrUrfr r r rKrz'TestGraphs.test_cube..rr)rOr4r7r;rErV)rr7Z vertices1edgeZ vertices2Z cubefacesfacer r r test_cubeDs  zTestGraphs.test_cubec Cstd}t|}|t|dt|}|D]}|t|dq0tdd|D}|||t|}tt }|D]}|t|d7<q~||dd||dd|D].} | } |t| d | D]} | | |qqdS) Nrt rcss|]}|D] }|Vq qdSrr )rrUrXr r r r`rz0TestGraphs.test_cuboctahedron..r rrr/) rOrSr7r;r4rErVr defaultdictr$r?) rr7Z cuboctahedronZverticesrUZ otherverticesZ cubofacesZ facesizesrYZvertexrXZcubevertr r r test_cuboctahedronSs&   zTestGraphs.test_cuboctahedronN)rrr rZr]r r r r rWBsrW__main__)[rtestrrrrxrrrandomrrrrcollections.abcr0 Exceptionrrrrr$rr%ZTestCaserr4rrrrrr>r8r9rSr<rirmrsrwryr~rrrrrrrrrrrrrrrrrrrrrr rrrrrrrrr!r'r*r+r,r-r.r0r1r>rBrDr2rOrSrVrWrmainr r r r s JRu     IVJ&t +     ) *  1