public void SortsLargeDescendingEnumerableCorrectly(int thenBys)
        {
            const int         Items    = 100_000;
            IEnumerable <int> expected = NumberRangeGuaranteedNotCollectionType(0, Items);

            IEnumerable <int> unordered = expected.Select(i => Items - i - 1);

            System.Linq.IOrderedEnumerable <int> ordered = unordered.OrderBy(_ => 0);
            switch (thenBys)
            {
            case 1: ordered = ordered.ThenByDescending(i => - i); break;

            case 2: ordered = ordered.ThenByDescending(i => 0).ThenByDescending(i => - i); break;

            case 3: ordered = ordered.ThenByDescending(i => 0).ThenByDescending(i => 0).ThenByDescending(i => - i); break;
            }

            Assert.Equal(expected, ordered);
        }
        public void SortsLargeRandomizedEnumerableCorrectly(int thenBys)
        {
            const int Items = 100_000;
            var       r     = new Random(42);

            int[] randomized = Enumerable.Range(0, Items).Select(i => r.Next()).ToArray();

            System.Linq.IOrderedEnumerable <int> orderedEnumerable = randomized.OrderBy(_ => 0);
            switch (thenBys)
            {
            case 1: orderedEnumerable = orderedEnumerable.ThenByDescending(i => - i); break;

            case 2: orderedEnumerable = orderedEnumerable.ThenByDescending(i => 0).ThenByDescending(i => - i); break;

            case 3: orderedEnumerable = orderedEnumerable.ThenByDescending(i => 0).ThenByDescending(i => 0).ThenByDescending(i => - i); break;
            }
            int[] ordered = orderedEnumerable.ToArray();

            Array.Sort(randomized, (a, b) => a - b);
            Assert.Equal(randomized, orderedEnumerable);
        }
 // [Fact]
 public void NullSourceComparer()
 {
     System.Linq.IOrderedEnumerable <int> source = null;
     Assert.Throws <ArgumentNullException>("source", () => source.ThenByDescending(i => i, null));
 }
 public void NullSource()
 {
     System.Linq.IOrderedEnumerable <int> source = null;
     AssertExtensions.Throws <ArgumentNullException>("source", () => source.ThenByDescending(i => i));
 }