public void ConvertNetwork_VerifyEdges(int id, int n, int m, bool isDirected, Type expectedType) { //Arrange var converter = new MatrixToAdjListConverter(); var mtrx = BasicMatrixGenerator.GenerateMatrix(n, m, isDirected); converter.IncludeEdgeData = false; IBasicAdjList net = (IBasicAdjList)converter.ConvertNetwork(mtrx); INode srcNode = null; INode destNode = null; bool result = false; if (isDirected) { for (int i = 0; i < mtrx.NodeCount; i++) { for (int j = 0; j < mtrx.NodeCount; j++) { if (mtrx[i, j] > 0.0) { srcNode = net.Nodes[i]; destNode = net.Nodes[j]; result = net.IsEdge(srcNode, destNode); Assert.True(result, string.Format("An IEdge should exist for the entry [{0},{1}].", i, j)); } } } } else { for (int i = 0; i < mtrx.NodeCount; i++) { // upper triangle only for (int j = i; j < mtrx.NodeCount; j++) { if (mtrx[i, j] > 0.0) { srcNode = net.Nodes[i]; destNode = net.Nodes[j]; result = net.IsEdge(srcNode, destNode); Assert.True(result, string.Format("An IEdge should exist for the entry [{0},{1}].", i, j)); } } } } }
public void ToAdjList_VerifyEdgeDataAttribs(int id, int n, int m, bool isDirected, Type expectedType) { //Arrange var converter = new MatrixToAdjListConverter(); var mtrx = BasicMatrixGenerator.GenerateMatrix(n, m, isDirected); converter.IncludeEdgeData = true; var net = (IBasicAdjList)converter.ConvertNetwork(mtrx); // there should be 1 map of doubles Assert.Equal(1, net.EdgeAttributeCount); INode srcNode = null; INode destNode = null; double initVal, actualVal; int i = 0, j = 0; foreach (IEdge edge in net.Edges) { srcNode = edge.SourceNode; destNode = edge.DestinationNode; i = srcNode.Index; j = destNode.Index; initVal = mtrx[i, j]; actualVal = net.EdgeData.GetValue<double>(edge, 0); Assert.Equal(initVal, actualVal); } }
public void CreateUndirectedEdges_Creates_WeightMap_When_IncludeEdgeData_Is_True(int n, int m) { //Arrange var converter = new MatrixToAdjListConverter(); var srcMtrx = BasicMatrixGenerator.GenerateMatrix(n, m, false); var targetNet = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(n, 0, true, true, true); converter.IncludeEdgeData = true; converter.CreateUndirectedEdges(srcMtrx, targetNet); Assert.NotNull(converter.EdgeToEdgeWeightMap); Assert.Equal(srcMtrx.EdgeCount, converter.EdgeToEdgeWeightMap.Count); }
public void CreateUndirectedEdges_CreatesZeroEdgesWhenNodeCountsDoNotMatch(int n, int m) { //Arrange var converter = new MatrixToAdjListConverter(); var srcMtrx = BasicMatrixGenerator.GenerateMatrix(n, m, false); var targetNet = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(n+1, 0, false, true, true); Assert.Equal(0, targetNet.EdgeCount); converter.CreateUndirectedEdges(srcMtrx, targetNet); Assert.Equal(0, targetNet.EdgeCount); }
public void CreateDirectedEdges(int n, int m) { //Arrange var converter = new MatrixToAdjListConverter(); var srcMtrx = BasicMatrixGenerator.GenerateMatrix(n, m, true); var targetNet = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(n, 0, true, true, true); Assert.Equal(0, targetNet.EdgeCount); converter.CreateDirectedEdges(srcMtrx, targetNet); Assert.Equal(srcMtrx.EdgeCount, targetNet.EdgeCount); }
public void CopyEdgeWeights(int id, int n, int m, double [] vals) { //Arrange var converter = new MatrixToAdjListConverter(); var srcMtrx = BasicMatrixGenerator.GenerateMatrix(n, m, true); var targetNet = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(n, m, true, true, true); // simulate map var map = new Dictionary<IEdge, double>(); for (int i = 0; i < targetNet.Edges.Count; i++) { map.Add(targetNet.Edges[i], vals[i]); } // simpulate data col added in CreateDirectedEdges // targetNet.EdgeData.AddColumn("A", typeof (double)); converter.CopyEdgeWeights(targetNet, map); double actualVal; double expectedVal; foreach (IEdge edge in targetNet.Edges) { actualVal = targetNet.EdgeData.GetValue<double>(edge, 0); expectedVal = vals[edge.Index]; Assert.Equal(expectedVal, actualVal); } }
public void ConvertToAdjList_IncludingEdgeWeights(int id, int n, int m, bool isDirected, Type expectedType) { //Arrange var converter = new MatrixToAdjListConverter(); var mtrx = BasicMatrixGenerator.GenerateMatrix(n, m, isDirected); converter.IncludeEdgeData = true; IBasicAdjList net = (IBasicAdjList)converter.ConvertToAdjList(mtrx); Assert.NotNull(net); Assert.Equal(expectedType, net.GetType()); Assert.Equal(mtrx.IsDirected, net.IsDirected); Assert.Equal(mtrx.NodeCount, net.NodeCount); Assert.Equal(mtrx.EdgeCount, net.EdgeCount); Assert.Equal(1, net.EdgeAttributeCount); }