Пример #1
0
        public async Task GetCacheThenSourceAsync_Object_FromCache()
        {
            var sut  = new SimpleCache();
            var key  = "key";
            var name = "name";
            var num  = 2;
            var obj  = new SampleCacheObject {
                Name = name, Number = num
            };

            sut.Set(key, obj);
            var didSourceRun = false;
            var source       = new Func <Task <SampleCacheObject> >(() =>
            {
                didSourceRun = true;
                return(Task.FromResult(obj));
            });
            var result = await sut.GetCacheThenSourceAsync <SampleCacheObject>(
                key : key,
                sourceDelegate : source);

            result.IsCacheNull.Should().Be(false);
            result.ValueOrDefault.Should().NotBeNull();
            result.ValueOrDefault.Number.Should().Be(num);
            result.ValueOrDefault.Name.Should().Be(name);
            didSourceRun.Should().BeFalse();
        }
Пример #2
0
        public void Set_Get_Object()
        {
            var sut  = new SimpleCache();
            var key  = "key";
            var num  = 1;
            var name = "name";
            var obj  = new SampleCacheObject {
                Name = name, Number = num
            };

            sut.Set(key, obj);
            var result = sut.Get <SampleCacheObject>(key);

            result.Should().NotBeNull();
            result.ValueOrDefault.Should().NotBeNull();
            result.IsCacheNull.Should().Be(false);
            result.ValueOrDefault.Number.Should().Be(num);
            result.ValueOrDefault.Name.Should().Be(name);
        }
Пример #3
0
        public async Task GetCacheThenSourceAsync_Object_FromSource()
        {
            var sut  = new SimpleCache();
            var key  = "key";
            var name = "name";
            var num  = 2;
            var obj  = new SampleCacheObject {
                Name = name, Number = num
            };
            var result = await sut.GetCacheThenSourceAsync <SampleCacheObject>(
                key : key,
                sourceDelegate : () => Task.FromResult(obj));

            result.IsCacheNull.Should().Be(false);
            result.ValueOrDefault.Should().NotBeNull();
            result.ValueOrDefault.Number.Should().Be(num);
            result.ValueOrDefault.Name.Should().Be(name);

            var cachePersisted = sut.Get <SampleCacheObject>(key);

            cachePersisted.IsCacheNull.Should().BeFalse();
            cachePersisted.ValueOrDefault.Number.Should().Be(num);
            cachePersisted.ValueOrDefault.Name.Should().Be(name);
        }