ó žÃÒYc@sdZddlmZddlmZddlmZddlmZddlmZddl m Z ddl m Z dd l m Z dd l m Z dd l mZd efd „ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdS(s@Unit tests for the :mod:`networkx.algorithms.tournament` module.iÿÿÿÿ(t combinations(t assert_equal(t assert_false(t assert_true(tDiGraph(t is_reachable(tis_strongly_connected(t is_tournament(trandom_tournament(thamiltonian_pathtTestIsTournamentcBs2eZdZd„Zd„Zd„Zd„ZRS(sPUnit tests for the :func:`networkx.tournament.is_tournament` function. cCs<tƒ}|jddddd d gƒtt|ƒƒdS( Niiii(ii(ii(ii(ii(ii(ii(Rtadd_edges_fromRR(tselftG((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyttest_is_tournaments cCsLtƒ}|jdddd d d gƒ|jddƒtt|ƒƒdS( s%A tournament must have no self-loops.iiiiN(ii(ii(ii(ii(ii(ii(RR tadd_edgeRR(R R ((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyttest_self_loops#s cCs9tƒ}|jdddd d gƒtt|ƒƒdS( sjA tournament must not have any pair of nodes without at least one edge joining the pair. iiiiN(ii(ii(ii(ii(ii(RR RR(R R ((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyttest_missing_edges*s cCsLtƒ}|jdddd d d gƒ|jddƒtt|ƒƒdS( skA tournament must not have any pair of nodes with greater than one edge joining the pair. iiiiN(ii(ii(ii(ii(ii(ii(RR RRR(R R ((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyttest_bidirectional_edges3s (t__name__t __module__t__doc__RRRR(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyR s    tTestRandomTournamentcBseZdZd„ZRS(sTUnit tests for the :func:`networkx.tournament.random_tournament` function. cCs7x0tdƒD]"}tdƒ}tt|ƒƒq WdS(Ni i(trangeRRR(R tnR ((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyttest_graph_is_tournamentDs (RRRR(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyR>stTestHamiltonianPathcBs eZdZd„Zd„ZRS(sSUnit tests for the :func:`networkx.tournament.hamiltonian_path` function. csxtƒ‰ˆjddd d d d gƒtˆƒ}tt|ƒdƒtt‡fd†t||dƒDƒƒƒdS( Niiiiic3s%|]\}}|ˆ|kVqdS(N((t.0tutv(R (s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pys Us(ii(ii(ii(ii(ii(ii(RR R RtlenRtalltzip(R tpath((R s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyttest_path_is_hamiltonianPs   cs”tƒ‰ˆjd d d d d dgƒtˆƒ}tt|ƒdƒtt‡fd†t||dƒDƒƒƒt|dˆ|dkƒdS(sœTests that :func:`networkx.tournament.hamiltonian_path` returns a Hamiltonian cycle when provided a strongly connected tournament. iiiiic3s%|]\}}|ˆ|kVqdS(N((RRR(R (s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pys asiÿÿÿÿN(ii(ii(ii(ii(ii(ii(RR R RRRRR (R R!((R s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyttest_hamiltonian_cycleWs   -(RRRR"R#(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyRJs tTestReachabilitycBs)eZdZd„Zd„Zd„ZRS(sOUnit tests for the :func:`networkx.tournament.is_reachable` function. cCs/tdddgƒ}tt|ddƒƒdS(s$Tests for a reachable pair of nodes.iiiN(ii(ii(ii(RRR(R R ((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyttest_reachable_pairkscsItd„ttdƒdƒDƒƒ‰tt‡fd†ˆDƒƒƒdS(s2Tests that a node is always reachable from itself.css|]}t|ƒVqdS(N(tsorted(Rtp((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pys ssi ic3s!|]}tˆ||ƒVqdS(N(R(RR(R (s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pys tsN(RRRRR(R ((R s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyttest_same_node_is_reachableps%cCs/tdddgƒ}tt|ddƒƒdS(s'Tests for an unreachable pair of nodes.iiiN(ii(ii(ii(RRR(R R ((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyttest_unreachable_pairvs(RRRR%R(R)(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyR$es  tTestStronglyConnectedcBs eZdZd„Zd„ZRS(sXUnit tests for the :func:`networkx.tournament.is_strongly_connected` function. cCs)tdddgƒ}tt|ƒƒdS(s*Tests for a strongly connected tournament.iiiN(ii(ii(ii(RRR(R R ((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyttest_is_strongly_connected‚scCs)tdddgƒ}tt|ƒƒdS(s6Tests for a tournament that is not strongly connected.iiiN(ii(ii(ii(RRR(R R ((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyttest_not_strongly_connected‡s(RRRR+R,(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyR*|s N(Rt itertoolsRt nose.toolsRRRtnetworkxRtnetworkx.algorithms.tournamentRRRRR tobjectR RRR$R*(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_tournament.pyt s&