public void Collection_Ordering()
        {
            var collection = ToArray(ReadOnlyCollection.OrderBy(new int[0], item => item * 3));

            Assert.AreEqual(0, collection.Count);
            var source = new int[] { 9, 1, -3 };

            collection = ToArray(ReadOnlyCollection.OrderBy(source, item => item));
            Assert.AreEqual(3, collection.Count);
            Assert.AreEqual(-3, collection[0]);
            Assert.AreEqual(1, collection[1]);
            Assert.AreEqual(9, collection[2]);
            collection = ToArray(ReadOnlyCollection.OrderBy(source, item => System.Math.Abs(item)));
            Assert.AreEqual(3, collection.Count);
            Assert.AreEqual(1, collection[0]);
            Assert.AreEqual(-3, collection[1]);
            Assert.AreEqual(9, collection[2]);

            collection = ToArray(ReadOnlyCollection.OrderByDescending(new int[0], item => item * 3));
            Assert.AreEqual(0, collection.Count);
            collection = ToArray(ReadOnlyCollection.OrderByDescending(source, item => item));
            Assert.AreEqual(3, collection.Count);
            Assert.AreEqual(9, collection[0]);
            Assert.AreEqual(1, collection[1]);
            Assert.AreEqual(-3, collection[2]);
            collection = ToArray(ReadOnlyCollection.OrderByDescending(source, item => System.Math.Abs(item)));
            Assert.AreEqual(3, collection.Count);
            Assert.AreEqual(9, collection[0]);
            Assert.AreEqual(-3, collection[1]);
            Assert.AreEqual(1, collection[2]);

            var sizeComparer = new StringLenComparer();
            var col          = new string[] { "333", "222", "111", "11", "1111", null, "aaa", "a", "" };
            var collection2  = ToArray(ReadOnlyCollection.ThenBy(ReadOnlyCollection.OrderBy(col, item => item, sizeComparer), item => item, null));

            Assert.AreEqual(9, collection2.Count);
            Assert.AreEqual(null, collection2[0]);
            Assert.AreEqual("", collection2[1]);
            Assert.AreEqual("a", collection2[2]);
            Assert.AreEqual("11", collection2[3]);
            Assert.AreEqual("111", collection2[4]);
            Assert.AreEqual("222", collection2[5]);
            Assert.AreEqual("333", collection2[6]);
            Assert.AreEqual("aaa", collection2[7]);
            Assert.AreEqual("1111", collection2[8]);

            collection2 = ToArray(ReadOnlyCollection.ThenBy(ReadOnlyCollection.OrderByDescending(col, item => item, sizeComparer), item => item, null));
            Assert.AreEqual(9, collection2.Count);
            Assert.AreEqual("1111", collection2[0]);
            Assert.AreEqual("111", collection2[1]);
            Assert.AreEqual("222", collection2[2]);
            Assert.AreEqual("333", collection2[3]);
            Assert.AreEqual("aaa", collection2[4]);
            Assert.AreEqual("11", collection2[5]);
            Assert.AreEqual("a", collection2[6]);
            Assert.AreEqual("", collection2[7]);
            Assert.AreEqual(null, collection2[8]);

            collection2 = ToArray(ReadOnlyCollection.ThenByDescending(ReadOnlyCollection.OrderBy(col, item => item, sizeComparer), item => item, null));
            Assert.AreEqual(9, collection2.Count);
            Assert.AreEqual(null, collection2[0]);
            Assert.AreEqual("", collection2[1]);
            Assert.AreEqual("a", collection2[2]);
            Assert.AreEqual("11", collection2[3]);
            Assert.AreEqual("aaa", collection2[4]);
            Assert.AreEqual("333", collection2[5]);
            Assert.AreEqual("222", collection2[6]);
            Assert.AreEqual("111", collection2[7]);
            Assert.AreEqual("1111", collection2[8]);
        }
Example #2
0
        public void List_Ordering()
        {
            var list = ReadOnlyList.OrderBy(new int[0], item => item * 3);

            Assert.AreEqual(0, list.Count);
            var source = new int[] { 9, 1, -3 };

            list = ReadOnlyList.OrderBy(source, item => item);
            Assert.AreEqual(3, list.Count);
            Assert.AreEqual(-3, list[0]);
            Assert.AreEqual(1, list[1]);
            Assert.AreEqual(9, list[2]);
            list = ReadOnlyList.OrderBy(source, item => System.Math.Abs(item));
            Assert.AreEqual(3, list.Count);
            Assert.AreEqual(1, list[0]);
            Assert.AreEqual(-3, list[1]);
            Assert.AreEqual(9, list[2]);

            list = ReadOnlyList.OrderByDescending(new int[0], item => item * 3);
            Assert.AreEqual(0, list.Count);
            list = ReadOnlyList.OrderByDescending(source, item => item);
            Assert.AreEqual(3, list.Count);
            Assert.AreEqual(9, list[0]);
            Assert.AreEqual(1, list[1]);
            Assert.AreEqual(-3, list[2]);
            list = ReadOnlyList.OrderByDescending(source, item => System.Math.Abs(item));
            Assert.AreEqual(3, list.Count);
            Assert.AreEqual(9, list[0]);
            Assert.AreEqual(-3, list[1]);
            Assert.AreEqual(1, list[2]);

            var sizeComparer = new StringLenComparer();
            var src          = new string[] { "333", "222", "111", "11", "1111", null, "aaa", "a", "" };
            var list2        = ReadOnlyList.ThenBy(ReadOnlyList.OrderBy(src, item => item, sizeComparer), item => item, null);

            Assert.AreEqual(9, list2.Count);
            Assert.AreEqual(null, list2[0]);
            Assert.AreEqual("", list2[1]);
            Assert.AreEqual("a", list2[2]);
            Assert.AreEqual("11", list2[3]);
            Assert.AreEqual("111", list2[4]);
            Assert.AreEqual("222", list2[5]);
            Assert.AreEqual("333", list2[6]);
            Assert.AreEqual("aaa", list2[7]);
            Assert.AreEqual("1111", list2[8]);

            list2 = ReadOnlyList.ThenBy(ReadOnlyList.OrderByDescending(src, item => item, sizeComparer), item => item, null);
            Assert.AreEqual(9, list2.Count);
            Assert.AreEqual("1111", list2[0]);
            Assert.AreEqual("111", list2[1]);
            Assert.AreEqual("222", list2[2]);
            Assert.AreEqual("333", list2[3]);
            Assert.AreEqual("aaa", list2[4]);
            Assert.AreEqual("11", list2[5]);
            Assert.AreEqual("a", list2[6]);
            Assert.AreEqual("", list2[7]);
            Assert.AreEqual(null, list2[8]);

            list2 = ReadOnlyList.ThenByDescending(ReadOnlyList.OrderBy(src, item => item, sizeComparer), item => item, null);
            Assert.AreEqual(9, list2.Count);
            Assert.AreEqual(null, list2[0]);
            Assert.AreEqual("", list2[1]);
            Assert.AreEqual("a", list2[2]);
            Assert.AreEqual("11", list2[3]);
            Assert.AreEqual("aaa", list2[4]);
            Assert.AreEqual("333", list2[5]);
            Assert.AreEqual("222", list2[6]);
            Assert.AreEqual("111", list2[7]);
            Assert.AreEqual("1111", list2[8]);
        }