コード例 #1
0
        public void TestOrderByWithTake()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache
                         .OrderBy(x => x.Key)
                         .Select(x => new
            {
                x.Key,
                x.Name
            })
                         .Take(3)
                         .ToList();

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(3, result.Count);
            Assert.AreEqual("0", result[0].Key);
            Assert.AreEqual("Dummy Item 0", result[0].Name);

            Assert.AreEqual("1", result[1].Key);
            Assert.AreEqual("Dummy Item 1", result[1].Name);

            Assert.AreEqual("10", result[2].Key);
            Assert.AreEqual("Dummy Item 10", result[2].Name);

            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(0, cacheProvider.CreateEntityFromCachedEntryCount); //ok that's not nice
            Assert.AreEqual(0, methodCounter.EntityCallsCount);
        }
コード例 #2
0
        public void TestWhereWithFilterByString()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var stopWatch = new System.Diagnostics.Stopwatch();

            stopWatch.Start();

            var data = context.DummyEntitiesWithCache
                       .Where(x => (x.Name ?? string.Empty).IndexOf("11", StringComparison.InvariantCultureIgnoreCase) >= 0)
                       .Select(x => new { Id = x.Key, x.Name })
                       .ToList();

            stopWatch.Stop();

            // Assert
            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(0, cacheProvider.CreateEntityFromCachedEntryCount); // only identifiers are used
            Assert.IsTrue(stopWatch.ElapsedMilliseconds < 30);                  // proves that Where is replaced
            Assert.AreEqual(0, methodCounter.EntityCallsCount);
        }
コード例 #3
0
        public void TestFilterWithCachedProperties()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var stopWatch = new System.Diagnostics.Stopwatch();

            stopWatch.Start();

            var result = context.DummyEntitiesWithCache.Any(x => x.Name.Contains("100"));

            stopWatch.Stop();

            // Assert
            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            // That's vary from 1 to 129, but we ultimately want it only once
            Assert.AreEqual(0, cacheProvider.CreateEntityFromCachedEntryCount);
            Assert.IsTrue(stopWatch.ElapsedMilliseconds < 30);  //effectively gets data from cache
            Assert.IsTrue(result);
            Assert.AreEqual(0, methodCounter.EntityCallsCount);
            Assert.AreEqual(0, methodCounter.GetIdentifiersCallsCount);
        }
コード例 #4
0
        public void TestCombinesWithPendingChangesAddUpdate()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            var newItem = new DummyEntity
            {
                Key  = "1051",
                Name = "Test 1051"
            };

            var newItem2 = new DummyEntity
            {
                Key  = "751",
                Name = "Test 751"
            };

            context.DummyEntitiesWithCache.Add(newItem);
            context.DummyEntitiesWithCache.Update(newItem2);

            // Act
            var addedItem   = context.DummyEntitiesWithCache.FirstOrDefault(x => x.Key == "1051");
            var updatedItem = context.DummyEntitiesWithCache.FirstOrDefault(x => x.Key == "751");

            // Assert
            Assert.AreEqual(newItem2, updatedItem);
            Assert.AreEqual(newItem, addedItem);
            Assert.AreEqual(0, methodCounter.EntityCallsCount);
            Assert.AreEqual(0, methodCounter.GetIdentifiersCallsCount);
        }
コード例 #5
0
        public void TestGroupByWithToList()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache.GroupBy(x => int.Parse(x.Key) % 10)
                         .Select(g =>
                                 new
            {
                g.Key,
                Data = g.ToList()
            })
                         .ToList();

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(10, result.Count);

            foreach (var x in result)
            {
                Assert.AreEqual(100, x.Data.Count);
                foreach (var d in x.Data)
                {
                    Assert.IsNotNull(d.NonCachedField);
                }
            }

            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(0, cacheProvider.CreateEntityFromCachedEntryCount);
            Assert.AreEqual(1000, methodCounter.EntityCallsCount);
        }
コード例 #6
0
        public void TestFirstOrDefaultWithContainsFilter()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            var identifiers = Enumerable.Range(177, 20000).Select(i => i.ToString());

            // Act

            var stopWatch = new System.Diagnostics.Stopwatch();

            stopWatch.Start();

            //var data = context.DummyEntitiesWithCache
            //                .FirstOrDefault(x => identifiers.Contains(x.Key));

            var data = context.DummyEntitiesWithCache
                       .FirstOrDefault(x => x.Key == "177");

            stopWatch.Stop();

            // Assert
            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(0, cacheProvider.CreateEntityFromCachedEntryCount);
            Assert.IsTrue(stopWatch.ElapsedMilliseconds < 30);  //YSV: one call to the datastorage
            // Ok, that's a problem here
            Assert.AreEqual(1, methodCounter.EntityCallsCount);
            Assert.AreEqual(0, methodCounter.GetIdentifiersCallsCount);
            Assert.IsNotNull(data);
        }
コード例 #7
0
        public void TestCountWithContainsFilter()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            var identifiers = Enumerable.Range(177, 20000).Select(i => i.ToString());

            // Act

            var stopWatch = new System.Diagnostics.Stopwatch();

            stopWatch.Start();

            var data = context.DummyEntitiesWithCache
                       .Count(x => identifiers.Contains(x.Key));

            stopWatch.Stop();

            // Assert
            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(0, cacheProvider.CreateEntityFromCachedEntryCount);
            Assert.IsTrue(stopWatch.ElapsedMilliseconds < 40);  //YSV: successive call might take only 20 ms. Not sure what happens when it call it first
            Assert.AreEqual(0, methodCounter.EntityCallsCount);
            Assert.AreEqual(0, methodCounter.GetIdentifiersCallsCount);
            Assert.AreEqual(823, data);
        }
コード例 #8
0
        public void TestEffectivelyProcessesContains()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            var identifiers = Enumerable.Range(0, 20000).Select(i => i.ToString());

            // Act
            var stopWatch = new System.Diagnostics.Stopwatch();

            stopWatch.Start();

            var data = context.DummyEntitiesWithCache
                       .Where(x => identifiers.Contains(x.Key))
                       .Select(x => x.Key)
                       .ToList();

            stopWatch.Stop();

            // Assert
            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(0, cacheProvider.CreateEntityFromCachedEntryCount); // only identifiers are used
            Assert.IsTrue(stopWatch.ElapsedMilliseconds < 30);                  // proves that Where is replaced
            Assert.AreEqual(0, methodCounter.EntityCallsCount);
        }
コード例 #9
0
        public void TestSelectManySimple()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache
                         .SelectMany(x => x.ListData.Select(i =>
                                                            new
            {
                x.Key,
                Number = i
            }).ToList())
                         .Where(x => x.Key.Contains(x.Number))
                         .ToList();

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(813, result.Count);

            foreach (var x in result)
            {
                Assert.IsTrue(x.Key.Contains(x.Number));
            }

            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(1000, cacheProvider.CreateEntityFromCachedEntryCount);
            Assert.AreEqual(0, methodCounter.EntityCallsCount);
        }
コード例 #10
0
        public void TestSelectManyCombinesWithPendingChangesAddOrUpdate()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            context.DummyEntitiesWithCache.Add(new DummyEntity
            {
                Key      = "1001",
                ListData = new[]
                {
                    "1", "2", "10"
                }
            });

            context.DummyEntitiesWithCache.Update(new DummyEntity
            {
                Key      = "0",
                ListData = new[]
                {
                    "0", "1", "2"
                }
            });

            // Act
            var result = context.DummyEntitiesWithCache
                         .SelectMany(x => x.ListData.Select(i =>
                                                            new
            {
                x.Key,
                Number = i
            }).ToList())
                         .Where(x => x.Key.Contains(x.Number))
                         .ToList();

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(816, result.Count);

            foreach (var x in result)
            {
                Assert.IsTrue(x.Key.Contains(x.Number));
            }

            Assert.IsNotNull(result.FirstOrDefault(x => x.Key == "1001" && x.Number == "1"));
            Assert.IsNotNull(result.FirstOrDefault(x => x.Key == "1001" && x.Number == "10"));
            Assert.IsNotNull(result.FirstOrDefault(x => x.Key == "0" && x.Number == "0"));

            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(1000, cacheProvider.CreateEntityFromCachedEntryCount);
            Assert.AreEqual(0, methodCounter.EntityCallsCount);
        }
コード例 #11
0
        public void TestWhereWithExpressionPredicateDefinedInAnotherMethod()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache.Where(ExprPredicate()).FirstOrDefault();

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(1, methodCounter.EntityCallsCount); // proves that cache is not used
        }
コード例 #12
0
        public void TestWhereWithNotEqual()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache.Where(x => x.Key != "2" && x.Key != "32").FirstOrDefault();

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(1, methodCounter.EntityCallsCount);
        }
コード例 #13
0
        public void TestDontUseCacheIfReturnsEntity()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache.Where(x => x.Key == "324").FirstOrDefault();

            // Assert
            Assert.AreEqual("NonCachedData324", result.NonCachedField);
            Assert.AreEqual(1, methodCounter.EntityCallsCount);
        }
コード例 #14
0
        public void TestFirstOrDefaultWithoutFilter()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache.FirstOrDefault();

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(1, methodCounter.EntityCallsCount);
        }
コード例 #15
0
        public void TestToList()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            context.DummyEntitiesWithCache.Add(new DummyEntity {
            });
            var result = context.DummyEntitiesWithCache.ToList();

            // Assert
            Assert.AreEqual(1001, result.Count);
        }
コード例 #16
0
        public void TestDontUseCacheIfReturnsListOfEntites()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache.ToList();

            // Assert
            var nonCachedData = result.Select(x => x.NonCachedField).Where(x => x.Contains("NonCachedData")).ToList();

            Assert.AreEqual(1000, nonCachedData.Count);
            Assert.AreEqual(1000, methodCounter.EntityCallsCount);
        }
コード例 #17
0
        public void TestWhereWithFuncDefinedInAnotherMethod()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache.Where(x => Predicate()(x)).FirstOrDefault();

            // NOTE: Just Where(Predicate()) will not work

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(1, methodCounter.EntityCallsCount);
        }
コード例 #18
0
        public void TestToDictionaryWithTake()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache.Take(4).ToDictionary(x => x.Key, x => x.Name);

            // Assert
            Assert.IsNotNull(result);
            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(0, cacheProvider.CreateEntityFromCachedEntryCount);
            Assert.AreEqual(4, methodCounter.EntityCallsCount);
        }
コード例 #19
0
        public void TestFirstOrDefaultWithFilterReturningOneItem()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache.FirstOrDefault(x => x.Name == "Dummy Item 75");

            // Assert
            Assert.IsNotNull(result);
            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(0, cacheProvider.CreateEntityFromCachedEntryCount); // not expecting creating instances from cache - only quereing cache
            Assert.AreEqual(1, methodCounter.EntityCallsCount);
        }
コード例 #20
0
        public void TestFirstOrDefaultWithSingleId()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache.FirstOrDefault(x => x.Key == "75");

            // Assert
            Assert.IsNotNull(result);
            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(0, cacheProvider.CreateEntityFromCachedEntryCount);
            Assert.AreEqual(1, methodCounter.EntityCallsCount);
        }
コード例 #21
0
        public void TestFilterWithCachedPropertiesComplexPredicate()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache.FirstOrDefault(x => x.Name.Contains("Dummy Item ") && !x.Key.StartsWith("1"));

            // Assert
            Assert.IsNotNull(result);
            //Assert.AreEqual("2", result.Key);
            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(0, cacheProvider.CreateEntityFromCachedEntryCount);
            Assert.AreEqual(1, methodCounter.EntityCallsCount);
        }
コード例 #22
0
        public void TestWhereWithInlinePredicate()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            Func <DummyEntity, int> func = e => int.Parse(e.Key);

            var result = context.DummyEntitiesWithCache.Where(x => func(x) == 4).ToList();

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count);
            Assert.AreEqual("4", result[0].Key);
            Assert.AreEqual(1, methodCounter.EntityCallsCount); // 1 call for it process filter on cache first
        }
コード例 #23
0
        public void TestCombinesWithPendingChanges()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act - Removing
            var entity = context.DummyEntitiesWithCache.Where(x => x.Key == "2").FirstOrDefault();

            Assert.AreEqual(1, methodCounter.EntityCallsCount);
            context.DummyEntitiesWithCache.Remove(entity);

            // Assert
            Assert.AreEqual(999, context.DummyEntitiesWithCache.Count());
            Assert.AreEqual(1, methodCounter.EntityCallsCount);
            Assert.AreEqual(0, methodCounter.GetIdentifiersCallsCount);

            // Act - Adding & Update
            var newItem = new DummyEntity
            {
                Key  = "1051",
                Name = "Test 1051"
            };

            var newItem2 = new DummyEntity
            {
                Key  = "1071",
                Name = "Test 1071"
            };

            var newItem3 = new DummyEntity
            {
                Key  = "751",
                Name = "Test 751"
            };

            context.DummyEntitiesWithCache.Add(newItem);
            context.DummyEntitiesWithCache.Add(newItem2);
            context.DummyEntitiesWithCache.Update(newItem3);

            // Assert
            Assert.AreEqual(1001, context.DummyEntitiesWithCache.Count());
            Assert.AreEqual(1, methodCounter.EntityCallsCount);
            Assert.AreEqual(0, methodCounter.GetIdentifiersCallsCount);
        }
コード例 #24
0
        public void TestCorrectlyProcessBadWhereWithNonCachedProperties()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            var identifiers = (new[] { "1", "2", "17" }).AsEnumerable();

            // Act
            var data = context.DummyEntitiesWithCache
                       .Where(x => identifiers.Contains(x.Key) && x.NonCachedField == "NonCachedData17")
                       .Select(x => x.Key)
                       .ToArray();

            // Assert
            CollectionAssert.AreEquivalent(new[] { "17" }, data);  //must be equivalent if is gotten not from cache
            Assert.AreEqual(1000, methodCounter.EntityCallsCount); //ensure calls data store to get data
        }
コード例 #25
0
        public void TestSelectKey()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache.Select(x => x.Key).FirstOrDefault();

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(!string.IsNullOrEmpty(result));

            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(0, cacheProvider.CreateEntityFromCachedEntryCount);
            Assert.AreEqual(0, methodCounter.EntityCallsCount);
        }
コード例 #26
0
        public void TestAnyWithContainsFilter()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act (exists)
            var identifiers = Enumerable.Range(177, 20000).Select(i => i.ToString());
            var stopWatch   = new System.Diagnostics.Stopwatch();

            stopWatch.Start();

            var result = context.DummyEntitiesWithCache
                         .Any(x => identifiers.Contains(x.Key));

            stopWatch.Stop();

            // Assert
            Assert.IsTrue(stopWatch.ElapsedMilliseconds < 30);
            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(0, cacheProvider.CreateEntityFromCachedEntryCount); // only identifiers are used
            Assert.AreEqual(0, methodCounter.EntityCallsCount);
            Assert.AreEqual(0, methodCounter.GetIdentifiersCallsCount);
            Assert.IsTrue(result);

            // Act (do not exists)
            var identifiers2 = Enumerable.Range(1770, 20000).Select(i => i.ToString());

            stopWatch.Restart();

            var result2 = context.DummyEntitiesWithCache
                          .Any(x => identifiers2.Contains(x.Key));

            stopWatch.Stop();

            // Assert
            Assert.IsTrue(stopWatch.ElapsedMilliseconds < 30);  //Ok, it takes longer for it need to check the range

            Assert.AreEqual(0, methodCounter.EntityCallsCount);
            Assert.AreEqual(0, methodCounter.GetIdentifiersCallsCount);
            Assert.IsFalse(result2);
        }
コード例 #27
0
        public void TestCombinesWithPendingChanges()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act - Removing
            for (var i = 0; i < 1000; i++)
            {
                context.DummyEntitiesWithCache.Remove(new DummyEntity
                {
                    Key = i.ToString()
                });
            }

            // Assert
            Assert.IsFalse(context.DummyEntitiesWithCache.Any());
            Assert.AreEqual(0, methodCounter.EntityCallsCount);
            Assert.AreEqual(0, methodCounter.GetIdentifiersCallsCount);

            // Act - Adding
            var newItem = new DummyEntity
            {
                Key  = "1051",
                Name = "Test 1051"
            };

            var newItem2 = new DummyEntity
            {
                Key  = "1071",
                Name = "Test 1071"
            };

            context.DummyEntitiesWithCache.Add(newItem);
            context.DummyEntitiesWithCache.Add(newItem2);

            // Assert
            Assert.IsTrue(context.DummyEntitiesWithCache.Any());
            Assert.AreEqual(0, methodCounter.EntityCallsCount);
            Assert.AreEqual(0, methodCounter.GetIdentifiersCallsCount);
        }
コード例 #28
0
        public void TestOrderByReturningAnonymousWithDependencyOfEntity_NotNice()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var result = context.DummyEntitiesWithCache
                         .OrderBy(x => x.Key)
                         .Select(x => new
            {
                x.Key,
                Value = x
            })
                         .Take(3)
                         .ToList();

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(3, result.Count);

            Assert.AreEqual("0", result[0].Key);
            Assert.AreEqual("0", result[0].Value.Key);
            Assert.AreEqual("Dummy Item 0", result[0].Value.Name);
            Assert.AreEqual("NonCachedData0", result[0].Value.NonCachedField);

            Assert.AreEqual("1", result[1].Key);
            Assert.AreEqual("1", result[1].Value.Key);
            Assert.AreEqual("Dummy Item 1", result[1].Value.Name);
            Assert.AreEqual("NonCachedData1", result[1].Value.NonCachedField);

            Assert.AreEqual("10", result[2].Key);
            Assert.AreEqual("10", result[2].Value.Key);
            Assert.AreEqual("Dummy Item 10", result[2].Value.Name);
            Assert.AreEqual("NonCachedData10", result[2].Value.NonCachedField);

            var cacheProvider = ReflectionHelper.WinkleCacheDataProviderOut(context.DummyEntitiesWithCache);

            Assert.AreEqual(0, cacheProvider.CreateEntityFromCachedEntryCount); //ok that's not nice
            Assert.AreEqual(1000, methodCounter.EntityCallsCount);
        }
コード例 #29
0
        public void TestAnyWithoutFilter()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            // Act
            var stopWatch = new System.Diagnostics.Stopwatch();

            stopWatch.Restart();

            var result = context.DummyEntitiesWithCache.Any();

            stopWatch.Stop();

            // Assert
            Assert.IsTrue(stopWatch.ElapsedMilliseconds < 30);  //effectively gets data from cache
            Assert.AreEqual(0, methodCounter.EntityCallsCount);
            Assert.AreEqual(0, methodCounter.GetIdentifiersCallsCount);
            Assert.IsTrue(result);
        }
コード例 #30
0
        public void TestCanGetFromCache()
        {
            // Arrange
            var methodCounter = new DaoMethodCallsCounter();
            var context       = new DummyContext(_folder, methodCounter);

            var identifiers = (new[] { "196", "235", "11" }).AsEnumerable();

            // Act
            var data = context.DummyEntitiesWithCache
                       .Where(x => x.SomeData.Contains("A") && x.Created > new DateTime(2018, 9, 19) || identifiers.Contains(x.Key))
                       .Select(x => x.Key)
                       .ToArray();

            // Assert
            Assert.IsTrue(data.Count() > 3);
            CollectionAssert.Contains(data, "196");
            CollectionAssert.Contains(data, "235");
            CollectionAssert.Contains(data, "11");
            Assert.AreEqual(0, methodCounter.EntityCallsCount); //ensure gets everything from cache
        }