コード例 #1
0
        public void GetTest()
        {
            LRUDoublyLinkedList dll = new LRUDoublyLinkedList();

            Assert.IsNull(dll.Get(0));
            Assert.IsNull(dll.Get(5));
            try
            {
                dll.Get(-1);
                Assert.Fail("Should throw an exception");
            }
            catch (InvalidElementIndexException) {}

            Node n0 = new Node(null, null, new Element(new byte[0]), 0);

            dll.Insert(n0);
            Assert.AreEqual(dll.Get(0), n0);
            Assert.IsNull(dll.Get(1));
            Assert.IsNull(dll.Get(2));

            Node n1 = new Node(null, null, new Element(new byte[0]), 1);

            dll.Insert(n1);
            Assert.AreEqual(dll.Get(0), n1);
            Assert.AreEqual(dll.Get(1), n0);
            Assert.AreEqual(dll.Get(0), n0);
            Assert.IsNull(dll.Get(2));
        }
コード例 #2
0
        public void MoveToHeadTest()
        {
            LRUDoublyLinkedList dll = new LRUDoublyLinkedList();

            Node n0 = new Node(null, null, new Element(new byte[0]), 0);

            dll.Insert(n0);
            dll.MoveToHead(n0);
            Assert.AreEqual(n0, dll.Get(0));
            Assert.AreEqual(1, dll.Size);


            Node n1 = new Node(null, null, new Element(new byte[0]), 1);

            dll.Insert(n1);
            dll.MoveToHead(n0);
            Assert.AreEqual(n0, dll.Get(0));
            Assert.AreEqual(2, dll.Size);

            Node n2 = new Node(null, null, new Element(new byte[0]), 2);

            dll.Insert(n2);
            dll.MoveToHead(n0);
            Assert.AreEqual(n0, dll.Get(0));
            Assert.AreEqual(3, dll.Size);
        }
コード例 #3
0
        private void InsertOneTest()
        {
            LRUDoublyLinkedList dll = new LRUDoublyLinkedList();

            Node n0 = new Node(null, null, new Element(new byte[0]), 0);

            Assert.AreEqual(0, dll.Size);
            dll.Insert(n0);
            Assert.AreEqual(n0, dll.Get(0));
            Assert.AreEqual(1, dll.Size);
        }
コード例 #4
0
        private void InsertMoreThanTwoTest()
        {
            LRUDoublyLinkedList dll = new LRUDoublyLinkedList();

            Node n0 = new Node(null, null, new Element(new byte[0]), 0);

            dll.Insert(n0);
            Node n1 = new Node(null, null, new Element(new byte[0]), 1);

            dll.Insert(n1);
            Node n2 = new Node(null, null, new Element(new byte[0]), 2);

            dll.Insert(n2);

            Assert.AreEqual(n2, dll.Get(0));
            Assert.AreEqual(n1, dll.Get(1));
            Assert.AreEqual(n0, dll.Get(2));
            Assert.AreEqual(3, dll.Size);
        }
コード例 #5
0
        public void RemoveEndTest()
        {
            LRUDoublyLinkedList dll = new LRUDoublyLinkedList();

            Assert.IsNull(dll.RemoveEnd());

            Node n0 = new Node(null, null, new Element(new byte[0]), 0);

            dll.Insert(n0);
            dll.RemoveEnd();
            Assert.IsNull(dll.Get(0));
            Assert.AreEqual(0, dll.Size);

            dll.Insert(n0);
            Node n1 = new Node(null, null, new Element(new byte[0]), 1);

            dll.Insert(n1);
            dll.RemoveEnd();

            Assert.AreEqual(dll.Get(0), n1);
            Assert.IsNull(dll.Get(1));
            Assert.AreEqual(1, dll.Size);
        }
コード例 #6
0
        public void LRUDoublyLinkedListCtorTest()
        {
            LRUDoublyLinkedList dll = new LRUDoublyLinkedList();

            Assert.IsNotNull(dll);
        }
コード例 #7
0
 public LRUElementCache(int size)
 {
     _cacheSize = size;
     _cacheList = new LRUDoublyLinkedList();
     _index     = new Dictionary <int, Node>();
 }