Пример #1
0
        public void Remove2_Last()
        {
            var a = new LruDictionary <int, string>(15);

            a.Add(1, "one", 3, onRemove: default);
            a.Add(2, "two", 4, onRemove: default);

            Assert.IsTrue(a.Remove(2) == true);
            Assert.IsTrue(a.Count == 1);

            Assert.IsTrue(a.Remove(1) == true);
            Assert.IsTrue(a.Count == 0);
        }
Пример #2
0
        public void Remove0()
        {
            var a = new LruDictionary <int, string>(15);

            Assert.IsTrue(a.Remove(1) == false);
            Assert.IsTrue(a.Count == 0);
        }
Пример #3
0
        public void TryGetValue()
        {
            var a = new LruDictionary <int, string>(15);

            a.Add(1, "one", 3, onRemove: default);
            a.Add(2, "two", 4, onRemove: default);

            Assert.IsTrue(a.TryGetValue(1, out string s1) && s1 == "one");
            Assert.IsTrue(a.TryGetValue(2, out string s2) && s2 == "two");
            Assert.IsTrue(!a.TryGetValue(3, out string s3));

            a.Remove(1);
            Assert.IsTrue(!a.TryGetValue(1, out string s1a));

            a.Remove(2);
            Assert.IsTrue(!a.TryGetValue(2, out string s2a));
        }
Пример #4
0
        public void ContainsKey()
        {
            var a = new LruDictionary <int, string>(15);

            a.Add(1, "one", 3, onRemove: default);
            a.Add(2, "two", 4, onRemove: default);

            Assert.IsTrue(a.ContainsKey(1));
            Assert.IsTrue(a.ContainsKey(2));
            Assert.IsTrue(!a.ContainsKey(3));

            a.Remove(1);
            Assert.IsTrue(!a.ContainsKey(1));

            a.Remove(2);
            Assert.IsTrue(!a.ContainsKey(2));
        }
Пример #5
0
        public void Remove3_Middle()
        {
            var a = new LruDictionary <int, string>(15);

            a.Add(1, "one", 3, onRemove: default);
            a.Add(2, "two", 4, onRemove: default);
            a.Add(3, "three", 5, onRemove: default);

            Assert.IsTrue(a.Remove(2) == true);
            Assert.IsTrue(a.Count == 2);

            Assert.IsTrue(a.Remove(1) == true);
            Assert.IsTrue(a.Count == 1);

            Assert.IsTrue(a.Remove(3) == true);
            Assert.IsTrue(a.Count == 0);
        }
Пример #6
0
 public void Put(TK key, TV value)
 {
     _map[key] = value;
     if (_map.Count > _size)
     {
         var first = _map.Keys.First();
         _map.Remove(first);
     }
 }
Пример #7
0
        public void Remove1_Callback_Without()
        {
            var a       = new LruDictionary <int, string>(15);
            var removed = new HashSet <int>();

            a.Add(1, "one", 3, onRemove: (k, v, s) => removed.Add(1));
            Assert.IsTrue(a.Remove(1, false) == true);
            Assert.IsTrue(a.Count == 0);
            Assert.IsTrue(!removed.Contains(1));
        }
Пример #8
0
        public void GetOrCreate()
        {
            var a       = new LruDictionary <int, string>(15);
            var removed = new HashSet <int>();

            var s1 = a.GetOrCreate(1, () => ("one", 3), (k, v, s) => removed.Add(1));

            Assert.IsTrue(s1 == "one");
            Assert.IsTrue(a.Count == 1);
            Assert.IsTrue(a.ContainsKey(1));

            var s1a = a.GetOrCreate(1, () => throw new Exception(), (k, v, s) => removed.Add(-1));

            Assert.IsTrue(s1 == "one");
            Assert.IsTrue(a.Count == 1);
            Assert.IsTrue(a.ContainsKey(1));

            Assert.IsTrue(a.Remove(1, true));
            Assert.IsTrue(removed.Contains(1));
            Assert.IsTrue(!removed.Contains(-1));
            Assert.IsTrue(a.Count == 0);
        }