public void CheckIfThenByWorksCorrectly()
        {
            List <string> names = new List <string>
            {
                "Ana", "Vlad", "Dorina", "Croc", "Hook", "Alexandru"
            };
            Func <string, string> keySelector = x => x;
            FirstLetterComparer   comparer    = new FirstLetterComparer();
            var finalOrderedBy = DataStructures.LinqFunctions.OrderBy <string, string>(names, keySelector, comparer);
            SecondLetterComparer secondComparer = new SecondLetterComparer();
            var           finalThenBy           = DataStructures.LinqFunctions.ThenBy <string, string>(finalOrderedBy, keySelector, secondComparer);
            List <string> orderedNames          = new List <string>();

            orderedNames.Add("Alexandru");
            orderedNames.Add("Ana");
            orderedNames.Add("Croc");
            orderedNames.Add("Dorina");
            orderedNames.Add("Hook");
            orderedNames.Add("Vlad");
            bool k = true;
            int  i = 0;

            foreach (var obj in finalThenBy)
            {
                if (!orderedNames[i].Equals(obj))
                {
                    k = false;
                    break;
                }

                i++;
            }

            Assert.True(k);
        }
        public void CheckIfOrderByArgumentWorksCorrectly()
        {
            List <string>         names        = null;
            Func <string, string> keySelector  = x => x;
            FirstLetterComparer   comparer     = new FirstLetterComparer();
            List <string>         orderedNames = new List <string>();

            orderedNames.Add("Ana");
            orderedNames.Add("Andrei");
            orderedNames.Add("Croc");
            orderedNames.Add("Dorina");
            orderedNames.Add("Hook");
            orderedNames.Add("Vlad");
            Assert.Throws <ArgumentNullException>(() => names.Equals(DataStructures.LinqFunctions.OrderBy <string, string>(names, keySelector, comparer)));
        }
        public void CheckIfOrderByWorksCorrectly()
        {
            List <string> names = new List <string>
            {
                "Ana", "Vlad", "Dorina", "Croc", "Hook", "Andrei"
            };
            Func <string, string> keySelector  = x => x;
            List <string>         orderedNames = new List <string>();

            orderedNames.Add("Ana");
            orderedNames.Add("Andrei");
            orderedNames.Add("Croc");
            orderedNames.Add("Dorina");
            orderedNames.Add("Hook");
            orderedNames.Add("Vlad");
            FirstLetterComparer comparer = new FirstLetterComparer();
            var final = DataStructures.LinqFunctions.OrderBy <string, string>(names, keySelector, comparer);

            DataStructures.OrderedEnumerable <string> finalOrdered = new DataStructures.OrderedEnumerable <string>(final, comparer);
            Assert.Equal(orderedNames, finalOrdered.UnorderedList());
        }