public void Read_Assigns_Parent_Network_Of_Nodes_And_Edges(string file, int expectedVertCount, int expectedArcCount, int expectedEdgeCount, bool hasNodeLabels, bool hasEdgeLabels) { //Arrange IAdjList network = null; NetFileReader reader = new NetFileReader(); reader.File = Path.Combine(Properties.Resources.Pajek_DataFilePath, file); //Act reader.Read(); //Assert network = reader.Network as IAdjList; Assert.NotNull(network); foreach(INode node in network.Nodes) { Assert.NotNull(node.Network); Assert.Same(network, node.Network); } foreach (IEdge edge in network.Edges) { Assert.NotNull(edge.Network); Assert.Same(network, edge.Network); } }
public void ReadVertex_Reads_Vertex_From_Input_And_Maps_Vertex_Label(string inputStr, int expectedVertexNum, string expectedLabel) { // if no label or empty string specified, then no label is mapped //Arrange NetFileReader reader = new NetFileReader(); reader.KeepNodeLabels = true; reader.NetworkAdjList = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(0, 0, false, true, true); var nodeAttribNet = (INodeAttributes)reader.NetworkAdjList; int colIndex = nodeAttribNet.NodeData.AddColumn("Node labels", typeof(string), ""); reader.NodeLabelAttribColIndex = 0; reader.NetworkAdjList.CreateNode(); // create the node AFTER the data col is added. //Act reader.ReadVertex(inputStr); //Assert Assert.Equal(1, reader.Network.NodeCount); int mappedIndex = reader.VertexNumberMap[expectedVertexNum]; INode node = reader.NetworkAdjList.Nodes[mappedIndex]; string mappedLabel = ((INodeAttributes)reader.NetworkAdjList).NodeData.GetValue<string>(node, 0); Assert.Equal(expectedLabel, mappedLabel); }
public void ReadEdgeList_Reads_Multiple_Edges_From_A_List_Including_Vertex_Numbers(string inputStr, int expectedSrcVtxNum, int [] expectedTargVtxNums, int expectedEdgeCount) { //Arrange int srcNodeIndex = 0; IList<int> targNodeIndeces = new List<int>(); NetFileReader reader = new NetFileReader(); reader.NetworkAdjList = BasicAdjListGenerator.GenerateAdjList(5, 0,false); // assume 5 nodes were created when *Network header read reader.VertexNumberMap.Add(expectedSrcVtxNum, srcNodeIndex); for (int i = 0; i < expectedTargVtxNums.Length; i++) { int index = i + 1; // cant be 0, that is srcNodeIndex if (!reader.VertexNumberMap.ContainsKey(expectedTargVtxNums[i])) { targNodeIndeces.Add(index); reader.VertexNumberMap.Add(expectedTargVtxNums[i], index); } } //Act reader.ReadEdgeList(inputStr); //Assert Assert.Equal(expectedEdgeCount, reader.Network.EdgeCount); INode srcNode = reader.NetworkAdjList.Nodes[srcNodeIndex]; INode targetNode = null; bool verified = true; for (int i = 0; i < expectedTargVtxNums.Length; i++) { // get each src and targ node int targNodeIndex = reader.VertexNumberMap[expectedTargVtxNums[i]]; targetNode = reader.NetworkAdjList.Nodes[targNodeIndex]; bool found = false; // check each edge for the src and targ node foreach (IEdge edge in reader.NetworkAdjList.Edges) { if (edge.SourceNode == srcNode && edge.DestinationNode == targetNode) { found = true; break; } } verified &= found; } Assert.True(verified); }
public void ReadArc_Reads_Directed_Edge_And_Maps_Weight_When_Present(string inputStr, int expectedSrcVtxNum, int expectedTargVtxNum, double expectedWeight) { //Arrange int srcNodeIndex = -1, targNodeIndex = -1; if (expectedSrcVtxNum != expectedTargVtxNum) { srcNodeIndex = 0; targNodeIndex = 1; } else { // self loops will have the same src/targ vertex num and the same index srcNodeIndex = 0; targNodeIndex = 0; } NetFileReader reader = new NetFileReader(); reader.NetworkAdjList = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(2, 0, false, true, true); // num nodes created when the *Vertices header read reader.VertexNumberMap.Add(expectedSrcVtxNum, srcNodeIndex); if (expectedSrcVtxNum != expectedTargVtxNum) // only add the 2nd node if not a self loop reader.VertexNumberMap.Add(expectedTargVtxNum, targNodeIndex); reader.EdgeWeightsColIndex = 0; //Act reader.ReadArc(inputStr); //Assert Assert.Equal(1, reader.Network.EdgeCount); // get the edge and check the mapped weight IEdge myEdge = null; foreach (IEdge edge in reader.NetworkAdjList.Edges) { myEdge = edge; break; } if (double.IsNaN(expectedWeight)) { Assert.Equal(0, reader.NetworkAdjList.EdgeAttributeCount); } else { var edgeAttribs = (IEdgeAttributes)reader.NetworkAdjList; double mappedWeight = edgeAttribs.EdgeData.GetValue<double>(myEdge, reader.EdgeWeightsColIndex); Assert.Equal(expectedWeight, mappedWeight); } }
public void InitializeVertexNumMap_Creates_The_Map_For_Vertex_Numbers(int nodeCount) { //Arrange NetFileReader reader = new NetFileReader(); //Act reader.InitializeVertexNumMap(nodeCount); //Assert int nodeIndex = -1; for (int i = 0; i < reader.VertexNumberMap.Count; i++) { nodeIndex = reader.VertexNumberMap[i + 1]; Assert.Equal(i, nodeIndex); } }
public void ReadVertexString_For_Vertex_Label(string inputStr) { //Arrange int vNum = -1; string label = null; NetFileVertexTestItem item = new NetFileVertexTestItem(inputStr.Split(new char[] { '#' })); NetFileReader reader = new NetFileReader(); //Act bool result = reader.ReadVertexString(item.RawText, out vNum, out label); //Assert Assert.Equal(item.VertexLabel, label); Assert.True(result); }
public void Read_Assigns_Network_Id(string file, int expectedVertCount, int expectedArcCount, int expectedEdgeCount, bool hasNodeLabels, bool hasEdgeLabels) { //Arrange IAdjList network = null; NetFileReader reader = new NetFileReader(); reader.File = Path.Combine(Properties.Resources.Pajek_DataFilePath, file); //Act reader.Read(); network = reader.Network as IAdjList; //Assert Assert.NotNull(network); Assert.NotEqual(Guid.Empty, network.Id); }
public void ReadEdgeListString_Returns_False_For_Invalid_Input(string inputStr, int expectedSrcVtxNum) { //Arrange bool result = false; int srcV = -1; int[] targV = null; NetFileReader reader = new NetFileReader(); //Act result = reader.ReadEdgeListString(inputStr, out srcV, out targV); //Assert Assert.False(result); Assert.Equal(expectedSrcVtxNum, srcV); Assert.NotNull(targV); Assert.Equal(0, targV.Length); }
public static INetworkFileReader CreateReader(NetworkFileTypes fileType) { INetworkFileReader reader = null; if (fileType == NetworkFileTypes.UCINet_DL) { reader = new DLImporter(); } else if (fileType == NetworkFileTypes.Pajek_Net) { reader = new NetFileReader(); } else if (fileType == NetworkFileTypes.GraphML) { reader = new GraphMLAdjListReader(); } return reader; }
public void ReadArcListString_Reads_Multiple_Directed_Edges_From_A_List_Including_Vertex_Numbers(string inputStr, int expectedSrcVtxNum, int[] expectedTargVtxNums) { bool result = false; int srcV = -1; int [] targV = null; NetFileReader reader = new NetFileReader(); result = reader.ReadArcListString(inputStr, out srcV, out targV); Assert.True(result); Assert.Equal(expectedSrcVtxNum, srcV); Assert.NotNull(targV); Assert.Equal(expectedTargVtxNums.Length, targV.Length); for (int i = 0; i < targV.Length; i++) { Assert.Equal(expectedTargVtxNums[i], targV[i]); } }
public void ReadArcString_Reads_Directed_Edge_And_Maps_Weight_When_Present(string inputStr, double expectedWeight) { //Arrange bool result = false; int srcV = -1; int targV = -1; double weight = double.NaN; NetFileReader reader = new NetFileReader(); //Act result = reader.ReadArcString(inputStr, out srcV, out targV, out weight); //Assert Assert.Equal(expectedWeight, weight); if (weight == expectedWeight) { Assert.True(result); } }
public static INetworkFileReader CreateReader(string file) { INetworkFileReader reader = null; string extension = Path.GetExtension(file); if (string.Compare(extension, BlueSpider.Blob.IO.Providers.Properties.Resources.Extension_UCINetDLFile, true) == 0) { reader = new DLImporter(); } else if (string.Compare(extension, BlueSpider.Blob.IO.Providers.Properties.Resources.Extension_PajekNetFile, true) == 0) { reader = new NetFileReader(); } else if (string.Compare(extension, BlueSpider.Blob.IO.Providers.Properties.Resources.Extension_GraphMLFile, true) == 0) { reader = new GraphMLAdjListReader(); } return reader; }
public void ReadHeaderLine_Reads_And_Parses_First_Line_Of_Node_Section(string inputStr, string expectedName) { //Arrange bool result = false; NetFileReader reader = new NetFileReader(); string name = null; //Act reader.ReadNetworkHeader(inputStr, out name); //Assert if (string.Compare(name, expectedName) != 0) { if (string.IsNullOrEmpty(name) && string.IsNullOrEmpty(expectedName)) result = true; else result = false; } else result = true; Assert.True(result); }
public void ReadVertex_Reads_Vertex_From_Input_And_Maps_Vertex_Number_To_Node_Index(string inputStr, int expectedVertexNum, string expectedLabel) { // if no label or empty string specified, then no label is mapped //Arrange NetFileReader reader = new NetFileReader(); reader.KeepNodeLabels = false; // otherwise we have to dummy the node map reader.NetworkAdjList = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(1, 0, false, true, true); // num nodes created when the *Vertices header read //Act reader.ReadVertex(inputStr); //Assert Assert.Equal(1, reader.Network.NodeCount); bool vertexNumIsMapped = reader.VertexNumberMap.ContainsKey(expectedVertexNum); Assert.True(vertexNumIsMapped); int mappedIndex = reader.VertexNumberMap[expectedVertexNum]; INode node = reader.NetworkAdjList.Nodes[mappedIndex]; Assert.NotNull(node); Assert.Equal(mappedIndex, node.Index); }
public void ReadHeaderLine_Reads_And_Parses_First_Line_Of_Vertex_Section(string inputStr, int expectedNodeCount) { //Arrange int nodeCount = -1; NetFileReader reader = new NetFileReader(); //Act bool result = reader.ReadVertexHeader(inputStr, out nodeCount); //Assert Assert.Equal(expectedNodeCount, nodeCount); if (expectedNodeCount == nodeCount) { Assert.True(result); } }
public void ReadVertexString_Returns_False_When_Input_Is_Invalid(string inputStr, int expectedVertexNum) { //Arrange int vNum = -1; string label = null; NetFileReader reader = new NetFileReader(); //Act bool result = reader.ReadVertexString(inputStr, out vNum, out label); //Assert Assert.Equal(expectedVertexNum, vNum); Assert.False(result); }
public void Read_Reads_Network_From_Files_Where_Vertex_List_Is_Empty(string file, int expectedVertCount, int expectedArcCount, int expectedEdgeCount, bool hasEdgeLabels) { //Arrange IAdjList network = null; NetFileReader reader = new NetFileReader(); reader.File = Path.Combine(Properties.Resources.Pajek_DataFilePath, file); //Act reader.Read(); //Assert network = reader.Network as IAdjList; Assert.NotNull(network); Assert.Equal(expectedVertCount, network.NodeCount); if (expectedArcCount == 0) { Assert.Equal(network.EdgeCount, expectedEdgeCount); Assert.False(network.IsDirected); } else if (expectedEdgeCount == 0) { Assert.Equal(network.EdgeCount, expectedArcCount); Assert.True(network.IsDirected); } Assert.Equal(0, network.NodeAttributeCount); if (hasEdgeLabels) { Assert.Equal(1, network.EdgeAttributeCount); } }
//Helpers private IBasicAdjList ReadTestNetworkFile(string file) { IBasicAdjList network = null; NetFileReader reader = new NetFileReader(); reader.File = Path.Combine(Properties.Resources.TestNetwork_DataFilePath, file); reader.Read(); network = reader.Network as IBasicAdjList; return network; }
private IBasicAdjList ReadFile(string file) { IBasicAdjList network = null; NetFileReader reader = new NetFileReader(); reader.File = Path.Combine(_FilePath, file); reader.Read(); network = reader.Network as IBasicAdjList; return network; }
public void ReadArc_Reads_Directed_Edge_And_Vertex_Numbers_From_Input(string inputStr, int expectedSrcVtxNum, int expectedTargVtxNum) { //Arrange int srcNodeIndex = -1,targNodeIndex = -1; if (expectedSrcVtxNum != expectedTargVtxNum) { srcNodeIndex = 0; targNodeIndex = 1; } else { // self loops will have the same src/targ vertex num and the same index srcNodeIndex = 0; targNodeIndex = 0; } NetFileReader reader = new NetFileReader(); reader.NetworkAdjList = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(2, 0, false, true, true); // num nodes created when the *Vertices header read reader.VertexNumberMap.Add(expectedSrcVtxNum, srcNodeIndex); if (expectedSrcVtxNum != expectedTargVtxNum) // only add the 2nd node if not a self loop reader.VertexNumberMap.Add(expectedTargVtxNum, targNodeIndex); //Act reader.ReadArc(inputStr); //Assert Assert.Equal(1, reader.Network.EdgeCount); INode expectedSrcNode = reader.NetworkAdjList.Nodes[srcNodeIndex]; INode expectedTargetNode = reader.NetworkAdjList.Nodes[targNodeIndex]; foreach (IEdge edge in reader.NetworkAdjList.Edges) { Assert.Same(expectedSrcNode, edge.SourceNode); Assert.Same(expectedTargetNode, edge.DestinationNode); } }
public void ReadArcString_Reads_Directed_Edge_And_Vertex_Numbers(string inputStr, int expectedSrcVtxNum, int expectedTargVtxNum) { //Arrange bool result = false; int srcV = -1; int targV = -1; double weight = double.NaN; NetFileReader reader = new NetFileReader(); //Act result = reader.ReadArcString(inputStr, out srcV, out targV, out weight); //Assert Assert.Equal(expectedSrcVtxNum, srcV); Assert.Equal(expectedTargVtxNum, targV); if (srcV == expectedSrcVtxNum && targV == expectedTargVtxNum) { Assert.True(result); } }
public void ReadVertex_Reads_Vertex_From_Input_But_Vertex_Labels_Are_Not_Mapped_To_Node_Map_When_No_Label_Specified(string inputStr, int expectedVertexNum, string expectedLabel) { // if no label or empty string specified, then no label is mapped //Arrange NetFileReader reader = new NetFileReader(); reader.KeepNodeLabels = true; // if this flag is true, then the map will be created even if no labels are read in. reader.NetworkAdjList = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(0, 0, false, true, true); // num nodes created when the *Vertices header read var nodeAttribNet = (INodeAttributes)reader.NetworkAdjList; int colIndex = nodeAttribNet.NodeData.AddColumn("Node labels", typeof(string), ""); reader.NetworkAdjList.CreateNode(); // create the node AFTER the data col is added. //Act reader.ReadVertex(inputStr); //Assert int mappedIndex = reader.VertexNumberMap[expectedVertexNum]; INode node = reader.NetworkAdjList.Nodes[mappedIndex]; var nodeAttribs = (INodeAttributes) reader.NetworkAdjList; string mappedLabel = nodeAttribs.NodeData.GetValue<string>(node, colIndex); string defaultVal = (((INodeAttributes) reader.NetworkAdjList).NodeData as DataTable).Columns[0].DefaultValue as string; Assert.Equal(defaultVal, mappedLabel); }
public void ReadArcString_Returns_False_For_Invalid_Input(string inputStr, int expectedSrcVtxNum, int expectedTargVtxNum) { //Arrange bool result = false; int srcV = -1; int targV = -1; double weight = double.NaN; NetFileReader reader = new NetFileReader(); //Act result = reader.ReadArcString(inputStr, out srcV, out targV, out weight); //Assert Assert.False(result); Assert.Equal(expectedSrcVtxNum, srcV); Assert.Equal(expectedTargVtxNum, targV); }