Beispiel #1
0
 public void ReadEdgePropertyFields_Throws_If_Not_In_Required_State(VnaFileSection state)
 {
     var reader = new VnaAdjListReader();
     reader.State = state;
     Assert.Throws<InvalidOperationException>(() => reader.ReadEdgePropertyFields(new string[] { "X" }, null, -1, null));
 }
Beispiel #2
0
        public void ReadEdgePropertyFields_Reads_Fields_Into_NodeAttribs_From_StarNodeData_Section(int index, string[] dataFields, string[] dataFieldNames, Type[] dataTypes, int[] srcFieldIndices)
        {
            int nodeCount = 3;
            int edgeCount = 5;
            // simulate initialized network
            var net = Blob.TestSupport.Network.BasicAdjListGenerator.GenerateAdjListWithDataAttribs(nodeCount, edgeCount, false, false, true);
            var builder = new Blob.TestSupport.Network.DataAttributesBuilder();
            builder.AddColumns((IEdgeAttributes)net, dataTypes, dataFieldNames, false);

            var reader = new VnaAdjListReader();
            reader.State = VnaFileSection.EdgeProperties;
            // simulate the list of HeaderField objects that would have been created in 1st pass
            for (int i = 0; i < dataFields.Length; i++)
                reader.EdgePropertyHeaders.Add(new HeaderField(dataFieldNames[i], VnaFileSection.EdgeProperties, srcFieldIndices[i], null) { AttribColumnIndex = srcFieldIndices[i] });

            int targetEdgeIndex = 1;
            IEdge owner = net.Edges[targetEdgeIndex];
            reader.ReadEdgePropertyFields(dataFields, net, targetEdgeIndex, reader.EdgePropertyHeaders);

            for (int i = 0; i < dataTypes.Length; i++)
            {
                if (dataTypes[i] == typeof(string))
                {
                    var val = net.EdgeData.GetValue<string>(owner, i);
                    Assert.Equal(dataFields[i], val);
                }
                else if (dataTypes[i] == typeof(int))
                {
                    var val = net.EdgeData.GetValue<int>(owner, i);
                    Assert.Equal(Convert.ToInt32(dataFields[i]), val);
                }
                else if (dataTypes[i] == typeof(float))
                {
                    var val = net.EdgeData.GetValue<float>(owner, i);
                    Assert.Equal(Convert.ToSingle(dataFields[i]), val);
                }
                else if (dataTypes[i] == typeof(double))
                {
                    var val = net.EdgeData.GetValue<double>(owner, i);
                    Assert.Equal(Convert.ToDouble(dataFields[i]), val);
                }
                else
                {
                    Assert.True(false); //force a fail
                }
            }
        }