ó žÃÒYc@sndZddlmZddlmZddlmZddlZd„Zd„Z defd „ƒYZ dS( s1Unit tests for the chain decomposition functions.iÿÿÿÿ(tcycle(tislice(tTestCaseNccsKt|ƒ}t|ƒ}x,|D]$}tt||ƒƒVt|ƒqWdS(s§Yields cyclic permutations of the given sequence. For example:: >>> list(cycles('abc')) [('a', 'b', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b')] N(tlenRttupleRtnext(tseqtnt cycled_seqtx((s{/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_chains.pytcycless   cs,tˆƒ‰t‡fd†t|ƒDƒƒS(sÆDecide whether two sequences are equal up to cyclic permutations. For example:: >>> cyclic_equals('xyz', 'zxy') True >>> cyclic_equals('xyz', 'zyx') False c3s!|]}|tˆƒkVqdS(N(R(t.0R (tseq2(s{/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_chains.pys .s(RtanyR (tseq1R ((R s{/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_chains.pyt cyclic_equals!s tTestChainDecompositioncBs;eZdZd„Zd„Zd„Zd„Zd„ZRS(s0Unit tests for the chain decomposition function.cCsyttg|D]}tt|ƒƒ^q ƒƒ}xA|D],}t||ƒrQPnt||ƒr8Pq8q8W|jdƒdS(Nschain not found(tlisttreversedRRtfail(tselftchaintexpectedtetreversed_chaint candidate((s{/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_chains.pytassertContainsChain4s1 cCs¶d d ddddddddddddg}tj|ƒ}dddgddgdd gd!d"d#gd$d%d&gg}ttj|d dƒƒ}|jt|ƒt|ƒƒdS('Niiiiiiiii i troot(ii(ii(ii(ii(ii(ii(ii(ii (i i (ii(ii(ii(ii (ii(ii(ii(ii(ii(ii(ii(ii(ii (i i (i i(ii(ii(ii(tnxtGraphRtchain_decompositiont assertEqualR(RtedgestGRtchains((s{/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_chains.pyttest_decompositionAs    cCsŒtjddƒ}ttj|ddƒƒ}dd d gd d d gg}|jt|ƒt|ƒƒx|D]}|j||ƒqnWdS(NiiRiiii(ii(ii(ii(ii(ii(ii(Rt barbell_graphRRRRR(RR!R"RR((s{/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_chains.pyttest_barbell_graphXs  cCsótjddƒ}tjddƒ}tttdƒdƒƒ}tj||dtƒtj||ƒ}ttj |ƒƒ}dddgdddgdddgdddgg}|j t |ƒt |ƒƒx|D]}|j ||ƒqÕWdS(s4Test for a graph with multiple connected components.iiitabcdeftcopyiiiitatbtctdRtfN(ii(ii(ii(ii(ii(ii(R(R)(R)R*(R*R((R+R(RR,(R,R+( RR$tdicttziptranget relabel_nodestFalsetunionRRRRR(RR!tHtmappingR"RR((s{/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_chains.pyttest_disconnected_graphds    cCsátjddƒ}tjddƒ}tttdƒdƒƒ}tj||dtƒtj||ƒ}ttj |ddƒƒ}dddgdddgg}|j t |ƒt |ƒƒx|D]}|j ||ƒqÃWd S(s4Test for a single component of a disconnected graph.iiiR&R'RR(R)R*R+RR,N(R(R)(R)R*(R*R((R+R(RR,(R,R+( RR$R-R.R/R0R1R2RRRRR(RR!R3R4R"RR((s{/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_chains.pyt!test_disconnected_graph_root_nodevs  (t__name__t __module__t__doc__RR#R%R5R6(((s{/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_chains.pyR1s   ( R9t itertoolsRRtunittestRtnetworkxRR RR(((s{/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_chains.pyt s