コード例 #1
0
        public void TestRemove()
        {
            // Create the cache and register our test types
            EveCache cache = new EveCache(new MemoryCache("Eve.Tests"));

            TestItem[]       items       = new TestItem[10];
            TestChildItem[]  childItems  = new TestChildItem[10];
            TestStringItem[] stringItems = new TestStringItem[10];

            // Populate with initial items
            for (int i = 0; i < 10; i++)
            {
                items[i]       = new TestItem(i);
                childItems[i]  = new TestChildItem(i + 100); // Add 100 to avoid ID collisions
                stringItems[i] = new TestStringItem("Test" + i.ToString());
                cache.GetOrAdd(items[i]);
                cache.GetOrAdd(childItems[i]);
                cache.GetOrAdd(stringItems[i]);
            }

            // Verify that all test items have been added
            Assert.AreEqual(((IEnumerable <KeyValuePair <string, object> >)cache.InnerCache).Count(), 30);

            // Remove the first 10 items
            foreach (TestItem test1 in items)
            {
                var result = cache.Remove <TestItem>(test1.Id);

                // Verify the return value
                Assert.AreEqual(result, test1);
            }

            // Verify that the objects have been removed
            Assert.AreEqual(((IEnumerable <KeyValuePair <string, object> >)cache.InnerCache).Count(), 20);

            // Try to remove a non-existent item
            var value = cache.Remove <TestItem>("Nonexistent");

            Assert.IsNull(value);

            // Remove the next 10 items
            foreach (TestChildItem test2 in childItems)
            {
                var result = cache.Remove <TestChildItem>(test2.Id);

                // Verify the return value
                Assert.AreEqual(result, test2);
            }

            // Verify that the objects have been removed
            Assert.AreEqual(((IEnumerable <KeyValuePair <string, object> >)cache.InnerCache).Count(), 10);

            // Remove the last 10 items
            foreach (TestStringItem test3 in stringItems)
            {
                var result = cache.Remove <TestStringItem>(test3.Id);

                // Verify the return value
                Assert.AreEqual(result, test3);
            }

            // Verify that the objects have been removed
            Assert.AreEqual(((IEnumerable <KeyValuePair <string, object> >)cache.InnerCache).Count(), 0);
        }