def CreateGraphGrid():
     graph = SparseGraph.CreateNavGraph(isDigraph=False)
     GraphTools.CreateGrid(graph, cxSize=50 * 3, cySize=50 * 3, numCellsX=3, numCellsY=3)
     GraphTools.WeightNavGraphNodeEdges(graph, nodeIndex=1, weight=2.5)
     GraphTools.WeightNavGraphNodeEdges(graph, nodeIndex=4, weight=2.5)
     GraphTools.WeightNavGraphNodeEdges(graph, nodeIndex=6, weight=2.5)
     return graph
    def test_SpecifyThatAllPairsCostsTableCanBeCalculated(self):
        graph = self.CreateGraphGrid()

        costsTable = GraphTools.CreateAllPairsCostsTable(graph)

        np.testing.assert_almost_equal(
            [0.0, 50.0, 100.0, 50.0, 70.7, 120.7, 100.0, 120.7, 141.4],
            costsTable[0], 1, "costsTable[0]")
        np.testing.assert_almost_equal(
            [50.0, 0.0, 50.0, 70.7, 50.0, 70.7, 120.7, 100.0, 120.7],
            costsTable[1], 1, "costsTable[0]")
        np.testing.assert_almost_equal(
            [100.0, 50.0, 0.0, 120.7, 70.7, 50.0, 141.4, 120.7, 100.0],
            costsTable[2], 1, "costsTable[2]")
        np.testing.assert_almost_equal(
            [50.0, 70.7, 120.7, 0.0, 50.0, 100.0, 50.0, 70.7, 120.7],
            costsTable[3], 1, "costsTable[3]")
        np.testing.assert_almost_equal(
            [70.7, 50.0, 70.7, 50.0, 0.0, 50.0, 70.7, 50.0, 70.7],
            costsTable[4], 1, "costsTable[4]")
        np.testing.assert_almost_equal(
            [120.7, 70.7, 50.0, 100.0, 50.0, 0.0, 120.7, 70.7, 50.0],
            costsTable[5], 1, "costsTable[5]")
        np.testing.assert_almost_equal(
            [100.0, 120.7, 141.4, 50.0, 70.7, 120.7, 0.0, 50.0, 100.0],
            costsTable[6], 1, "costsTable[6]")
        np.testing.assert_almost_equal(
            [120.7, 100.0, 120.7, 70.7, 50.0, 70.7, 50.0, 0.0, 50.0],
            costsTable[7], 1, "costsTable[7]")
        np.testing.assert_almost_equal(
            [141.4, 120.7, 100.0, 120.7, 70.7, 50.0, 100.0, 50.0, 0.0],
            costsTable[8], 1, "costsTable[8]")
 def CreateGraphGrid(size=3):
     graph = SparseGraph.CreateNavGraph(isDigraph=False)
     GraphTools.CreateGrid(graph,
                           cxSize=50 * size,
                           cySize=50 * size,
                           numCellsX=size,
                           numCellsY=size)
     return graph
 def CreateGraphGrid():
     graph = SparseGraph.CreateNavGraph(isDigraph=False)
     GraphTools.CreateGrid(graph,
                           cxSize=50 * 3,
                           cySize=50 * 3,
                           numCellsX=3,
                           numCellsY=3)
     return graph
 def test_SpecifyThatGraphIsNotDrawnToCanvasWhenItHasNoNodes(self):
     graph = self.CreateGraphGrid(size=0)
     canvas = Mock()
     GraphTools.DrawGraph(canvas,
                          graph,
                          color="red",
                          cellWidth=50,
                          offset=0,
                          drawNodeIds=True)
     canvas.assert_not_called()
 def test_SpecifyThatCellIndicesCanBeValidated(self):
     self.assertEqual(
         False,
         GraphTools.IsValidNeighbour(xCellIndex=-1,
                                     yCellIndex=-1,
                                     numCellsX=5,
                                     numCellsY=5), "T1")
     self.assertEqual(
         True,
         GraphTools.IsValidNeighbour(xCellIndex=0,
                                     yCellIndex=0,
                                     numCellsX=5,
                                     numCellsY=5), "T2")
     self.assertEqual(
         False,
         GraphTools.IsValidNeighbour(xCellIndex=-1,
                                     yCellIndex=0,
                                     numCellsX=5,
                                     numCellsY=5), "T3")
     self.assertEqual(
         False,
         GraphTools.IsValidNeighbour(xCellIndex=0,
                                     yCellIndex=-1,
                                     numCellsX=5,
                                     numCellsY=5), "T4")
     self.assertEqual(
         True,
         GraphTools.IsValidNeighbour(xCellIndex=4,
                                     yCellIndex=4,
                                     numCellsX=5,
                                     numCellsY=5), "T5")
     self.assertEqual(
         False,
         GraphTools.IsValidNeighbour(xCellIndex=5,
                                     yCellIndex=4,
                                     numCellsX=5,
                                     numCellsY=5), "T6")
     self.assertEqual(
         False,
         GraphTools.IsValidNeighbour(xCellIndex=4,
                                     yCellIndex=5,
                                     numCellsX=5,
                                     numCellsY=5), "T7")
     self.assertEqual(
         False,
         GraphTools.IsValidNeighbour(xCellIndex=5,
                                     yCellIndex=5,
                                     numCellsX=5,
                                     numCellsY=5), "T7")
    def test_SpecifyThatAllPairsTableCanBeCalculated(self):
        graph = self.CreateGraphGrid()

        pairsTable = GraphTools.CreateAllPairsTable(graph)

        self.assertEqual(9, len(pairsTable))
        self.assertEqual(9, len(pairsTable[0]))
        self.assertEqual([0, 1, 1, 3, 4, 1, 3, 3, 4], pairsTable[0])
        self.assertEqual([0, 1, 2, 3, 4, 5, 4, 4, 4], pairsTable[1])
        self.assertEqual([1, 1, 2, 1, 4, 5, 4, 5, 5], pairsTable[2])
        self.assertEqual([0, 1, 4, 3, 4, 4, 6, 7, 4], pairsTable[3])
        self.assertEqual([0, 1, 2, 3, 4, 5, 6, 7, 8], pairsTable[4])
        self.assertEqual([4, 1, 2, 4, 4, 5, 4, 7, 8], pairsTable[5])
        self.assertEqual([3, 3, 4, 3, 4, 7, 6, 7, 7], pairsTable[6])
        self.assertEqual([4, 4, 4, 3, 4, 5, 6, 7, 8], pairsTable[7])
        self.assertEqual([4, 5, 5, 7, 4, 5, 7, 7, 8], pairsTable[8])
    def test_SpecifyThatNavGraphNodeEdgesCanBeModifiedWithAWeighting(self):
        graph = self.CreateGraphGrid()

        self.assertAlmostEqual(50.0, graph._edgeListVector[0][0].Cost, 1,
                               "graph._edgeListVector[0][0].Cost 1")
        self.assertAlmostEqual(50.0, graph._edgeListVector[0][1].Cost, 1,
                               "graph._edgeListVector[0][1].Cost 1")
        self.assertAlmostEqual(70.7, graph._edgeListVector[0][2].Cost, 1,
                               "graph._edgeListVector[0][2].Cost 1")

        GraphTools.WeightNavGraphNodeEdges(graph, 0, 2)

        self.assertAlmostEqual(100.0, graph._edgeListVector[0][0].Cost, 1,
                               "graph._edgeListVector[0][0].Cost 2")
        self.assertAlmostEqual(100.0, graph._edgeListVector[0][1].Cost, 1,
                               "graph._edgeListVector[0][1].Cost 2")
        self.assertAlmostEqual(141.4, graph._edgeListVector[0][2].Cost, 1,
                               "graph._edgeListVector[0][2].Cost 2")
    def test_SpecifyThatAConnectedGridCanBeConstructedOnAUniGraph(self):
        graph = SparseGraph.CreateNavGraph(isDigraph=False)

        GraphTools.CreateGrid(graph,
                              cxSize=50 * 3,
                              cySize=50 * 3,
                              numCellsX=3,
                              numCellsY=3)

        self.assertEqual(9, len(graph._nodes), "_nodes")
        self.assertEqual(9, len(graph._edgeListVector), "_edgeListVector")
        self.assertEqual(9, graph._nextNodeIndex, "_nextNodeIndex")
        self.assertEqual(40, graph.NumberOfEdges(), "NumberOfEdges")

        self.assertEqual(0, graph._nodes[0].Index, "_nodes[0].Index")
        self.assertEqual(1, graph._nodes[1].Index, "_nodes[1].Index")
        self.assertEqual(2, graph._nodes[2].Index, "_nodes[2].Index")
        self.assertEqual(3, graph._nodes[3].Index, "_nodes[3].Index")
        self.assertEqual(4, graph._nodes[4].Index, "_nodes[4].Index")
        self.assertEqual(5, graph._nodes[5].Index, "_nodes[5].Index")
        self.assertEqual(6, graph._nodes[6].Index, "_nodes[6].Index")
        self.assertEqual(7, graph._nodes[7].Index, "_nodes[7].Index")
        self.assertEqual(8, graph._nodes[8].Index, "_nodes[8].Index")

        self.assertEqual(3, len(graph._edgeListVector[0]),
                         "_edgeListVector[0]")
        self.assertEqual(5, len(graph._edgeListVector[1]),
                         "_edgeListVector[1]")
        self.assertEqual(3, len(graph._edgeListVector[2]),
                         "_edgeListVector[2]")
        self.assertEqual(5, len(graph._edgeListVector[3]),
                         "_edgeListVector[3]")
        self.assertEqual(8, len(graph._edgeListVector[4]),
                         "_edgeListVector[4]")
        self.assertEqual(5, len(graph._edgeListVector[5]),
                         "_edgeListVector[5]")
        self.assertEqual(3, len(graph._edgeListVector[6]),
                         "_edgeListVector[6]")
        self.assertEqual(5, len(graph._edgeListVector[7]),
                         "_edgeListVector[6]")
        self.assertEqual(3, len(graph._edgeListVector[8]),
                         "_edgeListVector[6]")

        self.assertEqual(1, graph._edgeListVector[0][0].To,
                         "graph._edgeListVector[0][0].To")
        self.assertEqual(3, graph._edgeListVector[0][1].To,
                         "graph._edgeListVector[0][1].To")
        self.assertEqual(4, graph._edgeListVector[0][2].To,
                         "graph._edgeListVector[0][2].To")

        self.assertEqual(0, graph._edgeListVector[1][0].To,
                         "graph._edgeListVector[1][0].To")
        self.assertEqual(2, graph._edgeListVector[1][1].To,
                         "graph._edgeListVector[1][1].To")
        self.assertEqual(3, graph._edgeListVector[1][2].To,
                         "graph._edgeListVector[1][2].To")
        self.assertEqual(4, graph._edgeListVector[1][3].To,
                         "graph._edgeListVector[1][3].To")
        self.assertEqual(5, graph._edgeListVector[1][4].To,
                         "graph._edgeListVector[1][4].To")

        self.assertEqual(1, graph._edgeListVector[2][0].To,
                         "graph._edgeListVector[2][0].To")
        self.assertEqual(4, graph._edgeListVector[2][1].To,
                         "graph._edgeListVector[2][1].To")
        self.assertEqual(5, graph._edgeListVector[2][2].To,
                         "graph._edgeListVector[2][2].To")

        self.assertEqual(0, graph._edgeListVector[3][0].To,
                         "graph._edgeListVector[3][0].To")
        self.assertEqual(1, graph._edgeListVector[3][1].To,
                         "graph._edgeListVector[3][1].To")
        self.assertEqual(4, graph._edgeListVector[3][2].To,
                         "graph._edgeListVector[3][2].To")
        self.assertEqual(6, graph._edgeListVector[3][3].To,
                         "graph._edgeListVector[3][3].To")
        self.assertEqual(7, graph._edgeListVector[3][4].To,
                         "graph._edgeListVector[3][4].To")

        self.assertEqual(0, graph._edgeListVector[4][0].To,
                         "graph._edgeListVector[4][0].To")
        self.assertEqual(1, graph._edgeListVector[4][1].To,
                         "graph._edgeListVector[4][1].To")
        self.assertEqual(2, graph._edgeListVector[4][2].To,
                         "graph._edgeListVector[4][2].To")
        self.assertEqual(3, graph._edgeListVector[4][3].To,
                         "graph._edgeListVector[4][3].To")
        self.assertEqual(5, graph._edgeListVector[4][4].To,
                         "graph._edgeListVector[4][4].To")
        self.assertEqual(6, graph._edgeListVector[4][5].To,
                         "graph._edgeListVector[4][5].To")
        self.assertEqual(7, graph._edgeListVector[4][6].To,
                         "graph._edgeListVector[4][6].To")
        self.assertEqual(8, graph._edgeListVector[4][7].To,
                         "graph._edgeListVector[4][7].To")

        self.assertEqual(1, graph._edgeListVector[5][0].To,
                         "graph._edgeListVector[5][0].To")
        self.assertEqual(2, graph._edgeListVector[5][1].To,
                         "graph._edgeListVector[5][1].To")
        self.assertEqual(4, graph._edgeListVector[5][2].To,
                         "graph._edgeListVector[5][2].To")
        self.assertEqual(7, graph._edgeListVector[5][3].To,
                         "graph._edgeListVector[5][3].To")
        self.assertEqual(8, graph._edgeListVector[5][4].To,
                         "graph._edgeListVector[5][4].To")

        self.assertEqual(3, graph._edgeListVector[6][0].To,
                         "graph._edgeListVector[6][0].To")
        self.assertEqual(4, graph._edgeListVector[6][1].To,
                         "graph._edgeListVector[6][1].To")
        self.assertEqual(7, graph._edgeListVector[6][2].To,
                         "graph._edgeListVector[6][2].To")

        self.assertEqual(3, graph._edgeListVector[7][0].To,
                         "graph._edgeListVector[7][0].To")
        self.assertEqual(4, graph._edgeListVector[7][1].To,
                         "graph._edgeListVector[7][1].To")
        self.assertEqual(5, graph._edgeListVector[7][2].To,
                         "graph._edgeListVector[7][2].To")
        self.assertEqual(6, graph._edgeListVector[7][3].To,
                         "graph._edgeListVector[7][3].To")
        self.assertEqual(8, graph._edgeListVector[7][4].To,
                         "graph._edgeListVector[7][4].To")

        self.assertEqual(4, graph._edgeListVector[8][0].To,
                         "graph._edgeListVector[8][0].To")
        self.assertEqual(5, graph._edgeListVector[8][1].To,
                         "graph._edgeListVector[8][1].To")
        self.assertEqual(7, graph._edgeListVector[8][2].To,
                         "graph._edgeListVector[8][2].To")
    def test_SpecifyThatGraphCanBeDrawnToCanvas(self):
        graph = self.CreateGraphGrid()
        canvas = Mock()
        GraphTools.DrawGraph(canvas,
                             graph,
                             color="red",
                             cellWidth=50,
                             offset=0,
                             drawNodeIds=True)

        self.assertEqual(9, len(canvas.create_oval.mock_calls),
                         "len(create_oval)")
        self.assertEqual(
            "call(24.0, 24.0, 26.0, 26.0, fill='red', outline='red', tags='')",
            str(canvas.create_oval.mock_calls[0]), "create_oval[0]")
        self.assertEqual(
            "call(74.0, 24.0, 76.0, 26.0, fill='red', outline='red', tags='')",
            str(canvas.create_oval.mock_calls[1]), "create_oval[1]")
        self.assertEqual(
            "call(124.0, 24.0, 126.0, 26.0, fill='red', outline='red', tags='')",
            str(canvas.create_oval.mock_calls[2]), "create_oval[2]")
        self.assertEqual(
            "call(24.0, 74.0, 26.0, 76.0, fill='red', outline='red', tags='')",
            str(canvas.create_oval.mock_calls[3]), "create_oval[3]")
        self.assertEqual(
            "call(74.0, 74.0, 76.0, 76.0, fill='red', outline='red', tags='')",
            str(canvas.create_oval.mock_calls[4]), "create_oval[4]")
        self.assertEqual(
            "call(124.0, 74.0, 126.0, 76.0, fill='red', outline='red', tags='')",
            str(canvas.create_oval.mock_calls[5]), "create_oval[5]")
        self.assertEqual(
            "call(24.0, 124.0, 26.0, 126.0, fill='red', outline='red', tags='')",
            str(canvas.create_oval.mock_calls[6]), "create_oval[6]")
        self.assertEqual(
            "call(74.0, 124.0, 76.0, 126.0, fill='red', outline='red', tags='')",
            str(canvas.create_oval.mock_calls[7]), "create_oval[7]")
        self.assertEqual(
            "call(124.0, 124.0, 126.0, 126.0, fill='red', outline='red', tags='')",
            str(canvas.create_oval.mock_calls[8]), "create_oval[8]")

        self.assertEqual(40, len(canvas.create_line.mock_calls),
                         "len(create_line)")
        self.assertEqual(
            "call(25.0, 25.0, 75.0, 25.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[0]), "create_line[0]")
        self.assertEqual(
            "call(25.0, 25.0, 25.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[1]), "create_line[1]")
        self.assertEqual(
            "call(25.0, 25.0, 75.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[2]), "create_line[2]")
        self.assertEqual(
            "call(75.0, 25.0, 25.0, 25.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[3]), "create_line[3]")
        self.assertEqual(
            "call(75.0, 25.0, 125.0, 25.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[4]), "create_line[4]")
        self.assertEqual(
            "call(75.0, 25.0, 25.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[5]), "create_line[5]")
        self.assertEqual(
            "call(75.0, 25.0, 75.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[6]), "create_line[6]")
        self.assertEqual(
            "call(75.0, 25.0, 125.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[7]), "create_line[7]")
        self.assertEqual(
            "call(125.0, 25.0, 75.0, 25.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[8]), "create_line[8]")
        self.assertEqual(
            "call(125.0, 25.0, 75.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[9]), "create_line[9]")
        self.assertEqual(
            "call(125.0, 25.0, 125.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[10]), "create_line[10]")
        self.assertEqual(
            "call(25.0, 75.0, 25.0, 25.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[11]), "create_line[11]")
        self.assertEqual(
            "call(25.0, 75.0, 75.0, 25.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[12]), "create_line[12]")
        self.assertEqual(
            "call(25.0, 75.0, 75.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[13]), "create_line[13]")
        self.assertEqual(
            "call(25.0, 75.0, 25.0, 125.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[14]), "create_line[14]")
        self.assertEqual(
            "call(25.0, 75.0, 75.0, 125.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[15]), "create_line[15]")
        self.assertEqual(
            "call(75.0, 75.0, 25.0, 25.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[16]), "create_line[16]")
        self.assertEqual(
            "call(75.0, 75.0, 75.0, 25.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[17]), "create_line[17]")
        self.assertEqual(
            "call(75.0, 75.0, 125.0, 25.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[18]), "create_line[18]")
        self.assertEqual(
            "call(75.0, 75.0, 25.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[19]), "create_line[19]")
        self.assertEqual(
            "call(75.0, 75.0, 125.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[20]), "create_line[20]")
        self.assertEqual(
            "call(75.0, 75.0, 25.0, 125.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[21]), "create_line[21]")
        self.assertEqual(
            "call(75.0, 75.0, 75.0, 125.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[22]), "create_line[22]")
        self.assertEqual(
            "call(75.0, 75.0, 125.0, 125.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[23]), "create_line[23]")
        self.assertEqual(
            "call(125.0, 75.0, 75.0, 25.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[24]), "create_line[24]")
        self.assertEqual(
            "call(125.0, 75.0, 125.0, 25.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[25]), "create_line[25]")
        self.assertEqual(
            "call(125.0, 75.0, 75.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[26]), "create_line[26]")
        self.assertEqual(
            "call(125.0, 75.0, 75.0, 125.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[27]), "create_line[27]")
        self.assertEqual(
            "call(125.0, 75.0, 125.0, 125.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[28]), "create_line[28]")
        self.assertEqual(
            "call(25.0, 125.0, 25.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[29]), "create_line[29]")
        self.assertEqual(
            "call(25.0, 125.0, 75.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[30]), "create_line[30]")
        self.assertEqual(
            "call(25.0, 125.0, 75.0, 125.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[31]), "create_line[31]")
        self.assertEqual(
            "call(75.0, 125.0, 25.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[32]), "create_line[32]")
        self.assertEqual(
            "call(75.0, 125.0, 75.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[33]), "create_line[33]")
        self.assertEqual(
            "call(75.0, 125.0, 125.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[34]), "create_line[34]")
        self.assertEqual(
            "call(75.0, 125.0, 25.0, 125.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[35]), "create_line[35]")
        self.assertEqual(
            "call(75.0, 125.0, 125.0, 125.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[36]), "create_line[36]")
        self.assertEqual(
            "call(125.0, 125.0, 75.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[37]), "create_line[37]")
        self.assertEqual(
            "call(125.0, 125.0, 125.0, 75.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[38]), "create_line[38]")
        self.assertEqual(
            "call(125.0, 125.0, 75.0, 125.0, dash='-', fill='red', tags='')",
            str(canvas.create_line.mock_calls[39]), "create_line[39]")

        self.assertEqual(9, len(canvas.create_text.mock_calls),
                         "len(create_text)")
        self.assertEqual(
            "call(10.0, 10.0, fill='grey38', font='helvetica 8', tags='', text='0')",
            str(canvas.create_text.mock_calls[0]), "create_text[0]")
        self.assertEqual(
            "call(60.0, 10.0, fill='grey38', font='helvetica 8', tags='', text='1')",
            str(canvas.create_text.mock_calls[1]), "create_text[1]")
        self.assertEqual(
            "call(110.0, 10.0, fill='grey38', font='helvetica 8', tags='', text='2')",
            str(canvas.create_text.mock_calls[2]), "create_text[2]")
        self.assertEqual(
            "call(10.0, 60.0, fill='grey38', font='helvetica 8', tags='', text='3')",
            str(canvas.create_text.mock_calls[3]), "create_text[3]")
        self.assertEqual(
            "call(60.0, 60.0, fill='grey38', font='helvetica 8', tags='', text='4')",
            str(canvas.create_text.mock_calls[4]), "create_text[4]")
        self.assertEqual(
            "call(110.0, 60.0, fill='grey38', font='helvetica 8', tags='', text='5')",
            str(canvas.create_text.mock_calls[5]), "create_text[5]")
        self.assertEqual(
            "call(10.0, 110.0, fill='grey38', font='helvetica 8', tags='', text='6')",
            str(canvas.create_text.mock_calls[6]), "create_text[6]")
        self.assertEqual(
            "call(60.0, 110.0, fill='grey38', font='helvetica 8', tags='', text='7')",
            str(canvas.create_text.mock_calls[7]), "create_text[7]")
        self.assertEqual(
            "call(110.0, 110.0, fill='grey38', font='helvetica 8', tags='', text='8')",
            str(canvas.create_text.mock_calls[8]), "create_text[8]")
    def test_SpecifyThatAverageGraphEdgeLengthCanBeCalculated(self):
        graph = self.CreateGraphGrid()

        self.assertAlmostEqual(
            58.284, GraphTools.CalculateAverageGraphEdgeLength(graph), 2)
    def test_SpecifyThatCostliestGraphEdgeCanBeFound(self):
        graph = TestFactory.CreateDigraph()

        self.assertEqual(3.7, GraphTools.GetCostliestGraphEdge(graph))