Esempio n. 1
0
    public void MST_UnitTest_1()
    {
        // Arrange
        Week9FileReader fileReader = new Week9FileReader();
        Prim            prim       = new Prim();

        Dictionary <int, List <(int?, int)> > adjacentGraph = fileReader.GraphFileReader(@"C:\Users\Paul\Documents\Open Source Society for Computer Science (OSSU)\Algorithms Coursera\Programming Assignments\Week 9 Programming Assignment with DLL\Assignment9\Unit Test MST.txt");
        Graph graph           = new Graph(adjacentGraph);
        int   MSTLengthAnswer = 7;

        // Act
        List <Edge> mst      = prim.Apply(graph, graph._vertices[1]);
        int         myAnswer = 0;

        foreach (Edge ed in mst)
        {
            myAnswer += ed._length;
        }

        // Assert
        Assert.Equal(MSTLengthAnswer, myAnswer);
    }
    public void MakingGraphTest()
    {
        // Arrange
        Week9FileReader fileReader = new Week9FileReader();
        Dictionary <int, List <(int?, int)> > myGraph = fileReader.GraphFileReader(@"C:\Users\Paul\Documents\Open Source Society for Computer Science (OSSU)\Algorithms Coursera\Programming Assignments\Week 9 Programming Assignment with DLL\Assignment9\Unit Test Data.txt");
        Graph graph = new Graph(myGraph);

        // Act
        // Vertices
        int?vertex_1 = graph._vertices[1]._number;
        int?vertex_2 = graph._vertices[2]._number;
        int?vertex_3 = graph._vertices[3]._number;
        int?vertex_4 = graph._vertices[4]._number;

        // Assert
        Assert.Equal(1, vertex_1);
        Assert.Equal(2, vertex_2);
        Assert.Equal(3, vertex_3);
        Assert.Equal(4, vertex_4);
        Assert.Equal(4, graph._vertices.Count);

        // Edges Test
        // Arrange
        (int?, int?, int)edge_1_2 = (1, 2, 1);
        (int?, int?, int)edge_1_3 = (1, 3, 4);
        (int?, int?, int)edge_2_3 = (2, 3, 2);
        (int?, int?, int)edge_2_4 = (2, 4, 6);
        (int?, int?, int)edge_3_4 = (3, 4, 3);

        // Act
        Edge g_edge_1_2 = graph._edges["1T2H"];
        Edge g_edge_1_3 = graph._edges["1T3H"];
        Edge g_edge_2_3 = graph._edges["2T3H"];
        Edge g_edge_2_4 = graph._edges["2T4H"];
        Edge g_edge_3_4 = graph._edges["3T4H"];

        // Assert

        TestEdgeValues(edge_1_2, g_edge_1_2);
        TestEdgeValues(edge_1_3, g_edge_1_3);
        TestEdgeValues(edge_2_3, g_edge_2_3);
        TestEdgeValues(edge_2_4, g_edge_2_4);
        TestEdgeValues(edge_3_4, g_edge_3_4);

        void TestEdgeValues((int?, int?, int) edge, Edge g_edge)
        {
            Assert.Equal(edge, (g_edge._tail._number, g_edge._head._number, g_edge._length));
        }

        // Memory Manipulation
        // Arrange
        int OrigIntHolderLength_1 = graph._vertices[1]._intHolder;
        int newIntHolder          = 777;

        int origIntHolder_2 = graph._vertices[2]._intHolder;
        int newIntHolder2   = 222;

        // Act
        // Manipulating from the tail
        graph._edges["1T2H"]._tail._intHolder = newIntHolder;

        // Manipulating from the head
        graph._edges["1T2H"]._head._intHolder = newIntHolder2;

        // Assert
        // Manipulating from tail
        Assert.Equal(newIntHolder, graph._vertices[1]._intHolder);

        // Manipulating from head
        Assert.Equal(newIntHolder2, graph._vertices[2]._intHolder);

        // Check if a manipulation from head will change the tail perspective...
        // the head of one edge is equal to the tail of another
        Assert.Equal(newIntHolder2, graph._edges["2T3H"]._tail._intHolder);
    }