Ejemplo n.º 1
0
        public void DumpedDataCanBeReloaded()
        {
            var cache = new CacheWithFail <string, Data>();

            cache.Add("Foo", new Data {
                String = "Foo", Int = 1
            });
            cache.Add("Bar", new Data {
                String = "Bar", Int = 2
            });

            var json = cache.DumpCacheAsJson();

            var newCache = new CacheWithFail <string, Data>();

            newCache.LoadCacheFromJson(json);

            Data data;

            newCache.TryGetValue("Foo", out data).Should().Be(CacheState.Found);
            data.String.Should().Be("Foo");
            data.Int.Should().Be(1);

            newCache.TryGetValue("Bar", out data).Should().Be(CacheState.Found);
            data.String.Should().Be("Bar");
            data.Int.Should().Be(2);
        }
Ejemplo n.º 2
0
        public async Task ClearClearsTheCacheButNotFailedItems()
        {
            var cache = new CacheWithFail <string, Data>();

            cache.Add("Foo", new Data {
                String = "Foo", Int = 1
            });

            await cache.GetOrAddAsync("Bar", async s => await Task.Run(() => (Data)null));

            cache.Clear();

            Data data;

            cache.TryGetValue("Foo", out data).Should().Be(CacheState.NotFound);

            var called = false;
            await cache.GetOrAddAsync("Bar", async s => await Task.Run(() =>
            {
                called = true;
                return((Data)null);
            }));

            called.Should().BeFalse();
        }
Ejemplo n.º 3
0
        public void ContainsKeyReturnsCorrectValue(string key, bool expected)
        {
            var cache = new CacheWithFail <string, Data>();

            cache.Add("Foo", new Data {
                String = "Foo", Int = 1
            });

            cache.ContainsKey(key).Should().Be(expected);
        }
Ejemplo n.º 4
0
        public async Task IfItemIsInCacheFuncIsNotCalled()
        {
            var cache = new CacheWithFail<string, Data>();
            cache.Add("Foo", new Data { String = "Foo", Int = 1 });
            var called = false;

            await cache.GetOrAddAsync("Foo", async s => await Task.Run(() =>
            {
                called = true;
                return new Data { String = "Foo", Int = 1 };
            }));

            called.Should().BeFalse();
        }
Ejemplo n.º 5
0
        public async Task ClearClearsTheCache()
        {
            var cache = new CacheWithFail <string, Data>();

            cache.Add("Foo", new Data {
                String = "Foo", Int = 1
            });

            await cache.GetOrAddAsync("Bar", async s => await Task.Run(() => (Data)null));

            cache.Clear();

            Data data;

            cache.TryGetValue("Foo", out data).Should().Be(CacheState.NotFound);
        }
Ejemplo n.º 6
0
        public async Task IfAddFailsThenFuncIsNotCalledAgain()
        {
            var cache = new CacheWithFail<string, Data>();
            cache.Add("Foo", new Data { String = "Foo", Int = 1 });

            await cache.GetOrAddAsync("Bar", async s => await Task.Run(() => (Data)null));

            var called = false;
            await cache.GetOrAddAsync("Bar", async s => await Task.Run(() =>
            {
                called = true;
                return (Data)null;
            }));

            called.Should().BeFalse();
        }
Ejemplo n.º 7
0
        public async Task IfAddFailsThenFuncIsNotCalledAgain()
        {
            var cache = new CacheWithFail <string, Data>();

            cache.Add("Foo", new Data {
                String = "Foo", Int = 1
            });

            await cache.GetOrAddAsync("Bar", async s => await Task.Run(() => (Data)null));

            var called = false;
            await cache.GetOrAddAsync("Bar", async s => await Task.Run(() =>
            {
                called = true;
                return((Data)null);
            }));

            called.Should().BeFalse();
        }
Ejemplo n.º 8
0
        public async Task IfItemIsInCacheFuncIsNotCalled()
        {
            var cache = new CacheWithFail <string, Data>();

            cache.Add("Foo", new Data {
                String = "Foo", Int = 1
            });
            var called = false;

            await cache.GetOrAddAsync("Foo", async s => await Task.Run(() =>
            {
                called = true;
                return(new Data {
                    String = "Foo", Int = 1
                });
            }));

            called.Should().BeFalse();
        }
Ejemplo n.º 9
0
        public async Task ForceReloadForcesAReload()
        {
            var cache = new CacheWithFail <string, Data>();

            cache.Add("Foo", new Data {
                String = "Foo", Int = 1
            });
            var called = false;

            await cache.GetOrAddAsync("Foo", async s => await Task.Run(() =>
            {
                called = true;
                return(new Data {
                    String = "Foo", Int = 1
                });
            }), true);

            called.Should().BeTrue();
        }
Ejemplo n.º 10
0
        public async Task IfAddFailsThenFuncIsCalledAgainAfterTimeout()
        {
            var cache = new CacheWithFail <string, Data>(TimeSpan.FromMilliseconds(100));

            cache.Add("Foo", new Data {
                String = "Foo", Int = 1
            });

            await cache.GetOrAddAsync("Bar", async s => await Task.Run(() => (Data)null));

            await Task.Delay(1000);

            var called = false;
            await cache.GetOrAddAsync("Bar", async s => await Task.Run(() =>
            {
                called = true;
                return((Data)null);
            }));

            called.Should().BeTrue();
        }
Ejemplo n.º 11
0
        public void DumpedDataCanBeReloaded()
        {
            var cache = new CacheWithFail<string, Data>();
            cache.Add("Foo", new Data { String = "Foo", Int = 1 });
            cache.Add("Bar", new Data { String = "Bar", Int = 2 });

            var json = cache.DumpCacheAsJson();

            var newCache = new CacheWithFail<string, Data>();
            newCache.LoadCacheFromJson(json);

            Data data;

            newCache.TryGetValue("Foo", out data).Should().Be(CacheState.Found);
            data.String.Should().Be("Foo");
            data.Int.Should().Be(1);

            newCache.TryGetValue("Bar", out data).Should().Be(CacheState.Found);
            data.String.Should().Be("Bar");
            data.Int.Should().Be(2);
        }
Ejemplo n.º 12
0
        public async Task IfAddFailsThenFuncIsCalledAgainAfterTimeout()
        {
            var cache = new CacheWithFail<string, Data>(TimeSpan.FromMilliseconds(100));
            cache.Add("Foo", new Data { String = "Foo", Int = 1 });

            await cache.GetOrAddAsync("Bar", async s => await Task.Run(() => (Data)null));

            await Task.Delay(1000);

            var called = false;
            await cache.GetOrAddAsync("Bar", async s => await Task.Run(() =>
            {
                called = true;
                return (Data)null;
            }));

            called.Should().BeTrue();
        }
Ejemplo n.º 13
0
        public async Task ForceReloadForcesAReload()
        {
            var cache = new CacheWithFail<string, Data>();
            cache.Add("Foo", new Data { String = "Foo", Int = 1 });
            var called = false;

            await cache.GetOrAddAsync("Foo", async s => await Task.Run(() =>
            {
                called = true;
                return new Data { String = "Foo", Int = 1 };
            }), true);

            called.Should().BeTrue();
        }
Ejemplo n.º 14
0
        public void ContainsKeyReturnsCorrectValue(string key, bool expected)
        {
            var cache = new CacheWithFail<string, Data>();
            cache.Add("Foo", new Data { String = "Foo", Int = 1 });

            cache.ContainsKey(key).Should().Be(expected);
        }
Ejemplo n.º 15
0
        public async Task ClearClearsTheCacheButNotFailedItems()
        {
            var cache = new CacheWithFail<string, Data>();
            cache.Add("Foo", new Data { String = "Foo", Int = 1 });

            await cache.GetOrAddAsync("Bar", async s => await Task.Run(() => (Data)null));

            cache.Clear();

            Data data;
            cache.TryGetValue("Foo", out data).Should().Be(CacheState.NotFound);

            var called = false;
            await cache.GetOrAddAsync("Bar", async s => await Task.Run(() =>
            {
                called = true;
                return (Data)null;
            }));

            called.Should().BeFalse();
        }
Ejemplo n.º 16
0
        public async Task ClearClearsTheCache()
        {
            var cache = new CacheWithFail<string, Data>();
            cache.Add("Foo", new Data { String = "Foo", Int = 1 });

            await cache.GetOrAddAsync("Bar", async s => await Task.Run(() => (Data)null));

            cache.Clear();

            Data data;
            cache.TryGetValue("Foo", out data).Should().Be(CacheState.NotFound);
        }