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) { } }
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)); }
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."); }
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); } }
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) { } }