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 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 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); }