Пример #1
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);
        }