Example #1
0
        public void Test_three_disconnected_graphs()
        {
            var result = new UndirectedGraphConnectivity().FindNumberConnectedElements(new[]
            {
                new[] { 2 },    // 0
                new int[] { },  // 1
                new[] { 3, 0 }, // 2
                new[] { 2, 4 }, // 3
                new[] { 3 },    // 4
                new[] { 6, 7 }, // 5
                new[] { 5 },    // 6
                new[] { 5, 8 }, // 7
                new[] { 7 } // 8
            });

            result.Should().HaveCount(9);
            result.Min().Should().Be(1);
            result.Max().Should().Be(3);
            result[0].Should().Be(1);
            result[1].Should().Be(2);
            result[2].Should().Be(1);
            result[3].Should().Be(1);
            result[4].Should().Be(1);
            result[5].Should().Be(3);
            result[6].Should().Be(3);
            result[7].Should().Be(3);
            result[8].Should().Be(3);
        }
Example #2
0
        public void Test_two_disconnected_graphs()
        {
            var result = new UndirectedGraphConnectivity().FindNumberConnectedElements(new[]
            {
                new[] { 2 },    // 0
                new int[] { },  // 1
                new[] { 3, 0 }, // 2
                new[] { 2 } // 3
            });

            result[0].Should().Be(1);
            result[1].Should().Be(2);
            result[2].Should().Be(1);
            result[3].Should().Be(1);
        }
Example #3
0
        public void Only_one_group_all_nodes_connected()
        {
            var result = new UndirectedGraphConnectivity().FindNumberConnectedElements(new[]
            {
                new[] { 1 },    // 0
                new[] { 0, 2 }, // 1
                new[] { 1, 3 }, // 2
                new[] { 2, 4 }, // 3
                new[] { 3 } // 4
            });

            result[0].Should().Be(1);
            result[1].Should().Be(1);
            result[2].Should().Be(1);
            result[3].Should().Be(1);
            result[4].Should().Be(1);
            result.Length.Should().Be(5);
        }
Example #4
0
        public void One_node_one_graph_no_edges()
        {
            var result = new UndirectedGraphConnectivity().FindNumberConnectedElements(new[]
            {
                new int[] { }, // 0
                new int[] { }, // 1
                new int[] { }, // 2
                new int[] { }, // 3
                new int[] { } // 4
            });

            result[0].Should().Be(1);
            result[1].Should().Be(2);
            result[2].Should().Be(3);
            result[3].Should().Be(4);
            result[4].Should().Be(5);
            result.Length.Should().Be(5);
        }
Example #5
0
        public void Test_only_one_node()
        {
            var result = new UndirectedGraphConnectivity().FindNumberConnectedElements(new[] { new int[] { } });

            result[0].Should().Be(1);
        }
Example #6
0
        public void Null_graph_results_empty_result()
        {
            var result = new UndirectedGraphConnectivity().FindNumberConnectedElements(null);

            result.Should().HaveCount(0);
        }
Example #7
0
        public void Empty_graph_result_empty()
        {
            var result = new UndirectedGraphConnectivity().FindNumberConnectedElements(new int[0][]);

            result.Should().HaveCount(0);
        }