public void ShouldUpdateElementAtCorrectIndexOnSet()
{
var linkedList = new LinkedList <int>();
linkedList.PushFront(10);
linkedList.PushFront(20);
linkedList.PushFront(10);
linkedList.PushFront(30);
Assert.AreEqual(4, linkedList.Length);
Assert.AreEqual(10, linkedList.ElementAt(3));
Assert.AreEqual(20, linkedList.ElementAt(2));
Assert.AreEqual(10, linkedList.ElementAt(1));
Assert.AreEqual(30, linkedList.ElementAt(0));
Assert.AreEqual(30, linkedList.Head);
Assert.AreEqual(10, linkedList.Tail);
linkedList.Set(0, 130);
Assert.AreEqual(4, linkedList.Length);
Assert.AreEqual(10, linkedList.ElementAt(3));
Assert.AreEqual(20, linkedList.ElementAt(2));
Assert.AreEqual(10, linkedList.ElementAt(1));
Assert.AreEqual(130, linkedList.ElementAt(0));
Assert.AreEqual(130, linkedList.Head);
Assert.AreEqual(10, linkedList.Tail);
linkedList.Set(3, 110);
Assert.AreEqual(4, linkedList.Length);
Assert.AreEqual(110, linkedList.ElementAt(3));
Assert.AreEqual(20, linkedList.ElementAt(2));
Assert.AreEqual(10, linkedList.ElementAt(1));
Assert.AreEqual(130, linkedList.ElementAt(0));
Assert.AreEqual(130, linkedList.Head);
Assert.AreEqual(110, linkedList.Tail);
linkedList.Set(2, 120);
Assert.AreEqual(4, linkedList.Length);
Assert.AreEqual(110, linkedList.ElementAt(3));
Assert.AreEqual(120, linkedList.ElementAt(2));
Assert.AreEqual(10, linkedList.ElementAt(1));
Assert.AreEqual(130, linkedList.ElementAt(0));
Assert.AreEqual(130, linkedList.Head);
Assert.AreEqual(110, linkedList.Tail);
linkedList.Set(1, 140);
Assert.AreEqual(4, linkedList.Length);
Assert.AreEqual(110, linkedList.ElementAt(3));
Assert.AreEqual(120, linkedList.ElementAt(2));
Assert.AreEqual(140, linkedList.ElementAt(1));
Assert.AreEqual(130, linkedList.ElementAt(0));
Assert.AreEqual(130, linkedList.Head);
Assert.AreEqual(110, linkedList.Tail);
}