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]); }
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]); }