Example #1
0
            public void ReturnsCorrectValueForInitializedSets() {
                const int n = 5;
                var fastDisjointSet = new FastDisjointSet(n);

                var expected = Enumerable
                    .Range(0, 5)
                    .Select(e => (new[] {e}));

                var actual = fastDisjointSet.GetSets();

                Assert.Equal(expected, actual);
            }
Example #2
0
            public void ReturnsCorrectValueForFullyMergedSets() {
                const int n = 5;
                var fastDisjointSet = new FastDisjointSet(n);

                // Merge all items
                foreach (var item in Enumerable.Range(1, n - 1)) {
                    fastDisjointSet.Union(0, item);
                }

                var expected = new[] {
                    new[] {0, 1, 2, 3, 4},
                };

                var actual = fastDisjointSet.GetSets();

                Assert.Equal(expected, actual);
            }
Example #3
0
            public void ReturnsCorrectValueForPartiallyMergedSets() {
                const int n = 5;
                var fastDisjointSet = new FastDisjointSet(n);

                // Make merges so structure looks like:
                // [[0,1],[2],[3,4]]
                fastDisjointSet.Union(0, 1);
                fastDisjointSet.Union(3, 4);

                var expected = new[] {
                    new[] {0, 1},
                    new[] {2},
                    new[] {3, 4},
                };

                var actual = fastDisjointSet.GetSets();

                Assert.Equal(expected, actual);
            }