ó ŸÃÒYc@sÁdZddlZddlmZddlmZddlmZddlZddlm Z ddd„ƒYZ d dd „ƒYZ d dd „ƒYZ d dd„ƒYZ ddd„ƒYZdS(s=Unit tests for the :mod:`networkx.generators.lattice` module.iÿÿÿÿN(t assert_equal(t assert_true(t assert_raises(tassert_edges_equaltTestGrid2DGraphcBsVeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z RS( s@Unit tests for :func:`networkx.generators.lattice.grid_2d_graph`cCs9d\}}tj||ƒ}tt|ƒ||ƒdS(Nii(ii(tnxt grid_2d_graphRtlen(tselftmtntG((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyttest_number_of_verticess cCsed\}}tj||ƒ}dddd||d|d|dg}ttj|ƒ|ƒdS(Niiiiii(ii(RRRtdegree_histogram(RR R R texpected_histogram((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyttest_degree_distributions -cCsfd\}}tj||ƒ}tj||dtjƒƒ}t|j|jƒt|j|jƒdS(Niit create_using(ii(RRtDiGraphRtsucctadjtpred(RR R R tH((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyt test_directeds  cCsed\}}tj||ƒ}tj||dtjƒƒ}tt|jƒƒt|jƒƒƒdS(NiiR(ii(RRt MultiGraphRtlisttedges(RR R R R((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyttest_multigraph s c Cs tjdddtƒ}tt|jƒƒiƒxÒddtjdƒfddtjdƒfddtjdƒfddtjdƒfddtjdƒfddtjƒfddtjƒfgD]=\}}}tj||dtƒ}t tj ||ƒƒqÅWdS(Nitperiodiciiiii( RRtTrueRtdicttdegreet cycle_graphtcircular_ladder_grapht cubical_graphRtcould_be_isomorphic(RR R R R((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyt test_periodic&s-%cCsftjdddtƒ}tjdddtdtjƒƒ}t|j|jƒt|j|jƒdS(NiiRR(RRRRRRRR(RR R((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyttest_periodic_directed3s$cCsetjdddtƒ}tjdddtdtjƒƒ}tt|jƒƒt|jƒƒƒdS(NiiRR(RRRRRRR(RR R((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyttest_periodic_multigraph9s$cCsÁtjdddtƒ}tjtdƒtdƒdtƒ}ttj||ƒƒtjdddtƒ}ttj||ƒƒtjddƒ}tjtdƒtdƒƒ}t||ƒdS(NiiRtabcdtefii(RRRtrangeRt is_isomorphicR(RR R((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyttest_node_input>s$( t__name__t __module__t__doc__R RRRR#R$R%R*(((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyR s      t TestGridGraphcBs eZdZd„Zd„ZRS(s=Unit tests for :func:`networkx.generators.lattice.grid_graph`c Csxd d d d gD]{\}}||g}tj|ƒ}tt|ƒ||ƒttj|ƒdddd||d|d|dgƒqWxkd dgD]]\}}||g}tj|ƒ}tt|ƒ||ƒttj|tjdƒƒƒqŸWdS(s´grid_graph([n,m]) is a connected simple graph with the following properties: number_of_nodes = n*m degree_histogram = [0,0,4,2*(n+m)-8,(n-2)*(m-2)] iiiiiiiN(ii(ii(ii(ii(ii(ii(Rt grid_graphRRR RR)t path_graph(RR R tdimtg((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyttest_grid_graphKs ' cCsctjtddƒtddƒgƒ}tt|ƒdƒttj|tjddgƒƒƒdS(Nii iiii(RR/R(RRRR)(RR ((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyR*as'(R+R,R-R3R*(((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyR.Is tTestHypercubeGraphcBs eZdZd„Zd„ZRS(sBUnit tests for :func:`networkx.generators.lattice.hypercube_graph`cCs‚x{dtjƒfdtjdƒfdtjdƒfdtjƒfgD]1\}}tj|ƒ}ttj||ƒƒqIWdS(Niiiii(Rt null_graphR0RR!thypercube_graphRR"(RR RR ((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyttest_special_casesis$1cCs[xTtddƒD]C}tj|ƒ}dg|d|g}ttj|ƒ|ƒqWdS(Nii ii(R(RR6RR (RR R R((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyRos(R+R,R-R7R(((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyR4gs tTestTriangularLatticeGraphcBs2eZdZd„Zd„Zd„Zd„ZRS(sFTests for :func:`networkx.generators.lattice.triangular_lattice_graph`cCsvxyddd d d d gD]_\}}tj||ƒ}|dd}tt|ƒ|dd||d|ddƒqWxó|jƒD]å\}}|||f}||krÎt|d|f|kƒn||kr÷t||df|kƒn||kr‰|dks|dr‰||ks3|ddr‰t|d|df|kpg|d|df|kƒq‰q‰WdS( s4Tests that the graph is really a triangular lattice.iiiiiN(ii(ii(ii(ii(ii(ii(Rttriangular_lattice_graphRRtnodesR(RR R R tNtitjtnbrs((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyttest_lattice_pointsxs%7  <cCs´tjdddtjƒƒ}tjdddtjƒƒ}t|jƒƒxa|jƒD]S\}}t|d|dkƒ|d|dkrYt|d|dkƒqYqYWdS(s1Tests for creating a directed triangular lattice.iiRiiN(RR9tGraphRRt is_directedR(RR Rtutv((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyR‡scCsetjdddtjƒƒ}tjdddtjƒƒ}tt|jƒƒt|jƒƒƒdS(s3Tests for creating a triangular lattice multigraph.iiRN(RR9R@RRRR(RR R((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyR‘scCsõtjdddtƒ}tt|ƒdƒt|jƒdƒttg|jƒD]\}}|dkrQ|^qQƒdƒtjdddtƒ}tj}ttj|d ddtƒttj|dddtƒttj|d ddtƒdS( NiiRi i$iiii( RR9RRRtsizeRRt NetworkXError(RR R tdtTLG((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyR#—s> (R+R,R-R?RRR#(((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyR8vs   tTestHexagonalLatticeGraphcBs2eZdZd„Zd„Zd„Zd„ZRS(sETests for :func:`networkx.generators.lattice.hexagonal_lattice_graph`c Csx_d d d d d dgD]E\}}tj||ƒ}tt|ƒd|d|ddƒqWtjdƒ}ddddddgddddddgdddddd gd!d"d#d$d%d&gd'd(d)d*d+d,gg}x-|D]%}ttj|j|ƒ|ƒƒqçWdS(-s3Tests that the graph is really a hexagonal lattice.iiiiiiiN(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(Rthexagonal_lattice_graphRRRRR)tsubgraph(RR R R tC_6thexagonsthexagon((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyR?¦s%+ cCsÞtjdddtjƒƒ}tjdddtjƒƒ}t|jƒƒtj|dƒ}xy|jƒD]k\}}t||d||dkƒ||d||dkrkt||d||dkƒqkqkWdS(s0Tests for creating a directed hexagonal lattice.iiRtposiiN(RRIR@RRRAtget_node_attributesR(RR RRNRBRC((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyR¶s cCsetjdddtjƒƒ}tjdddtjƒƒ}tt|jƒƒt|jƒƒƒdS(s2Tests for creating a hexagonal lattice multigraph.iiRN(RRIR@RRRR(RR R((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyRÁscCsõtjdddtƒ}tt|ƒdƒt|jƒdƒttg|jƒD]\}}|dkrQ|^qQƒdƒtjdd dtƒ}tj}ttj|d d dtƒttj|d ddtƒttj|d d dtƒdS( NiiRi0iHiiiiiii( RRIRRRRDRRRE(RR R RFtHLG((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyR#Çs> (R+R,R-R?RRR#(((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyRH¤s   ((((((R-t itertoolst nose.toolsRRRtnetworkxRtnetworkx.testingRRR.R4R8RH(((s|/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/generators/tests/test_lattice.pyts  =.