Esempio n. 1
0
        public void GridList_remove()
        {
            var list = new GridList <int>();

            list.Add(1);
            list.Add(5);
            list.Add(10);
            list.Add(12);
            list.Add(15);
            list.Add(19);
            list.Add(20);

            Assert.Equal(7, list.Count);
            Assert.True(list.TryErase(12, out var previous));
            Assert.NotNull(previous);
            Assert.Equal(10, previous.Value);

            Assert.False(list.TrySearch(12, out previous));
            Assert.Equal(10, previous.Value);

            list.TrySearch(5, out var node5);
            //deleting 12 again should return false
            Assert.False(list.TryErase(12, out previous, node5));
            Assert.NotNull(previous);
            Assert.Equal(10, previous.Value);

            list.Add(7, node5);
            Assert.True(list.TrySearch(7, out previous));
            //deleting 12 again should return false
            Assert.False(list.TryErase(12, out previous, node5));
            Assert.NotNull(previous);
            Assert.Equal(10, previous.Value);

            //remove head
            Assert.True(list.TryErase(1, out previous));
            Assert.Null(previous);
            Assert.False(list.TrySearch(1, out previous));
            Assert.Null(previous);//previous is null for first node
            Assert.True(list.TrySearch(5, out previous));

            Assert.False(list.TrySearch(3, out previous));
            Assert.Null(previous);// previous is null if query is before first node

            //remove tail
            Assert.True(list.TryErase(20, out previous));
            Assert.NotNull(previous);
            Assert.Equal(19, previous.Value);
            Assert.False(list.TrySearch(20, out previous));
            Assert.True(list.TrySearch(19, out previous));

            Assert.Equal(5, list.Count);
            //perform some add after deletion
            list.Add(3);
            Assert.True(list.TrySearch(3, out previous));
            list.Add(21);
            Assert.True(list.TrySearch(21, out previous));
            Assert.Equal(7, list.Count);
        }