a ze@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 A/opt/bitninja-python-dojo/embedded/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@seZdZddZdS) ReprWrappercCs t|jSr)reprvaluerr r r __repr__szReprWrapper.__repr__N)rrr rr r r r rsrc@seZdZddZddZdS)HashCountingIntcGs d|_dSNr hash_count)rargsr r r __init__"szHashCountingInt.__init__cCs|jd7_t|Sr )r intrrr r r r$szHashCountingInt.__hash__N)rrr r"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, assertEqualr1rr(rr2)ractualexpectedr r r test_uniquification6s    z TestJointOps.test_uniquificationcCs|t|jt|jdSr)r6lenr)r,rr r r test_len=szTestJointOps.test_lencCsb|jD]}|||jv||jvq|t|jjgg|t|jg}| ||j|dSr) r'r6r)r,r1r2 __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'r6r,r(r%typebasetyper1rrr2r3r=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)rJr&r6r3r=r2failrir 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) NrArBccrDrFbcrHZcbcfZbagb)r) intersectionr&r'r6r,r(r%rKrLr1rrr3r=r*r+rMrNrOidassertNotEqual)rrVr?rQr)zr r r test_intersectiones" "    ( zTestJointOps.test_intersectionc Csdd}dD]n}||}dD]Z}tttjtttfD]B}||}||}|||}| ||| |dupr|duq4qq dS)NcSst|| Sr)r3r\)s1s2r r r fzsz'TestJointOps.test_isdisjoint..f) rYr0abrGZababacrBrXrDrFrHTF) r(r3r=r*r+rMrNrO isdisjointr6 assertTrue) rrcZlargraZrargrQrbr7r8r 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&r6r3r=r2rTrUr 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) NrArBrdrDrGrFr0rHr[r?)r) differencer&r'r6r,r(r%rKrLr1rrr2r3r=r*r+rMrNrOrrVr?rQr 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)rir&r6r3r=r2rTrUr 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) NrArBabdrDrErFr0rHrI)r)symmetric_differencer&r'r6r,r(r%rKrLr1rrr2r3r=r*r+rMrNrOrjr 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)rnr&r6r3r=r2rTrUr r r test_xors zTestJointOps.test_xorcCs|||jt|j||jt|j||j|jkd||jt|j||jt|j||j|jkddSNFT)r6r)r3r%r=r^r&rr r r test_equalitys zTestJointOps.test_equalitycCs,ttgd}||}|t|ddS)N)ZabcdefZbcdZbdcbZfedZfedccba)mapr=r(r6r:)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)rdZabcdedefr0rGZcbs)rtr(rfZ assertFalser3issubset 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)loadsr6rKr3r=rR)rrVrzdupr 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 collectionsrGIteratorr6next 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]r6r)rrur)relemZnewtr rr test_deepcopys  zTestJointOps.test_deepcopycsNGdddtfddtdD}|D]}||_||_t|g|_q,dS)Nc@s eZdZdS)zTestJointOps.test_gc..ANrr r r r Asrc3s|] }VqdSrr .0rVrr r z'TestJointOps.test_gc..)r3rcyclesub)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(r3addr>removediscard)rrr)rcr 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(rr1rr<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(rr3r6r 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(ropenrTESTFNwriterMcloser6readrunlink)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|] }|jVqdSrrrrr r r rQrz.css|] }|jVqdSrrrr r r rSrcss|] }|jVqdSrrrr r r rUrsymmetric_difference_updatecss|] }|jVqdSrrrr r r rXrcss|] }|jVqdSrrrr r r rZrcss|] }|jVqdSrrrr r r r\r{css|] }|jVqdSrrrr r r r^r) r*r+rtrrr6sumr(rirrr3r=)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 rQcsrQr zCycle was not collected) objectweakrefrefr3rrRgcZcollectrf)rrQobjr 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-r4r9r;r@rSrWr`rgrhrkrlrorprrrvr}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%r6r3r&r1r2rr r r test_initts  zTestSet.test_initcCs0|td}||}|t|t|dSNrsr(rr^r]rr)rur r r test_constructor_identity}s z!TestSet.test_constructor_identitycCs$tgd}hd}|||dS)Nr r.rsr r.rsr3r6rr r r test_set_literals zTestSet.test_set_literalcCs4hd}|t|d|}|t|tdS)N>r r )r6r:poprKr#)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.rsr)r6)rrr)r rr !test_set_literal_evaluation_orders z)TestSet.test_set_literal_evaluation_ordercCs|tt|jdSr)r1r2hashr)rr r r test_hashszTestSet.test_hashcCs0|j||jt|t|jddSr)r)clearr6r3r:rr r r test_clears zTestSet.test_clearcCsD|j}||j||t|jt||t||jdSr)r)rr6r^r]rKrLrrr r r test_copys zTestSet.test_copycCsT|jd|d|j|j}|jd||j||t|jjgdS)NQ)r)rr>rr6r1r2rr r r test_adds    zTestSet.test_addcCs|jd|d|j|t|jjd|t|jjg|t|jg}| ||j||||j|||j||t|jj||jdSNr0r) r)r assertNotInr1KeyErrorr2r(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!r6rT)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)NrsrzKeyError should be {0}, not {1})r(r)rrrfr!formatrT)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)rrr1r2r(r=r%r>rr r r test_discards  zTestSet.test_discardcCs@tt|jD]}|j}|||jq|t|jjdSr)rr:r)rrr1r)rrVrr 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))rBrCrDrE)rFrGrHrIrA)rBrDrFrHZabcdaZahi)r)updater&r6r%r>r1rrr2r3r=r*r+rMrNrOr(rretvalr?rzr{rQr)r r r test_updates"    zTestSet.test_updatecCs8|jt|jO_|j|jD]}|||jq dSr)r)r3r&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))rBr?)rDrY)rFrZ)rHrYrAZcbc)r)intersection_updater&r6r%r>rr1rrr2r3r=r*r+rMrNrOr() rrr?rzr{rQr)ssrur r r test_intersection_updates$    z TestSet.test_intersection_updatecCs\|jt|jM_|j|jD]6}||jvrH||jvrH|||jq |||jq dSrr)r3r&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))rBrd)rDrGrFr0)rHrGrAZ abcdefghihZabaZcdefghihrBZefghih)r)difference_updater&r6r%r>rr1rrr2rr3r=r*r+rMrNrOr(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))rBrmrrrrA)r)rr&r6r%r>rr1rrr2r3r=r*r+rMrNrOr(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)rr6r()rrur r r test_inplace_on_selfPs  zTestSet.test_inplace_on_selfcCsF|d}t|}|t|t|d}t|tt|dS)NZgallahad) r(rproxyr6rMr gc_collectr1ReferenceError)rr)rzr 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__fsz.TestRichSetCompare.__gt__cSs d|_dSr) lt_calledr r r r __lt__isz.TestRichSetCompare.__lt__cSs d|_dSr) ge_calledr r r r __ge__lsz.TestRichSetCompare.__ge__cSs d|_dSr) le_calledr r r r __le__osz.TestRichSetCompare.__le__N)rrr r r rrr r r r TestRichSetCompareesrr)rfrr r r)rrZmysetZmyobjr r r test_rich_compareds   zTestSet.test_rich_compare test_c_apiz*C API test only available in a debug buildcCs|tddSNT)r6r3rrr r r rszTestSet.test_c_apiN)#rrr r3r(rLrrrrrrrrrrrrrrrrrrrrrrrrrunittestZ skipUnlessrrr r r r rps>      $ rc@s eZdZdS) SetSubclassNrr r r r rsrc@seZdZeZeZdS)TestSetSubclassN)rrr rr(r3rLr r r r rsrc@seZdZgdfddZdS)SetSubclassWithKeywordArgsNcCst||dSr)r3r")riterablenewargr r r r"sz#SetSubclassWithKeywordArgs.__init__)rrr r"r r r r rsrc@seZdZddZdS)TestSetSubclassWithKeywordArgscCstdddS)Nr )r)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&r6r3rr r r rs  zTestFrozenSet.test_initc Csnt}ttgtdtdttgtdtdttdttt||g }|tttt|ddS)Nr rYrr )r=rr6r:r3rtr])rrcefsr r r test_singleton_empty_frozensetsz,TestFrozenSet.test_singleton_empty_frozensetcCs0|td}||}|t|t|dSr)r(rr6r]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 )r6rr(rr3rrr:)rseqresultsrVr r!r rs  zTestFrozenSet.test_hashcCs$|j}|t|jt|dSr)r)rr6r]rr r r rs zTestFrozenSet.test_copycCsrttdtddg}||}|t|}||||t|t|i}d||<|||ddS)NrZabcdefgZapple*)rNrr(reversedr6r^r])rr$Zkey1Zkey2r,r r r test_frozen_as_dictkeys  z$TestFrozenSet.test_frozen_as_dictkeycCs"|d}|t|t|dS)NZabcdcda)r(r6r)rrcr 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 )rrmrVr r r"rcSs8tg}t|dD]}t|}||q|d|Sr )r=rr)rnumsrVnumr r r zf_ranges  z7TestFrozenSet.test_hash_effectiveness..zf_rangecss2tt|dD]}ttt||EdHqdSr )rr:rtr= itertools combinations)r)rVr r r powersetsz7TestFrozenSet.test_hash_effectiveness..powersetr csh|] }|@qSr r )rh)maskr r rz8TestFrozenSet.test_hash_effectiveness..r) r3rrrr=r6r:rtZ assertGreater) rrZ hashvaluesZ addhashvalueZ elemmasksr/r2rur-rPr )rVr5r test_hash_effectivenesss   $z%TestFrozenSet.test_hash_effectivenessN)rrr r=r(rLrrrrrr(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(r6rr 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 rYr)r(r=rr6r:r3rtr])rZ FrozensetrcFrr r r rsz4TestFrozenSetSubclass.test_singleton_empty_frozensetN) rrr r8r(r=rLrrr: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)rr6r3rr 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..) rr3rf startswithendswithsplitsortvaluesr6)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) rrrrrMr3rr6rrr)rrr r r test_print's  zTestBasicOps.test_printcCs|t|j|jdSr)r6r:r3lengthrr r r test_length2szTestBasicOps.test_lengthcCs||j|jdSrr6r3rr r r test_self_equality5szTestBasicOps.test_self_equalitycCs||j|jdSr)r6r3rrr r r test_equivalent_equality8sz%TestBasicOps.test_equivalent_equalitycCs||j|jdSr)r6r3rrrr r r r;szTestBasicOps.test_copycCs|j|jB}|||jdSrr3r6rrrGr r r test_self_union>s zTestBasicOps.test_self_unioncCs|jtB}|||jdSrr3 empty_setr6rrPr r r test_empty_unionBs zTestBasicOps.test_empty_unioncCst|jB}|||jdSr)rSr3r6rrPr r r test_union_emptyFs zTestBasicOps.test_union_emptycCs|j|j@}|||jdSrrOrPr r r test_self_intersectionJs z#TestBasicOps.test_self_intersectioncCs|jt@}||tdSrr3rSr6rPr r r test_empty_intersectionNs z$TestBasicOps.test_empty_intersectioncCst|j@}||tdSrrSr3r6rPr r r test_intersection_emptyRs z$TestBasicOps.test_intersection_emptycCs"|j|j}|||j dSrr3rer6rPr r r test_self_isdisjointVsz!TestBasicOps.test_self_isdisjointcCs|jt}||ddSr)r3rerSr6rPr r r test_empty_isdisjointZs z"TestBasicOps.test_empty_isdisjointcCst|j}||ddSr)rSrer3r6rPr r r test_isdisjoint_empty^s z"TestBasicOps.test_isdisjoint_emptycCs|j|jA}||tdSrr3r6rSrPr r r test_self_symmetric_differencebs z+TestBasicOps.test_self_symmetric_differencecCs|jtA}|||jdSrrWrPr r r test_empty_symmetric_differencefs z,TestBasicOps.test_empty_symmetric_differencecCs|j|j}||tdSrr_rPr r r test_self_differencejs z!TestBasicOps.test_self_differencecCs|jt}|||jdSrrRrPr r r test_empty_differencens z"TestBasicOps.test_empty_differencecCst|j}||tdSrrYrPr r r test_empty_difference_revrs z&TestBasicOps.test_empty_difference_revcCs>|jD]}|||jqt|j}||t|jdSr)r3r>rErr6__length_hint__r:)rvZsetiterr r r test_iterationvs  zTestBasicOps.test_iterationcCsJttjdD]6}t|j|}t|}||j|d|j|fqdS)Nr r~)rrrrr3rr6)rrrzrr r r r|s    zTestBasicOps.test_picklingcCsp|ttdWdn1s,0Y|ttdWdn1sb0YdS)Nr)r1r2r3rirrr 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()caserEr3rrJrrr 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)rsr z{3}rjrr r r r-s   zTestBasicOpsSingleton.setUpcCs|d|jdSrr>r3rr r r test_inszTestBasicOpsSingleton.test_incCs|d|jdS)Nr.rr3rr 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 setrrurs)rkoperatorrrEr3rrJrrr r r r-s   zTestBasicOpsTriple.setUpNrlr r r r rwsrwc@seZdZddZddZdS)TestBasicOpsStringcCs2d|_gd|_t|j|_t|j|_d|_dS)Nz string setr0r[r?rsrkrEr3rrJrr 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)abcrsr{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)r0r[rrr) rZcheck_warnings_warning_filters __enter__warnings simplefilter BytesWarningrkrEr3rrJrr 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)r2r r r r baditersrccs dVdSrr r r r r gooditersrc@s$eZdZddZddZddZdS)TestExceptionPropagationcCs|tttdSr)r1r2r3rrr r r test_instanceWithExceptionsz3TestExceptionPropagation.test_instanceWithExceptioncCsFtgdtdtddddttdtdttdS)Nrr r.rs)ZoneZtwoZthreerG)r3rrrr r r test_instancesWithoutExceptions   z7TestExceptionPropagation.test_instancesWithoutExceptioncCsHtgd}z|D]}|dgqWnty8Yn 0|ddS)Nrrz0no exception when changing size during iteration)r3rrrT)rr)rVr r r test_changingSizeWhileIteratings  z8TestExceptionPropagation.test_changingSizeWhileIteratingN)rrr rrrr r r r rs rc@seZdZddZdS) TestSetOfSetscCs\tdg}t|g}|}|t|t||||||t||dSr )r=r3rr6rKrrr)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.rr3rr r r r- szTestBinaryOps.setUpcCs||jtdddddS)Nr rsrrLrr 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}||tgddSNrsrr)r.rsrrrrrPr r r test_union_overlap.sz TestBinaryOps.test_union_overlapcCs(|jtdgB}||tgddSNrrrrPr r r test_union_non_overlap2sz$TestBinaryOps.test_union_non_overlapcCs"|jtd@}||tddSNr.rrrPr r r test_intersection_subset6sz&TestBinaryOps.test_intersection_subsetcCs*|jtgd@}||tgddSNrrrrPr r r test_intersection_superset:sz(TestBinaryOps.test_intersection_supersetcCs(|jtgd@}||tdgdSNrrrrPr r r test_intersection_overlap>sz'TestBinaryOps.test_intersection_overlapcCs |jtdg@}||tdSNrr_rPr r r test_intersection_non_overlapBsz+TestBinaryOps.test_intersection_non_overlapcCs |jtd}||ddS)NrFr[rPr r r test_isdisjoint_subsetFsz$TestBinaryOps.test_isdisjoint_subsetcCs$|jtgd}||ddS)NrFr[rPr r r test_isdisjoint_supersetJsz&TestBinaryOps.test_isdisjoint_supersetcCs$|jtgd}||ddS)NrFr[rPr r r test_isdisjoint_overlapNsz%TestBinaryOps.test_isdisjoint_overlapcCs"|jtdg}||ddS)NrTr[rPr r r test_isdisjoint_non_overlapRsz)TestBinaryOps.test_isdisjoint_non_overlapcCs$|jtdA}||tdgdSNrrrrPr r r test_sym_difference_subsetVsz(TestBinaryOps.test_sym_difference_subsetcCs$|jtdA}||tdgdSNrrrrPr r r test_sym_difference_supersetZsz*TestBinaryOps.test_sym_difference_supersetcCs&|jtdA}||tgddSNr)r.rsrrrrPr r r test_sym_difference_overlap^sz)TestBinaryOps.test_sym_difference_overlapcCs(|jtdgA}||tgddSrrrPr r r test_sym_difference_non_overlapbsz-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-iszTestUpdateOps.setUpcCs*|jtdgO_||jtddSrrrr r r rlszTestUpdateOps.test_union_subsetcCs0|jtgdO_||jtgddSrrrr r r rpsz!TestUpdateOps.test_union_supersetcCs0|jtgdO_||jtgddSrrrr r r rtsz TestUpdateOps.test_union_overlapcCs.|jtdgO_||jtgddSrrrr r r rxsz$TestUpdateOps.test_union_non_overlapcCs.|jtgd||jtgddSr)r3rr6rr 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)r3rr6rr 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)r3rr6rr 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)r3rr6rr r r test_difference_method_callsz)TestUpdateOps.test_difference_method_callN)rrr r-rrrrrrrrrrrrrrrrrrrrr r r r rhs*rc@s|eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS) TestMutatecCsgd|_t|j|_dS)Nrz)rEr3rr r r r-s zTestMutate.setUpcCs"|jd||jtddS)Nr?rGr3rr6rr r r test_add_presents zTestMutate.test_add_presentcCs"|jd||jtddS)Nr,rCrrr r r test_add_absents zTestMutate.test_add_absentcCsJt}d}|jD]&}|||d7}|t||q|||jdS)Nrr )r3rErr6r:)rtmp expected_lenrfr r r test_add_until_fulls  zTestMutate.test_add_until_fullcCs"|jd||jtddS)Nr[Zac)r3rr6rr r r test_remove_presents zTestMutate.test_remove_presentcCs2z|jd|dWnty,Yn0dS)Nr,z7Removing missing element should have raised LookupError)r3rrT LookupErrorrr r r test_remove_absents   zTestMutate.test_remove_absentcCs@t|j}|jD]*}|j||d8}|t|j|qdSr )r:r3rErr6)rrrfr r r test_remove_until_emptys    z"TestMutate.test_remove_until_emptycCs"|jd||jtddS)Nr?rdr3rr6rr r r test_discard_presents zTestMutate.test_discard_presentcCs"|jd||jtddS)Nr,rGrrr r r test_discard_absents zTestMutate.test_discard_absentcCs |j|t|jddSr)r3rr6r:rr r r rs zTestMutate.test_clearcCsLi}|jrd||j<q|t|t|j|jD]}|||q6dSr)r3rr6r:rEr>)rZpoppedrfr r r rs  zTestMutate.test_popcCs$|jd||jt|jdS)Nr r3rr6rErr r r test_update_empty_tuples z"TestMutate.test_update_empty_tuplecCs$|jd||jt|jdS)Nr/rrr r r test_update_unit_tuple_overlaps z)TestMutate.test_update_unit_tuple_overlapcCs*|jd||jt|jdgdS)N)r0r_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) TestSubsetsrxry)<=>===!=>s rc@s*eZdZedgZeddgZdZdZdS)TestSubsetPartialr r.z&one a non-empty proper subset of otherrNrr r r r rFs  rc@s(eZdZedgZedgZdZdZdS)TestSubsetNonOverlapr r.zneither empty, neither containsrNrr r r r rNs  rc@s|eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS)TestOnlySetsInBinaryOpscCsT||j|jkd||j|jkd||j|jkd||j|jkddSrq)r6rr3rr r r test_eq_neXsz"TestOnlySetsInBinaryOps.test_eq_necstfddtfddtfddtfddtfddtfddtfddtfd ddS) Ncs jjkSrr3rr rr r `rz:TestOnlySetsInBinaryOps.test_ge_gt_le_lt..cs jjkSrrr rr r rarcs jjkSrrr rr r rbrcs jjkSrrr rr r rcrcs jjkSrrr3r rr r rercs jjkSrrr rr r rfrcs jjkSrrr rr r rgrcs jjkSrrr rr r rhr)r1r2rr rr test_ge_gt_le_lt_sz(TestOnlySetsInBinaryOps.test_ge_gt_le_ltcCs6z|j|jO_Wnty&Yn 0|ddSNzexpected TypeErrorr3rr2rTrr r r test_update_operatorjs  z,TestOnlySetsInBinaryOps.test_update_operatorcCs.|jr|j|jn|t|jj|jdSr)otherIsIterabler3rrr1r2rr r r rrsz#TestOnlySetsInBinaryOps.test_updatecsVtfddtfddjr>jjntjjjdS)Ncs jjBSrrr rr r ryrz4TestOnlySetsInBinaryOps.test_union..cs jjBSrrr rr r rzr)r1r2rr3rJrrr rr rSxs 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)rr3rrr1r2rr r r rs z0TestOnlySetsInBinaryOps.test_intersection_updatecsVtfddtfddjr>jjntjjjdS)Ncs jj@Srrr rr r rrz;TestOnlySetsInBinaryOps.test_intersection..cs jj@Srrr rr r rr)r1r2rr3r\rrr rr r`s 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)rr3rrr1r2rr 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)r1r2rr3rnrrr 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)rr3rrr1r2rr r r rs z.TestOnlySetsInBinaryOps.test_difference_updatecsVtfddtfddjr>jjntjjjdS)Ncs jjSrrr rr r rrz9TestOnlySetsInBinaryOps.test_difference..cs jjSrrr rr r rr)r1r2rr3rirrr rr rks z'TestOnlySetsInBinaryOps.test_differenceN)rrr rrrrrSrrr`rrrrrrkr r r r rVs rc@seZdZddZdS)TestOnlySetsNumericcCstd|_d|_d|_dS)NrFr3rrrr r r r-s zTestOnlySetsNumeric.setUpNrlr r r r rsrc@seZdZddZdS)TestOnlySetsDictcCs td|_ddd|_d|_dS)Nrr.r)r rsTrrr r r r-s  zTestOnlySetsDict.setUpNrlr r r r rsrc@seZdZddZdS)TestOnlySetsOperatorcCstd|_tj|_d|_dS)NrF)r3rxrrrrr 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)NrrGTrrr 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)r3rr5rr6r:rrfrrZdup_listZset_listrVr r r rs   zTestCopying.test_copycCsdt|j}t|td}t|jtd}|t|t|tt|D]}|||||qFdSr )rrr3r5rr6r: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)rsrrrr r r r-+szTestCopyingNested.setUpNrlr r r r r*src@s4eZdZddZddZddZddZd d Zd S) TestIdentitiescCstd|_td|_dS)NZ abracadabraZalacazam)r3r0r[rr r r r-1s zTestIdentities.setUpcCs|j|j}}||||k||||k|||@|k|||@|k|||B|k|||B|k|||A||BkdSr)r0r[rfrr0r[r r r test_binopsVsSubsets5sz#TestIdentities.test_binopsVsSubsetscCsj|j|j}}|||@||@|||B||B|||A||A||krf|||||dSr)r0r[r6r^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)r0r[r6rr r r test_summationsGs$zTestIdentities.test_summationscCsZ|j|jt}}}||||@|||||@||||@||A@|dSr)r0r[r3r6)rr0r[rur r r test_exclusionRszTestIdentities.test_exclusionN)rrr r-rrrrr r r r r0s   rccs|D] }|VqdSrr seqnrVr r r R[src@seZdZddZddZdS)GcCs ||_dSrrrrr r r r"bsz G.__init__cCs |j|SrrrUr r r __getitem__dsz G.__getitem__N)rrr r"r r r r r r`src@s$eZdZddZddZddZdS)IcCs||_d|_dSrrrr r r r"isz I.__init__cCs|Srr rr r r __iter__lsz I.__iter__cCs2|jt|jkrt|j|j}|jd7_|Sr rVr:rrrrfr r r __next__ns z I.__next__Nrrr r"r"r%r r r r r!gsr!c@seZdZddZddZdS)IgcCs||_d|_dSrrrr r r r"vsz Ig.__init__ccs|jD] }|VqdSrr)rvalr r r r"ys z Ig.__iter__Nrrr r"r"r r r r r'tsr'c@seZdZddZddZdS)XcCs||_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 r"r%r r r r r*}sr*c@seZdZddZddZdS)NcCs||_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$eZdZddZddZddZdS)EcCs||_d|_dSrrrr r r r"sz E.__init__cCs|Srr rr r r r"sz E.__iter__cCs dddS)Nrsrr rr r r r%sz E.__next__Nr&r r r r r,sr,c@s$eZdZddZddZddZdS)ScCsdSrr 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)NcSs|Srr rRr r r rrzL..)r.rtrr'rrr r r Lsr0c@s$eZdZddZddZddZdS)TestVariousIteratorArgsc CsttfD]}ddtddtdddfD]x}ttttttfD],}| t |||t dt ||t dq:| t |t|| t |t|| t|t|q&qdS) N123rYrZdog333333?rr )r3r=rrr!r'r-r0rr6r5rr1r2r*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) NZnovemberr2rYrr3r4r5rdecemberr )r3rrJr\rirnrerr!r'r0r isinstanceboolr6r5rr1r2r*r+r6r,)rr)rmethr7r8r7r 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) Nr2rYrr3r4r5rr8)rrrrZjanuaryr )rrr!r'r-r0rr3rrrNr6r5rr1r2r*r+r6r,)rrZmethnamer7r)rur 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@r1r6rrBrCr)rZset1r r r test_8420_set_merges z!TestWeirdBugs.test_8420_set_mergecCsXttd}||tdt|}|ttd}|tdt|dS)Nr )r3rrrrrN)rr)sir0r 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)r3rrrr )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 WntyRtVYn0dSr)rr=rr2r)UrRr-r r r r2 s  r2cs0ddt|Dtfddtt|DS)NcSsg|]}t|gqSr r=)rrRr 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)Ncs g|]}|krt|gqSr rMrr_rRrr 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|Sr)r3itemsrr=)rrcredgesrZv3Zv4Zv5r r r faces)s&      "rVc@seZdZddZddZdS) TestGraphscCstd}t|}|t|d|D]}|t|dq(tdd|D}|||t|}|t|d|D]}|t|dq|dS)Nrsrcss|]}|D] }|Vq qdSrr )rrUrfr r r rLrz'TestGraphs.test_cube..rr)rOr3r6r:rErV)rr7Z vertices1edgeZ vertices2Z cubefacesfacer r r test_cubeEs  zTestGraphs.test_cubec Cstd}t|}|t|dt|}|D]}|t|dq0tdd|D}|||t|}tt }|D]}|t|d7<q~||dd||dd|D].} | } |t| d | D]} | | |qqdS) Nrs rcss|]}|D] }|Vq qdSrr )rrUrXr r r rarz0TestGraphs.test_cuboctahedron..r rrr.) rOrSr6r:r3rErVr defaultdictr#r>) rr7Z cuboctahedronZverticesrUZ otherverticesZ cubofacesZ facesizesrYZvertexrXZcubevertr r r test_cuboctahedronTs&   zTestGraphs.test_cuboctahedronN)rrr rZr]r r r r rWCsrW__main__)[rtestrrrrxrrrandomrrrrcollections.abcr0 Exceptionrrrrr#rr$ZTestCaserr3rrrrrr=r8r9rSr<rirmrsrwryr~rrrrrrrrrrrrrrrrrrrrrr rrrrrrrrr!r'r*r+r,r-r.r0r1r>rBrDr2rOrSrVrWrmainr r r r s JRu     IVJ&t +     ) *  1