public void CreateStructure_Returns_Table_With_Matching_Structure_And_NodeIndex_Col_Is_Included(bool createIFrameImplementation) { IBasicAdjList net = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(2, 1, false, true, false); var builder = new DataAttributesBuilder(); net.NodeData.AddColumn("col 0", typeof(int)); net.NodeData.AddColumn("col 1", typeof(string)); net.NodeData.AddColumn("col 2", typeof(double)); var xtor = new BasicAdjListNodeDataExtractor(); DataTable table = xtor.CreateStructure(net.NodeData, true, createIFrameImplementation); // include node index col Assert.NotNull(table); Assert.Equal(net.NodeDataAttributeCount+1, table.Columns.Count); Assert.Equal(0, table.Rows.Count); Assert.Equal(typeof(int), table.Columns[0].DataType); Assert.Equal(typeof(int), table.Columns[1].DataType); Assert.Equal(typeof(string), table.Columns[2].DataType); Assert.Equal(typeof(double), table.Columns[3].DataType); Assert.Equal("Node Index", table.Columns[0].ColumnName); Assert.Equal("col 0", table.Columns[1].ColumnName); Assert.Equal("col 1", table.Columns[2].ColumnName); Assert.Equal("col 2", table.Columns[3].ColumnName); }
public void ToDataTable_ThrowsIfNetworkIsIncorrectType(bool includeNodeAttribs) { INetwork net = new BlueSpider.Blob.TestSupport.Network.Dummies.DummyBasicAdjList(); BasicAdjListNodeDataExtractor xtor = new BasicAdjListNodeDataExtractor(); var ex = Assert.Throws<ArgumentException>(() => xtor.ToDataTable(net, includeNodeAttribs)); }
public void ToDataTable_ThrowsIfNetworkIsNull(bool includeNodeAttribs) { IBasicAdjList net = null; BasicAdjListNodeDataExtractor xtor = new BasicAdjListNodeDataExtractor(); var ex = Assert.Throws<ArgumentNullException>(() => xtor.ToDataTable(net, includeNodeAttribs)); }
public void ToFrame_With_Zero_Node_Data_Attribs_And_IncludeNodeAttribs_Is_True_Verify_Index_Values_In_Output_Table(int numNodes, int numEdges, bool isDirected) { bool includeNodeAttribs = true; IBasicAdjList net = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(numNodes, numEdges, isDirected, true, false); var map = new Dictionary<int, bool>(); // map node index to bool flag to record when it is found foreach (var node in net.Nodes) { map.Add(node.Index, false); } var xtor = new BasicAdjListNodeDataExtractor(); var frame = xtor.ToFrame(net, includeNodeAttribs) as BasicFrame; Assert.NotNull(frame); Assert.Equal(1, frame.ColumnCount); Assert.Equal(numNodes, frame.RowCount); int val = -1; foreach (DataRow row in frame.Rows) { val = Convert.ToInt32(row[0]); map[val] = true; // record when the node index is identified in the table } // make sure each node index was found foreach (KeyValuePair<int, bool> kvp in map) { Assert.True(kvp.Value, string.Format("Node index {0} was not found", kvp.Key)); } }
public void ToFrame_With_Zero_Node_Data_Attribs_And_IncludeNodeAttribs_Is_True(int numNodes, int numEdges, bool isDirected) { bool includeNodeAttribs = true; IBasicAdjList net = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(numNodes, numEdges, isDirected, true, false); var xtor = new BasicAdjListNodeDataExtractor(); IFrame frame = xtor.ToFrame(net, includeNodeAttribs); Assert.NotNull(frame); Assert.Equal(1, frame.ColumnCount); Assert.Equal(numNodes, frame.RowCount); }
public void ToFrame_With_One_Node_Data_Attrib_And_IncludeNodeAttribs_Is_True(int numNodes, int numEdges, bool isDirected, int[] dataVals) { bool includeNodeAttribs = true; IBasicAdjList net = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(numNodes, numEdges, isDirected, true, false); var builder = new DataAttributesBuilder(); int colIndex = net.NodeData.AddColumn("col 0", typeof(int)); builder.PopulateCol<INode>(net.NodeData, colIndex, dataVals); var xtor = new BasicAdjListNodeDataExtractor(); var frame = xtor.ToFrame(net, includeNodeAttribs) as BasicFrame; Assert.NotNull(frame); Assert.Equal(1 + 1, frame.Columns.Count); Assert.Equal(numNodes, frame.Rows.Count); DataColumn col = frame.Columns[0]; Assert.NotNull(col); Assert.Equal(typeof(int), col.DataType); col = frame.Columns[1]; Assert.NotNull(col); Assert.Equal(typeof(int), col.DataType); string colName = frame.Columns[1].ColumnName; object objVal = null; int val = -1; for (int i = 0; i < frame.Rows.Count; i++) { objVal = frame.Rows[i][colName]; Assert.NotNull(objVal); Assert.IsType(typeof(int), objVal); val = (int)objVal; Assert.Equal(dataVals[i], val); } }
public void ToFrame_With_Multiple_Columns_And_IncludeNodeAttribs_Is_True(int testId, int numNodes, int numEdges, bool isDirected, int[] intVals, double[] doubleVals, bool[] boolVals, string[] stringVals) { bool includeNodeAttribs = true; IBasicAdjList net = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(numNodes, numEdges, isDirected, true, false); var builder = new DataAttributesBuilder(); int colIndex0 = net.NodeData.AddColumn("col 0", typeof(int)); int colIndex1 = net.NodeData.AddColumn("col 1", typeof(double)); int colIndex2 = net.NodeData.AddColumn("col 2", typeof(bool)); int colIndex3 = net.NodeData.AddColumn("col 3", typeof(string)); builder.PopulateCol<int, INode>(net.NodeData, colIndex0, intVals); builder.PopulateCol<double, INode>(net.NodeData, colIndex1, doubleVals); builder.PopulateCol<bool, INode>(net.NodeData, colIndex2, boolVals); builder.PopulateCol<string, INode>(net.NodeData, colIndex3, stringVals); var xtor = new BasicAdjListNodeDataExtractor(); var frame = xtor.ToFrame(net, includeNodeAttribs) as BasicFrame; Assert.NotNull(frame); Assert.Equal(4 + 1, frame.Columns.Count); Assert.Equal(numNodes, frame.Rows.Count); //-- DataColumn intCol = frame.Columns[1]; Assert.NotNull(intCol); Assert.Equal(typeof(int), intCol.DataType); string intColName = intCol.ColumnName; //-- DataColumn doubleCol = frame.Columns[2]; Assert.NotNull(doubleCol); Assert.Equal(typeof(double), doubleCol.DataType); string doubleColName = doubleCol.ColumnName; //-- DataColumn boolCol = frame.Columns[3]; Assert.NotNull(boolCol); Assert.Equal(typeof(bool), boolCol.DataType); string boolColName = boolCol.ColumnName; //-- DataColumn stringCol = frame.Columns[4]; Assert.NotNull(stringCol); Assert.Equal(typeof(string), stringCol.DataType); string stringColName = stringCol.ColumnName; object objVal = null; //-- ints int intVal = -1; for (int i = 0; i < frame.Rows.Count; i++) { objVal = frame.Rows[i][intColName]; Assert.NotNull(objVal); Assert.IsType(typeof(int), objVal); intVal = (int)objVal; Assert.Equal(intVals[i], intVal); } //-- doubles double doubleVal = -1.1; for (int i = 0; i < frame.Rows.Count; i++) { objVal = frame.Rows[i][doubleColName]; Assert.NotNull(objVal); Assert.IsType(typeof(double), objVal); doubleVal = (double)objVal; Assert.Equal(doubleVals[i], doubleVal); } //-- bools bool boolVal = false; for (int i = 0; i < frame.Rows.Count; i++) { objVal = frame.Rows[i][boolColName]; Assert.NotNull(objVal); Assert.IsType(typeof(bool), objVal); boolVal = (bool)objVal; Assert.Equal(boolVals[i], boolVal); } //-- strings string stringVal = null; for (int i = 0; i < frame.Rows.Count; i++) { objVal = frame.Rows[i][stringColName]; Assert.NotNull(objVal); Assert.IsType(typeof(string), objVal); stringVal = (string)objVal; Assert.Equal(stringVals[i], stringVal); } }
public void ToFrame_ThrowsIfNodeAttribMgrIsNull(bool includeNodeAttribs) { BasicAdjList net = BasicAdjListGenerator.GenerateAdjList(0, 0, true) as BasicAdjList; net.NodeData = null; BasicAdjListNodeDataExtractor xtor = new BasicAdjListNodeDataExtractor(); var ex = Assert.Throws<ArgumentException>(() => xtor.ToFrame(net, includeNodeAttribs)); }
public void ToDataTable_With_Zero_Node_Data_Attribs_And_IncludeNodeAttribs_Is_False(int numNodes, int numEdges, bool isDirected) { bool includeNodeAttribs = false; IBasicAdjList net = BasicAdjListGenerator.GenerateAdjListWithDataAttribs(numNodes, numEdges, isDirected, true, false); var xtor = new BasicAdjListNodeDataExtractor(); DataTable table = xtor.ToDataTable(net, includeNodeAttribs); Assert.NotNull(table); Assert.Equal(0, table.Columns.Count); Assert.Equal(numNodes, table.Rows.Count); }