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@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_selfcCs>|d}t|}|t|t|d}|tt|dS)NZgallahad)r(rproxyr6rMr1ReferenceError)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__esz.TestRichSetCompare.__gt__cSs d|_dSr) lt_calledrr r r __lt__hsz.TestRichSetCompare.__lt__cSs d|_dSr) ge_calledrr r r __ge__ksz.TestRichSetCompare.__ge__cSs d|_dSr) le_calledrr r r __le__nsz.TestRichSetCompare.__le__N)rrr r r r rr r r r TestRichSetComparedsrr)rfrr 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)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.r1rur,rPr )rVr4r test_hash_effectivenesss   $z%TestFrozenSet.test_hash_effectivenessN)rrr r=r(rLrrrrrr'r(r6r r r r rs   rc@s eZdZdS)FrozenSetSubclassNrr r r r r7sr7c@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 r7r(r=rLrrr9rr r r r r8s r8c@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_length1szTestBasicOps.test_lengthcCs||j|jdSrr6r3rr r r test_self_equality4szTestBasicOps.test_self_equalitycCs||j|jdSr)r6r3rrr r r test_equivalent_equality7sz%TestBasicOps.test_equivalent_equalitycCs||j|jdSr)r6r3rrrr r r r:szTestBasicOps.test_copycCs|j|jB}|||jdSrr3r6rrrFr r r test_self_union=s zTestBasicOps.test_self_unioncCs|jtB}|||jdSrr3 empty_setr6rrOr r r test_empty_unionAs zTestBasicOps.test_empty_unioncCst|jB}|||jdSr)rRr3r6rrOr r r test_union_emptyEs zTestBasicOps.test_union_emptycCs|j|j@}|||jdSrrNrOr r r test_self_intersectionIs z#TestBasicOps.test_self_intersectioncCs|jt@}||tdSrr3rRr6rOr r r test_empty_intersectionMs z$TestBasicOps.test_empty_intersectioncCst|j@}||tdSrrRr3r6rOr r r test_intersection_emptyQs z$TestBasicOps.test_intersection_emptycCs"|j|j}|||j dSrr3rer6rOr r r test_self_isdisjointUsz!TestBasicOps.test_self_isdisjointcCs|jt}||ddSr)r3rerRr6rOr r r test_empty_isdisjointYs z"TestBasicOps.test_empty_isdisjointcCst|j}||ddSr)rRrer3r6rOr r r test_isdisjoint_empty]s z"TestBasicOps.test_isdisjoint_emptycCs|j|jA}||tdSrr3r6rRrOr r r test_self_symmetric_differenceas z+TestBasicOps.test_self_symmetric_differencecCs|jtA}|||jdSrrVrOr r r test_empty_symmetric_differencees z,TestBasicOps.test_empty_symmetric_differencecCs|j|j}||tdSrr^rOr r r test_self_differenceis z!TestBasicOps.test_self_differencecCs|jt}|||jdSrrQrOr r r test_empty_differencems z"TestBasicOps.test_empty_differencecCst|j}||tdSrrXrOr r r test_empty_difference_revqs z&TestBasicOps.test_empty_difference_revcCs>|jD]}|||jqt|j}||t|jdSr)r3r>rDrr6__length_hint__r:)rvZsetiterr r r test_iterationus  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<rGrHrJrLrMrrPrSrTrUrWrYr[r\r]r_r`rarbrcrfrrgr r r r r;s0  r;c@seZdZddZdS)TestBasicOpsEmptycCs4d|_g|_t|j|_t|j|_d|_d|_dS)Nz empty setrzset()caserDr3rrIrrr r r r-s   zTestBasicOpsEmpty.setUpNrrr r-r r r r rhsrhc@s$eZdZddZddZddZdS)TestBasicOpsSingletoncCs6d|_dg|_t|j|_t|j|_d|_d|_dS)Nzunit set (number)rsr z{3}rirr 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-rnrpr r r r rlsrlc@s$eZdZddZddZddZdS)TestBasicOpsTuplecCs6d|_dg|_t|j|_t|j|_d|_d|_dS)Nzunit set (tuple)rzeror z {(0, 'zero')}rirr r r r-s   zTestBasicOpsTuple.setUpcCs|d|jdS)Nrsrmrr r r rnszTestBasicOpsTuple.test_incCs|d|jdS)N rorr r r rpszTestBasicOpsTuple.test_not_inNrqr r r r rrsrrc@seZdZddZdS)TestBasicOpsTriplecCs<d|_ddtjg|_t|j|_t|j|_d|_d|_dS)Nz triple setrrtrs)rjoperatorrrDr3rrIrrr r r r-s   zTestBasicOpsTriple.setUpNrkr r r r rvsrvc@seZdZddZddZdS)TestBasicOpsStringcCs2d|_gd|_t|j|_t|j|_d|_dS)Nz string setr0r[r?rsrjrDr3rrIrr r r r-s    zTestBasicOpsString.setUpcCs |dSrrGrr r r r<szTestBasicOpsString.test_reprNrrr r-r<r r r r rxsrxc@seZdZddZddZdS)TestBasicOpsBytescCs2d|_gd|_t|j|_t|j|_d|_dS)Nz bytes set)abcrsrzrr 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[r~rr) rZcheck_warnings_warning_filters __enter__warnings simplefilter BytesWarningrjrDr3rrIrr 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 rsrrKrr r r test_eq"szTestBinaryOps.test_eqcCs$|jtdgB}||tddSNr.rrrOr r r test_union_subset%szTestBinaryOps.test_union_subsetcCs*|jtgdB}||tgddSNr.rrrrOr r r test_union_superset)sz!TestBinaryOps.test_union_supersetcCs*|jtgdB}||tgddSNrsrr)r.rsrrrrrOr r r test_union_overlap-sz TestBinaryOps.test_union_overlapcCs(|jtdgB}||tgddSNrrrrOr r r test_union_non_overlap1sz$TestBinaryOps.test_union_non_overlapcCs"|jtd@}||tddSNr.rrrOr r r test_intersection_subset5sz&TestBinaryOps.test_intersection_subsetcCs*|jtgd@}||tgddSNrrrrOr r r test_intersection_superset9sz(TestBinaryOps.test_intersection_supersetcCs(|jtgd@}||tdgdSNrrrrOr r r test_intersection_overlap=sz'TestBinaryOps.test_intersection_overlapcCs |jtdg@}||tdSNrr^rOr r r test_intersection_non_overlapAsz+TestBinaryOps.test_intersection_non_overlapcCs |jtd}||ddS)NrFrZrOr r r test_isdisjoint_subsetEsz$TestBinaryOps.test_isdisjoint_subsetcCs$|jtgd}||ddS)NrFrZrOr r r test_isdisjoint_supersetIsz&TestBinaryOps.test_isdisjoint_supersetcCs$|jtgd}||ddS)NrFrZrOr r r test_isdisjoint_overlapMsz%TestBinaryOps.test_isdisjoint_overlapcCs"|jtdg}||ddS)NrTrZrOr r r test_isdisjoint_non_overlapQsz)TestBinaryOps.test_isdisjoint_non_overlapcCs$|jtdA}||tdgdSNrrrrOr r r test_sym_difference_subsetUsz(TestBinaryOps.test_sym_difference_subsetcCs$|jtdA}||tdgdSNrrrrOr r r test_sym_difference_supersetYsz*TestBinaryOps.test_sym_difference_supersetcCs&|jtdA}||tgddSNr)r.rsrrrrOr r r test_sym_difference_overlap]sz)TestBinaryOps.test_sym_difference_overlapcCs(|jtdgA}||tgddSrrrOr 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)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 rgs*rc@s|eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS) TestMutatecCsgd|_t|j|_dS)Nry)rDr3rr 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 )r3rDrr6r:)rtmp expected_lenrer 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:r3rDrr6)rrrer 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:rDr>)rZpoppedrer r r rs  zTestMutate.test_popcCs$|jd||jt|jdS)Nr r3rr6rDrr 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)<=>===!=>_rz:TestOnlySetsInBinaryOps.test_ge_gt_le_lt..cs jjkSrrr rr r r`rcs jjkSrrr rr r rarcs jjkSrrr rr r rbrcs jjkSrrr3r rr r rdrcs jjkSrrr rr r rercs jjkSrrr rr r rfrcs jjkSrrr rr r rgr)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_operatoris  z,TestOnlySetsInBinaryOps.test_update_operatorcCs.|jr|j|jn|t|jj|jdSr)otherIsIterabler3rrr1r2rr r r rqsz#TestOnlySetsInBinaryOps.test_updatecsVtfddtfddjr>jjntjjjdS)Ncs jjBSrrr rr r rxrz4TestOnlySetsInBinaryOps.test_union..cs jjBSrrr rr r ryr)r1r2rr3rJrrr rr rSws 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 rUs rc@seZdZddZdS)TestOnlySetsNumericcCstd|_d|_d|_dS)NrFr3rrrr r r r-s zTestOnlySetsNumeric.setUpNrkr r r r rsrc@seZdZddZdS)TestOnlySetsDictcCs td|_ddd|_d|_dS)Nrr.r)r rsTrrr r r r-s  zTestOnlySetsDict.setUpNrkr r r r rsrc@seZdZddZdS)TestOnlySetsOperatorcCstd|_tj|_d|_dS)NrF)r3rwrrrrr r r r-s zTestOnlySetsOperator.setUpNrkr r r r rsrc@seZdZddZdS)TestOnlySetsTuplecCstd|_d|_d|_dS)NrrTrrr r r r-s zTestOnlySetsTuple.setUpNrkr r r r rsrc@seZdZddZdS)TestOnlySetsStringcCstd|_d|_d|_dS)NrrGTrrr r r r-s zTestOnlySetsString.setUpNrkr 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.setUpNrkr 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 rsrc@seZdZddZdS)TestCopyingEmptycCs t|_dSrrrr r r r-szTestCopyingEmpty.setUpNrkr r r r r sr c@seZdZddZdS)TestCopyingSingletoncCstdg|_dS)NZhellorrr r r r-szTestCopyingSingleton.setUpNrkr r r r rsrc@seZdZddZdS)TestCopyingTriplecCstgd|_dS)N)rtrNrrr r r r-szTestCopyingTriple.setUpNrkr r r r rsrc@seZdZddZdS)TestCopyingTuplecCstdg|_dS)Nr r.rrr r r r-$szTestCopyingTuple.setUpNrkr r r r r#src@seZdZddZdS)TestCopyingNestedcCstdg|_dS)N)r)rsrrrr r r r-*szTestCopyingNested.setUpNrkr r r r r)src@s4eZdZddZddZddZddZd d Zd S) TestIdentitiescCstd|_td|_dS)NZ abracadabraZalacazam)r3r0r[rr r r r-0s zTestIdentities.setUpcCs|j|j}}||||k||||k|||@|k|||@|k|||B|k|||B|k|||A||BkdSr)r0r[rfrr0r[r r r test_binopsVsSubsets4sz#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_summationsFs$zTestIdentities.test_summationscCsZ|j|jt}}}||||@|||||@||||@||A@|dSr)r0r[r3r6)rr0r[rtr r r test_exclusionQszTestIdentities.test_exclusionN)rrr r-rrrrr r r r r/s   rccs|D] }|VqdSrr seqnrVr r r RZsrc@seZdZddZddZdS)GcCs ||_dSrrrrr r r r"asz G.__init__cCs |j|SrrrUr r r __getitem__csz G.__getitem__N)rrr r"rr r r r r_src@s$eZdZddZddZddZdS)IcCs||_d|_dSrrrr r r r"hsz I.__init__cCs|Srr rr r r __iter__ksz I.__iter__cCs2|jt|jkrt|j|j}|jd7_|Sr rVr:rrrrer r r __next__ms z I.__next__Nrrr r"r!r$r r r r r fsr c@seZdZddZddZdS)IgcCs||_d|_dSrrrr r r r"usz Ig.__init__ccs|jD] }|VqdSrr)rvalr r r r!xs z Ig.__iter__Nrrr r"r!r r r r r&ssr&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 Lsr/c@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,r/rr6r5rr1r2r)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) NZnovemberr1rYrr2r3r4rdecemberr )r3rrJr\rirnrerr r&r/r isinstanceboolr6r5rr1r2r)r*r5r+)rr)rmethr6r8r7r 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) Nr1rYrr2r3r4rr7)rrrrZjanuaryr )rrr r&r,r/rr3rrrNr6r5rr1r2r)r*r5r+)rrZmethnamer6r)rur r r test_inplace_methodss z,TestVariousIteratorArgs.test_inplace_methodsN)rrr rr;r<r r r r r0s r0c@seZdZddZddZdS)bad_eqcCstrtt||uSr)be_badset2rr5rr 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__Nr@r r r r rAsrAc@s$eZdZddZddZddZdS) TestWeirdBugscCsZdath}ddtdDada|t|jtdath}tdiada| tdS)NFcSsh|] }tqSr )r=rr r r r5rz4TestWeirdBugs.test_8420_set_merge..KT) r>r=rr?r1r5rrArBr)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 rIr r r)sr)csh|] }qSr r r)r)r r r5rz6TestWeirdBugs.test_merge_and_mutate..rr)r3rrrr )r)rr test_merge_and_mutates z#TestWeirdBugs.test_merge_and_mutateN)rrr rErGrJr r r r rCs rCccsXt|}z0tt|g}t|D]}|V||BVq WntyRtVYn0dSr)rr=rr1r)UrRr,r r r r1 s  r1cs0ddt|Dtfddtt|DS)NcSsg|]}t|gqSr r=)rrRr r r r!rzcube..cs&g|]tfddDfqS)csg|] }|AqSr r )rr)r.r r r!rz#cube...rL)rZ singletonsr.r r!s)rr*r1r r rMr cubes  rNcshi}|D]Z|D]Lfdd|D}fdd|D}t|||tg<qq|S)Ncs g|]}|krt|gqSr rLrr_rRrr r r!#rzlinegraph..cs g|]}|krt|gqSr rLrOrPr r r!$rrL)rr/Znxnyr rPr linegraphs rRc 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&      "rUc@seZdZddZddZdS) TestGraphscCstd}t|}|t|d|D]}|t|dq(tdd|D}|||t|}|t|d|D]}|t|dq|dS)Nrsrcss|]}|D] }|Vq qdSrr )rrTrer r r rKrz'TestGraphs.test_cube..rr)rNr3r6r:rDrU)rr6Z 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) Nrs rcss|]}|D] }|Vq qdSrr )rrTrWr r r r`rz0TestGraphs.test_cuboctahedron..r rrr.) rNrRr6r:r3rDrUr defaultdictr#r>) rr6Z cuboctahedronZverticesrTZ otherverticesZ cubofacesZ facesizesrXZvertexrWZcubevertr r r test_cuboctahedronSs&   zTestGraphs.test_cuboctahedronN)rrr rYr\r r r r rVBsrV__main__)[rtestrrrrwrrrandomrrrrcollections.abcr/ Exceptionrrrrr#rr$ZTestCaserr3rrrrrr=r7r8rRr;rhrlrrrvrxr}rrrrrrrrrrrrrrrrrrrrrrr rrrrrrrr r&r)r*r+r,r-r/r0r=rArCr1rNrRrUrVrmainr r r r s JRu     IVJ&t +     ) *  1