예제 #1
0
 public void LruList_AddNonEmpty()
 {
     var lruList = new LruList<string, string>();
     var item1 = new LruListItem<string, string>("key1", "value1");
     var item2 = new LruListItem<string, string>("key2", "value2");
     lruList.Add(item1);
     lruList.Add(item2);
     AssertListState(lruList, item2, item1);
 }
예제 #2
0
        public void LruList_AddNonEmpty()
        {
            var lruList = new LruList <string, string>();
            var item1   = new LruListItem <string, string>("key1", "value1");
            var item2   = new LruListItem <string, string>("key2", "value2");

            lruList.Add(item1);
            lruList.Add(item2);
            AssertListState(lruList, item2, item1);
        }
예제 #3
0
 public void LruList_RemoveTailTwoItems()
 {
     var lruList = new LruList<string, string>();
     var item1 = new LruListItem<string, string>("key1", "value1");
     var item2 = new LruListItem<string, string>("key2", "value2");
     lruList.Add(item1);
     lruList.Add(item2);
     lruList.Remove(item1);
     AssertDisconnected(item1);
     AssertListState(lruList, item2);
 }
예제 #4
0
        public void LruList_RemoveTailTwoItems()
        {
            var lruList = new LruList <string, string>();
            var item1   = new LruListItem <string, string>("key1", "value1");
            var item2   = new LruListItem <string, string>("key2", "value2");

            lruList.Add(item1);
            lruList.Add(item2);
            lruList.Remove(item1);
            AssertDisconnected(item1);
            AssertListState(lruList, item2);
        }
예제 #5
0
        public void ReverseWorksAsExpected()
        {
            // --- Arrange
            var lru = new LruList <int>(3);

            lru.Add(100);
            lru.Add(200);
            lru.Add(300);
            lru.Add(400);
            lru.Add(500);
            lru.Add(600);
            lru.Add(700);
            lru.Add(800);
            var revList = new List <int>();

            // --- Act
            foreach (var item in lru.Reverse())
            {
                revList.Add(item);
            }

            // --- Assert
            revList.Count.ShouldBe(3);
            revList[0].ShouldBe(800);
            revList[1].ShouldBe(700);
            revList[2].ShouldBe(600);
        }
예제 #6
0
        public void ContainsWorksWhenCapacityIsExceededMultipleTimes()
        {
            // --- Arrange
            var lru = new LruList <int>(3);

            // --- Act
            lru.Add(100);
            lru.Add(200);
            lru.Add(300);
            lru.Add(400);
            lru.Add(500);
            lru.Add(600);
            lru.Add(700);
            lru.Add(800);

            // --- Assert
            lru.Contains(100).ShouldBeFalse();
            lru.Contains(200).ShouldBeFalse();
            lru.Contains(300).ShouldBeFalse();
            lru.Contains(400).ShouldBeFalse();
            lru.Contains(500).ShouldBeFalse();
            lru.Contains(600).ShouldBeTrue();
            lru.Contains(700).ShouldBeTrue();
            lru.Contains(800).ShouldBeTrue();
            lru.Contains(900).ShouldBeFalse();
        }
예제 #7
0
        public void ContainsWorksWhenCapacityIsNotExceeded()
        {
            // --- Arrange
            var lru = new LruList <int>(3);

            // --- Act
            lru.Add(100);
            lru.Add(200);

            // --- Assert
            lru.Contains(100).ShouldBeTrue();
            lru.Contains(200).ShouldBeTrue();
            lru.Contains(300).ShouldBeFalse();
        }
예제 #8
0
        public void AddWorksWhenCapacityIsNotExceeded()
        {
            // --- Arrange
            var lru = new LruList <int>(3);

            // --- Act
            lru.Add(100);
            lru.Add(200);

            // --- Assert
            lru.Capacity.ShouldBe(3);
            lru.Count.ShouldBe(2);
            lru[0].ShouldBe(100);
            lru[1].ShouldBe(200);
        }
예제 #9
0
 public void LruList_RemoveOneItem()
 {
     var lruList = new LruList<string, string>();
     var item1 = new LruListItem<string, string>("key1", "value1");
     lruList.Add(item1);
     lruList.Remove(item1);
     AssertDisconnected(item1);
     AssertListState(lruList);
 }
예제 #10
0
        public void LruList_RemoveOneItem()
        {
            var lruList = new LruList <string, string>();
            var item1   = new LruListItem <string, string>("key1", "value1");

            lruList.Add(item1);
            lruList.Remove(item1);
            AssertDisconnected(item1);
            AssertListState(lruList);
        }
예제 #11
0
        public void AddWorksWhenCapacityIsExceededMultipleTimes()
        {
            // --- Arrange
            var lru = new LruList <int>(3);

            // --- Act
            lru.Add(100);
            lru.Add(200);
            lru.Add(300);
            lru.Add(400);
            lru.Add(500);
            lru.Add(600);
            lru.Add(700);
            lru.Add(800);

            // --- Assert
            lru.Capacity.ShouldBe(3);
            lru.Count.ShouldBe(3);
            lru[0].ShouldBe(600);
            lru[1].ShouldBe(700);
            lru[2].ShouldBe(800);
        }