public void CanRemoveMiddleItem() { ListModel <int> list = null; "Given non empty single model list" .x(() => { list = new ListModel <int>(); list.AddInTail(1); list.AddInTail(2); list.AddInTail(3); list.AddInTail(4); list.AddInTail(5); }); "And cursor set in item 4" .x(() => { list.CursorToHead(); list.SetToNextSameItem(4); }); "When user tries to remove current item" .x(() => { list.RemoveItem(); }); "Then system must return head item and set cursor to new head" .x(() => { var items = list.GetItems(); var isSet = list.IsCursorSet(); var item = list.GetItem(); var expected = new List <int>() { 1, 2, 3, 5 }; isSet.Should().BeTrue(); item.Should().Be(5); items.Should().BeEquivalentTo(expected); }); }