예제 #1
0
        public void HandlesDuplicateElements(IBreadcrumbSorter sorter)
        {
            var randomizer = new Random();

            for (var i = 0; i < 16; i++)
            {
                var parts       = _hierarchyRigged.Shuffle(randomizer);
                var partsSorted = sorter.SortByChildHierarchy(parts).ToArray();

                Assert.Equal(3, partsSorted.Length);
            }
        }
예제 #2
0
        public void OmitsUnrelatedParts(IBreadcrumbSorter sorter)
        {
            var randomizer = new Random();

            for (var i = 0; i < 16; i++)
            {
                var parts       = _hierarchyUnrelated.Shuffle(randomizer);
                var partsSorted = sorter.SortByChildHierarchy(parts).ToArray();

                Assert.Equal(3, partsSorted.Length);

                var unrelated = partsSorted.FirstOrDefault(x => x.ParentId == "1.1.2");

                Assert.Null(unrelated);
            }
        }
예제 #3
0
        public void SortsHierarchyCorrectly(IBreadcrumbSorter sorter)
        {
            var randomizer = new Random();

            for (var i = 0; i < 16; i++)
            {
                var parts       = _hierarchy.Shuffle(randomizer);
                var partsSorted = sorter.SortByChildHierarchy(parts).ToArray();

                for (var j = 1; j < partsSorted.Length - 1; j++)
                {
                    var parent = partsSorted[j - 1];
                    var child  = partsSorted[j];

                    Assert.Equal(parent.CategoryId, child.ParentId);
                }
            }
        }
예제 #4
0
        public void RunsPrettyFast(IBreadcrumbSorter sorter)
        {
            var timer = new Stopwatch();

            timer.Start();

            for (var i = 0; i < 100000; i++)
            {
                // Actually enumerate to test real execution speed
                foreach (var item in sorter.SortByChildHierarchy(_hierarchy))
                {
                    ;
                }
            }

            timer.Stop();

            Assert.InRange(timer.ElapsedMilliseconds, 0, 1000);
        }