public void Should_Get_Kth_From_Tail() { var input = new LinkedNodeList <int>(new[] { 1, 2, 3, 4, 5 }); var expected = new LinkedNodeList <int>(new[] { 4, 5 }); LinkedNodeUtilities.GetKthFromEnd(input.Head, 2).Should().BeEquivalentTo(expected.Head); LinkedNodeUtilities.GetKthFromEnd(input.Head, 5).Should().BeEquivalentTo(input.Head); LinkedNodeUtilities.GetKthFromEnd(input.Head, 1).Should().BeEquivalentTo(input.Last()); }
public void Should_Throw_Exception_For_Invalid_Kth_From_Tail() { var input = new LinkedNodeList <int>(new[] { 1, 2, 3, 4, 5 }); var ex = Assert.Throws <Exception>(() => LinkedNodeUtilities.GetKthFromEnd(input.Head, 6)); ex.Message.Should().Be("Invalid k is larger than linked list length"); var ex2 = Assert.Throws <Exception>(() => LinkedNodeUtilities.GetKthFromEnd(input.Head, 0)); ex2.Message.Should().Be("K should be larger than 0"); LinkedNodeUtilities.GetKthFromEnd <int>(null, 0).Should().BeNull(); }