public void SortByConstructorNoDirection(string column, string expected0, string expected1, string expected2)
        {
            MultiLevelComparer <TestClass> comparer = new MultiLevelComparer <TestClass>(column);

            list.Sort(comparer);

            Assert.AreEqual(expected0, list[0].Name);
            Assert.AreEqual(expected1, list[1].Name);
            Assert.AreEqual(expected2, list[2].Name);
        }
        public void SortByAddColumn(SortDirection direction, string column, string expected0, string expected1, string expected2)
        {
            MultiLevelComparer <TestClass> comparer = new MultiLevelComparer <TestClass>();

            comparer.AddColumn(column, direction);
            list.Sort(comparer);

            Assert.AreEqual(expected0, list[0].Name);
            Assert.AreEqual(expected1, list[1].Name);
            Assert.AreEqual(expected2, list[2].Name);
        }
        public void MultipleColumnsWithDuplicateValuesMixedDirection(SortDirection direction1, SortDirection direction2, string column1, string column2, string expected0, string expected1, string expected2)
        {
            MultiLevelComparer <TestClass> comparer = new MultiLevelComparer <TestClass>();

            comparer.AddColumn(column1, direction1);
            comparer.AddColumn(column2, direction2);
            dupClasses.Sort(comparer);

            Assert.AreEqual(expected0, dupClasses[0].Name);
            Assert.AreEqual(expected1, dupClasses[1].Name);
            Assert.AreEqual(expected2, dupClasses[2].Name);
        }
        public void SortNonComparable()
        {
            List <object> nonCompList = new List <object>();

            nonCompList.Add(new object());
            nonCompList.Add(new object());
            nonCompList.Add(new object());

            MultiLevelComparer <object> comparer = new MultiLevelComparer <object>();

            nonCompList.Sort(comparer);
        }
        public void SortNoSortColumn()
        {
            list = new List <TestClass>
            {
                new TestClass(2, "ZUser", new DateTime(2004, 5, 11)),
                new TestClass(1, "BUser", new DateTime(2006, 6, 26)),
                new TestClass(3, "JUser", new DateTime(2005, 2, 2))
            };

            MultiLevelComparer <TestClass> comparer = new MultiLevelComparer <TestClass>();

            list.Sort(comparer);
            Assert.AreEqual("ZUser", list[0].Name);
            Assert.AreEqual("BUser", list[1].Name);
            Assert.AreEqual("JUser", list[2].Name);
        }
        public void SpeedTest()
        {
            List <TestClass> bigList = new List <TestClass>();
            CryptoRandom     random  = new CryptoRandom("{A:10}");

            for (int i = 0; i < 100000; i++)
            {
                bigList.Add(new TestClass(i, random.Generate(), DateTime.Now));
            }

            CodeTimer timer = CodeTimer.Start();

            MultiLevelComparer <TestClass> comparer = new MultiLevelComparer <TestClass>();

            comparer.AddColumn("Id", SortDirection.Ascending);
            comparer.AddColumn("Name", SortDirection.Descending);
            bigList.Sort(comparer);

            Console.WriteLine("Sorted in {0} ms", CodeTimer.Stop(timer).TotalMilliseconds);
        }