public void ReturnKthToLastTest_InvalidCases()
        {
            try
            {
                Question_2_2.ReturnKthToLast(null, 2);
                Assert.Fail("ArgumentNullException was not thrown for null list.");
            }
            catch (ArgumentNullException) { }

            try
            {
                Question_2_2.ReturnKthToLast(new LinkedList(), 2);
                Assert.Fail("ArgumentNullException was not thrown for empty list.");
            }
            catch (ArgumentNullException) { }

            try
            {
                int k = 2;
                Question_2_2.ReturnKthToLast(new LinkedList(new int[] { 1 }), k);
                Assert.Fail($"ArgumentOutOfRangeException was not thrown for invalid k={k}.");
            }
            catch (ArgumentOutOfRangeException) { }

            try
            {
                int k = -1;
                Question_2_2.ReturnKthToLast(new LinkedList(new int[] { 1 }), k);
                Assert.Fail($"ArgumentOutOfRangeException was not thrown for invalid k={k}.");
            }
            catch (ArgumentOutOfRangeException) { }
        }
Пример #2
0
            public void Question_2_2_EdgeCases()
            {
                // 1 => 1 - Only one element.
                var l1 = ListHelpers.CreateLinkedList(1);

                Assert.AreEqual(1, Question_2_2.ReturnKthToLast(l1, 0));
            }
Пример #3
0
            private void ValidateResult <T>(Node <T> expected, Node <T> input, int k)
                where T : IEquatable <T>
            {
                var inputCopy  = ListHelpers.CloneList(input);
                var inputCopy2 = ListHelpers.CloneList(input);

                Assert.AreEqual(expected, Question_2_2.ReturnKthToLast(inputCopy, k));
            }
        public void ReturnKthToLastTest(int k, int expected)
        {
            var testList = new LinkedList(new int[] { 1, 2, 3, 2, 1, 4, 5, 6, 5, 4, 3, 2, 1, 10, 1 });
            int result   = Question_2_2.ReturnKthToLast(testList, k);

            Assert.AreEqual(expected, result, $"{k}th element {expected} is expected but got {result}.");

            result = Question_2_2.ReturnKthToLastRecursive(testList, k);
            Assert.AreEqual(expected, result, $"{k}th element {expected} is expected but got {result} - recursive.");

            result = Question_2_2.ReturnKthToLastOnePass(testList, k);
            Assert.AreEqual(expected, result, $"{k}th element {expected} is expected but got {result} - one pass.");
        }
Пример #5
0
            public void Question_2_2_BasicCases()
            {
                // Cover all case for K for a list of length 6.
                const int NumberElements = 6;

                var list = ListHelpers.CreateLinkedList(Enumerable.Range(0, NumberElements).Reverse().ToArray());

                for (var i = 0; i < NumberElements; i++)
                {
                    var listCopy = ListHelpers.CloneList(list);
                    var result   = Question_2_2.ReturnKthToLast(listCopy, i);
                    Assert.AreEqual(i, result);
                }
            }
Пример #6
0
            public void Question_2_2_InvalidCases()
            {
                Node <int> invalidHead = null;
                var        head        = ListHelpers.CreateLinkedList(1);

                TestHelpers.AssertExceptionThrown(
                    () => Question_2_2.ReturnKthToLast(invalidHead, 0),
                    typeof(ArgumentNullException));

                TestHelpers.AssertExceptionThrown(
                    () => Question_2_2.ReturnKthToLast(head, -1),
                    typeof(ArgumentOutOfRangeException));

                TestHelpers.AssertExceptionThrown(
                    () => Question_2_2.ReturnKthToLast(head, 1),
                    typeof(ArgumentOutOfRangeException));
            }
        public void ReturnKthToLastOnePassTest_InvalidCases()
        {
            try
            {
                int k = 2;
                Question_2_2.ReturnKthToLastOnePass(new LinkedList(new int[] { 1 }), k);
                Assert.Fail($"ArgumentOutOfRangeException was not thrown for invalid k={k}.");
            }
            catch (ArgumentOutOfRangeException) { }

            try
            {
                int k = -1;
                Question_2_2.ReturnKthToLastOnePass(new LinkedList(new int[] { 1 }), k);
                Assert.Fail($"ArgumentOutOfRangeException was not thrown for invalid k={k}.");
            }
            catch (ArgumentOutOfRangeException) { }
        }