public void NodeDataAttributeCount_With_DataAttributes(int nodeCount, bool enableNodeData, bool enableEdgeData, int expectedLength, Type[] dataTypes)
        {
            var fac = new BasicAdjListFactory();
            fac.EnableNodeDataAttributes = enableNodeData;
            fac.EnableEdgeDataAttributes = enableEdgeData;
            var net = fac.CreateNetwork(Guid.Empty, 0) as IBasicAdjList;

            // add cols to node data attribs
            var netNodeData = net as INodeAttributes;
            for(int i=0; i<expectedLength;i++)
            {
                netNodeData.NodeData.AddColumn(string.Format("col_{0}", i), dataTypes[i]);
            }

            Assert.Equal(0, net.NodeCount);
            if (enableNodeData)
                Assert.Equal(expectedLength, net.NodeDataAttributeCount);
            else
                Assert.Equal(0, net.NodeDataAttributeCount);

            INode nodeA = null;
            for(int i=0; i<nodeCount;i++)
                nodeA = net.CreateNode();

            Assert.Equal(nodeCount, net.NodeCount);
            if (enableNodeData)
                Assert.Equal(expectedLength, net.NodeDataAttributeCount);
            else
                Assert.Equal(0, net.NodeDataAttributeCount);
        }
        public void NodeDataAttributeCount_With_0_DataAttributes(int nodeCount, bool enableNodeData, bool enableEdgeData)
        {
            var fac = new BasicAdjListFactory();
            fac.EnableNodeDataAttributes = enableNodeData;
            fac.EnableEdgeDataAttributes = enableEdgeData;
            var net = fac.CreateNetwork(Guid.Empty, nodeCount) as IBasicAdjList;

            Assert.Equal(nodeCount, net.NodeCount);
            if (enableNodeData)
                Assert.Equal(nodeCount, net.NodeDataAttributeCount);
            else
                Assert.Equal(0, net.NodeDataAttributeCount);
        }
示例#3
0
        public void CreateNetwork(int nodeCount, bool isDirected)
        {
            Type expectedType = typeof(BasicAdjList);
            BasicAdjListFactory fac = new BasicAdjListFactory();
            fac.IsDirected = isDirected;
            var net = fac.CreateNetwork(Guid.Empty, nodeCount) as IBasicAdjList;

            Assert.NotNull(net);
            Assert.IsType(expectedType, net);
            Assert.Equal(nodeCount, net.NodeCount);
            Assert.Equal(isDirected, net.IsDirected);
            Assert.Null(net.NodeData);
            Assert.Null(net.EdgeData);
        }
示例#4
0
        public void CreateNetwork_Fires_ProgressCompleted_Event()
        {
            //Arrange
            int nodeCount = 1037;
            Blob.TestSupport.ProgressEventHandlerHelper progressEventHandlerHelper = new Blob.TestSupport.ProgressEventHandlerHelper();
            BasicAdjListFactory fac = new BasicAdjListFactory();

            fac.ProgressCompleted += new ProgressCompletedEventHandler<IUpdateProgress, ProgressCompletedEventArgs>(progressEventHandlerHelper.NetObjFac_ProgressCompletedEventHandler);

            //Act
            fac.CreateNetwork(Guid.Empty, nodeCount);

            //Assert
            Assert.True(progressEventHandlerHelper.IsCompleted);
        }
示例#5
0
        /// <summary>
        /// Parses a particular string format to a network.  Format is
        /// "n,e,d|pair;pair;pair" where n = node count, e = edge count, d = true/false for directedness and
        /// pair is a number pair of node indices indicating an edges.  Ex:  "5,3,false|0,1;1,2;3,5"  *note that the
        /// number of pairs should match the number of edges
        /// </summary>
        public static IBasicAdjList ParseToNetwork(string input, bool enableNodeData, bool enableEdgeData)
        {
            // n,e,directed|pair;
            // 7,23,false|0,3;0,2;0,4;1,4;1,2;1,3;2,5;2,4;2,4;3,5;3,1;3,6;3,0;4,4;4,5;4,3;5,1;5,1;5,4;5,6;5,0;6,3;6,1;
            IBasicAdjList network = null;
            var split1 = input.Split(new[] {'|'});
            var split2 = split1[0].Split(new[] { ',' });

            int n = int.Parse(split2[0]);
            int m = int.Parse(split2[1]);
            bool directed = bool.Parse(split2[2]);

            var split3 = split1[1].Split(new[] { ';' }); // pairs

            if(split3.Length != m)
                throw new ArgumentException(string.Format("The number of pairs {0} did not match the number of edges {1} in {2}", split3.Length, m, input));
            INode a = null;
            INode b = null;

            using (var fac = new BasicAdjListFactory())
            {
                network = new BasicAdjList(Guid.NewGuid(), directed);
                for(int i=0; i<n; i++)
                    network.CreateNode();
            }

            string[] pair = null;
            int indexA = -1;
            int indexB = -1;
            for (int i = 0; i < split3.Length; i++ )
            {
                pair = split3[i].Split(new[] { ',' });
                indexA = int.Parse(pair[0]);
                indexB = int.Parse(pair[1]);
                a = network.Nodes[indexA];
                b = network.Nodes[indexB];
                network.CreateEdge(a, b);
            }

            using (var fac = new DataAttributeTableFactory(network))
            {
                if (enableNodeData)
                    fac.CreateNodeDataTable();
                if (enableEdgeData)
                    fac.CreateEdgeDataTable();
            }
            return network;
        }
示例#6
0
        public void CreateNetwork_Fires_ProgressEvents()
        {
            // Raising an event on the mock
            //  mock.Raise(m => m.FooEvent += null, new FooEventArgs(fooValue));
            int nodeCount = 13;
            Blob.TestSupport.ProgressEventHandlerHelper progressEventHandlerHelper = new Blob.TestSupport.ProgressEventHandlerHelper();
            BasicAdjListFactory fac = new BasicAdjListFactory();

            fac.ProgressChanged += new ProgressEventHandler<IUpdateProgress, ProgressEventArgs>(progressEventHandlerHelper.NetObjFac_ProgressEventHandler);

            //Act
            fac.CreateNetwork(Guid.Empty, nodeCount);

            //Assert
            Assert.True(progressEventHandlerHelper.ProgressCtr > 1);
        }
示例#7
0
        public void CreateNetwork_With_DataAttributes(int nodeCount, bool enableNodeData, bool enableEdgeData)
        {
            Type expectedType = typeof(BasicAdjList);
            BasicAdjListFactory fac = new BasicAdjListFactory();
            fac.EnableNodeDataAttributes = enableNodeData;
            fac.EnableEdgeDataAttributes = enableEdgeData;
            var net = fac.CreateNetwork(Guid.Empty, nodeCount) as IBasicAdjList;

            Assert.NotNull(net);
            Assert.IsType(expectedType, net);
            Assert.Equal(nodeCount, net.NodeCount);
            if (enableNodeData)
            Assert.NotNull(net.NodeData);
            else
                Assert.Null(net.NodeData);
            if (enableEdgeData)
                Assert.NotNull(net.EdgeData);
            else
                Assert.Null(net.EdgeData);
        }
示例#8
0
        public void CreateNetwork_With_IsDirected_Param_Fires_ProgressEvents(bool isDirected)
        {
            //Arrange
            int nodeCount = 1037;
            Blob.TestSupport.ProgressEventHandlerHelper progressEventHandlerHelper = new Blob.TestSupport.ProgressEventHandlerHelper();
            BasicAdjListFactory fac = new BasicAdjListFactory();
            fac.IsDirected = isDirected;

            fac.ProgressChanged += new ProgressEventHandler<IUpdateProgress, ProgressEventArgs>(progressEventHandlerHelper.NetObjFac_ProgressEventHandler);

            //Act
            fac.CreateNetwork(Guid.Empty, nodeCount);

            //Assert
            int result = progressEventHandlerHelper.ProgressCtr;
            Assert.True(progressEventHandlerHelper.ProgressCtr > 0);
        }