Exemplo n.º 1
0
        public void Cache_reportsIfItemWasRetrievedFromCache()
        {
            Func <int, string> creator = key => {
                return(key.ToString());
            };

            bool wasRetrievedFromCache;
            var  cache = new RecentItemsCache <int, string>(7);

            cache.GetItem(0, creator, out wasRetrievedFromCache);
            Assert.AreEqual(false, wasRetrievedFromCache, "Adding a new item to cache should not report it as retrieved from cache.");
            cache.GetItem(0, creator, out wasRetrievedFromCache);
            Assert.AreEqual(true, wasRetrievedFromCache, "Retrieving a cached item should report that it was retrieved from cache.");
        }
Exemplo n.º 2
0
        public void NullInput_key()
        {
            // Attempt to cache a key,value pair with null key
            var cache = new RecentItemsCache <string, string>(7);

            cache.GetItem(null, key => { return("value"); });
        }
Exemplo n.º 3
0
        public void NullInput_value()
        {
            // Cache a key,value pair with null value.
            var cache = new RecentItemsCache <int, string>(7);

            Assert.DoesNotThrow(() => {
                cache.GetItem(0, key => { return(null); });
            }, "Null value should not throw exception");
        }
Exemplo n.º 4
0
        /// <summary>
        /// Add key,value pair to cache, checking if it was newly added.
        /// Will assert if computed if not expected, or did not compute if expected to.
        /// </summary>
        /// <param name="cache"></param>
        /// <param name="key"></param>
        /// <param name="creator">Delegate to create the value from key</param>
        /// <param name="expectToCompute">
        /// Whether should expect to need to compute the value from key using creator
        /// </param>
        private void AddItem <K, V>(RecentItemsCache <K, V> cache, K key, Func <K, V> creator,
                                    bool expectToCompute)
        {
            bool didCompute = false;

            Assert.AreEqual(creator(key), cache.GetItem(key, key1 =>
            {
                didCompute = true;
                return(creator(key1));
            }), String.Format("wrong value for {0} cached key given", didCompute?"newly":"previously"));

            string errorMessage;

            if (expectToCompute)
            {
                errorMessage = "Expected to compute value from key since it was not expected to be in the cache, but it was in the cache.";
            }
            else
            {
                errorMessage = "Did not expect to compute value from key since expected it to be in the cache, but it was not in the cache.";
            }
            Assert.AreEqual(expectToCompute, didCompute, errorMessage);
        }