public void ClearWhenCacheEmptyByRegionExpectResult()
        {
            //
            //  arrange
            //

            var     mockJsonConverter = new Mock <IJsonConverter>(MockBehavior.Strict);
            ICacher cacher            = new DotNetMemoryCacher(
                jsonConverter: mockJsonConverter.Object,
                regionName: "ClearWhenCacheEmptyByRegionExpectResult"
                );

            //
            // assert pre-conditions
            //

            Assert.IsNotNull(cacher.GetKeys());
            Assert.AreEqual(expected: 0, actual: cacher.GetKeys().Length);

            //
            //  assert expected conditions
            //

            cacher.Clear();

            Assert.IsNotNull(cacher.GetKeys());
            Assert.AreEqual(expected: 0, actual: cacher.GetKeys().Length);

            //
            //  verify dependents
            //

            mockJsonConverter.Verify();
        }
        public void ClearWhenCacheNotEmptyByRegionExpectResult()
        {
            //
            //  arrange
            //

            var mockJsonConverter = new Mock <IJsonConverter>(MockBehavior.Strict);

            mockJsonConverter.Setup(m => m.Serialize("bar1")).Returns("bar1").Verifiable();
            mockJsonConverter.Setup(m => m.Serialize("bar2")).Returns("bar2").Verifiable();
            mockJsonConverter.Setup(m => m.Serialize("bar3")).Returns("bar3").Verifiable();

            var mockCacheItemPolicy = new CacherItemPolicy(keepAlive: 30, policyType: CacherItemPolicyType.Sliding);

            ICacher cacher = new DotNetMemoryCacher(
                jsonConverter: mockJsonConverter.Object,
                regionName: "ClearWhenCacheNotEmptyByRegionExpectResult"
                );

            //
            // assert pre-conditions
            //

            cacher.Set(
                cacheItemKey: "foo1",
                cacheItem: "bar1",
                cacheItemPolicy: mockCacheItemPolicy
                );
            cacher.Set(
                cacheItemKey: "foo2",
                cacheItem: "bar2",
                cacheItemPolicy: mockCacheItemPolicy
                );
            cacher.Set(
                cacheItemKey: "foo3",
                cacheItem: "bar3",
                cacheItemPolicy: mockCacheItemPolicy
                );

            Assert.IsNotNull(cacher.GetKeys());
            Assert.AreEqual(expected: 3, actual: cacher.GetKeys().Length);

            //
            //  assert expected conditions
            //

            cacher.Clear();

            Assert.IsNotNull(cacher.GetKeys());
            Assert.AreEqual(expected: 0, actual: cacher.GetKeys().Length);

            //
            //  verify dependents
            //

            mockJsonConverter.Verify();
        }