public void CanRemoveItemFromCacheWithDelegate()
        {
            var myObject1 = new TestCacheObject("test-1");
            var myObject2 = new TestCacheObject("bob");
            var myObject3 = new TestCacheObject("frank");

            CacheProvider.AddOrChangeValue(CacheKey.Create <string>("my-1"), myObject1);
            CacheProvider.AddOrChangeValue(CacheKey.Create <StrongClassKey>(x => x.MyName = "bob"), myObject2);
            CacheProvider.AddOrChangeValue(CacheKey.Create <StrongClassKey>(x => x.MyName = "frank"), myObject3);

            var resultFilterClause       = new ResultFilterClause(typeof(string), ResultFilterType.Any, 0);
            var fromClause               = new FromClause(HiveId.Empty.ToString(), HierarchyScope.AncestorsOrSelf, FixedStatusTypes.Published);
            var fieldPredicateExpression = new FieldPredicateExpression("title", ValuePredicateType.Equal, "blah");


            //var key = new HiveQueryCacheKey(new QueryDescription(resultFilterClause, fromClause, fieldPredicateExpression, Enumerable.Empty<SortClause>()));
            var key = CacheKey.Create(new HiveQueryCacheKey(new QueryDescription(resultFilterClause, fromClause, fieldPredicateExpression, Enumerable.Empty <SortClause>())));

            CacheProvider.AddOrChangeValue(key, myObject3);

            Assert.NotNull(CacheProvider.GetValue(CacheKey.Create <string>("my-1")));
            Assert.NotNull(CacheProvider.GetValue(CacheKey.Create <StrongClassKey>(x => x.MyName = "bob")));
            Assert.NotNull(CacheProvider.GetValue(CacheKey.Create <string>("my-1")));
            Assert.NotNull(CacheProvider.GetValue(key));

            CacheProvider.RemoveWhereKeyMatches <string>(x => x == "my-1");
            CacheProvider.RemoveWhereKeyMatches <StrongClassKey>(x => x.MyName == "bob");
            CacheProvider.RemoveWhereKeyMatches <HiveQueryCacheKey>(x => x.From.HierarchyScope == HierarchyScope.AncestorsOrSelf);

            Assert.Null(CacheProvider.Get(CacheKey.Create <string>("my-1")));
            Assert.Null(CacheProvider.GetValue(CacheKey.Create <string>("my-1")));
            Assert.Null(CacheProvider.Get(CacheKey.Create <StrongClassKey>(x => x.MyName    = "bob")));
            Assert.NotNull(CacheProvider.Get(CacheKey.Create <StrongClassKey>(x => x.MyName = "frank")));
        }
Пример #2
0
        public bool Equals(TestCacheObject _obj)
        {
            if (_obj == null)
                return false;

            return _obj.Id == this.Id;
        }
        public void CanRemoveItemFromCacheWithDelegate()
        {
            var myObject1 = new TestCacheObject("test-1");
            var myObject2 = new TestCacheObject("bob");
            var myObject3 = new TestCacheObject("frank");

            CacheProvider.AddOrChangeValue(CacheKey.Create <string>("my-1"), myObject1);
            CacheProvider.AddOrChangeValue(CacheKey.Create <StrongClassKey>(x => x.MyName = "bob"), myObject2);
            CacheProvider.AddOrChangeValue(CacheKey.Create <StrongClassKey>(x => x.MyName = "frank"), myObject3);

            if (CacheIsAsync)
            {
                Thread.Sleep(500);
            }

            var resultFilterClause       = new ResultFilterClause(typeof(string), ResultFilterType.Any, 0);
            var scopeStartId             = new HiveId(Guid.NewGuid());
            var fromClause               = new FromClause(scopeStartId.AsEnumerableOfOne(), HierarchyScope.AncestorsOrSelf, FixedStatusTypes.Published);
            var fieldPredicateExpression = new FieldPredicateExpression("title", ValuePredicateType.Equal, "blah");


            //var key = new HiveQueryCacheKey(new QueryDescription(resultFilterClause, fromClause, fieldPredicateExpression, Enumerable.Empty<SortClause>()));
            var key = CacheKey.Create(new HiveQueryCacheKey(new QueryDescription(resultFilterClause, fromClause, fieldPredicateExpression, Enumerable.Empty <SortClause>())));

            CacheProvider.AddOrChangeValue(key, myObject3);

            if (CacheIsAsync)
            {
                Thread.Sleep(500);
            }

            Assert.NotNull(CacheProvider.GetValue <TestCacheObject>(CacheKey.Create <string>("my-1")));
            Assert.NotNull(CacheProvider.GetValue <TestCacheObject>(CacheKey.Create <StrongClassKey>(x => x.MyName = "bob")));
            Assert.NotNull(CacheProvider.GetValue <TestCacheObject>(CacheKey.Create <string>("my-1")));
            Assert.NotNull(CacheProvider.GetValue <TestCacheObject>(key));

            CacheProvider.RemoveWhereKeyMatches <string>(x => x == "my-1");
            CacheProvider.RemoveWhereKeyMatches <StrongClassKey>(x => x.MyName == "bob");
            CacheProvider.RemoveWhereKeyMatches <HiveQueryCacheKey>(x => x.From.HierarchyScope == HierarchyScope.AncestorsOrSelf);

            // No check for async as removals should be instant

            Assert.Null(CacheProvider.Get <TestCacheObject>(CacheKey.Create <string>("my-1")));
            Assert.Null(CacheProvider.GetValue <TestCacheObject>(CacheKey.Create <string>("my-1")));
            Assert.Null(CacheProvider.Get <TestCacheObject>(CacheKey.Create <StrongClassKey>(x => x.MyName    = "bob")));
            Assert.NotNull(CacheProvider.Get <TestCacheObject>(CacheKey.Create <StrongClassKey>(x => x.MyName = "frank")));
        }
        public void CanAddItemToCacheWithComplexKey()
        {
            var myObject1 = new TestCacheObject("test-1");
            var myObject2 = new TestCacheObject("test-2");
            var myObject3 = new TestCacheObject("test-3");

            Assert.IsNull(CacheProvider.GetValue <TestCacheObject>(CacheKey.Create <string>("ah")));
            Assert.IsNull(CacheProvider.GetValue <TestCacheObject>(CacheKey.Create <string>("ah")));

            CacheProvider.AddOrChangeValue(CacheKey.Create("my-1"), myObject1);

            if (CacheIsAsync)
            {
                Thread.Sleep(500);
            }

            var retrieve1typed = CacheProvider.GetValue <TestCacheObject>(CacheKey.Create <string>("my-1"));

            Assert.NotNull(retrieve1typed);

            var retrieve1 = CacheProvider.Get <TestCacheObject>(CacheKey.Create("my-1"));

            Assert.That(retrieve1.Item, Is.EqualTo(myObject1));


            CacheProvider.AddOrChangeValue(CacheKey.Create("my-2"), myObject2);
            CacheProvider.AddOrChangeValue(CacheKey.Create <StrongClassKey>(x => x.MyName = "bob"), myObject3);

            if (CacheIsAsync)
            {
                Thread.Sleep(500);
            }

            var retrieve2 = CacheProvider.GetValue <TestCacheObject>(CacheKey.Create("my-2"));
            var retrieve3 = CacheProvider.GetValue <TestCacheObject>(CacheKey.Create <StrongClassKey>(x => x.MyName = "bob"));


            Assert.That(retrieve1typed.Text, Is.EqualTo(myObject1.Text));
            Assert.That(retrieve2, Is.EqualTo(myObject2));
            Assert.That(retrieve3, Is.EqualTo(myObject3));
        }
Пример #5
0
        public void UpdateWhenAbsoluteExpirationTest()
        {
            var _cache = new SpatialCache<Coordinate, object, TestCacheObject>();
            var _key = new Coordinate { X = 3.44, Y = 3.44 };
            var _object = new TestCacheObject();
            var _spatialItem = new SpatialCacheItem<Coordinate, object, TestCacheObject> { SpatialKey = _key, ObjectKeyValue = _object, SpatialValue = new object() };

            var _addOrGetExisting = _cache.AddOrGetExisting(_key, _spatialItem);
            Assert.AreEqual(_spatialItem, _addOrGetExisting);

            var _key2 = new Coordinate { X = 3.445, Y = 3.445 };
            var _changedSpatialItem = new SpatialCacheItem<Coordinate, object, TestCacheObject> { SpatialKey = _key2, ObjectKeyValue = _object, SpatialValue = new object() };
            var _value = _cache.Update(_spatialItem.ObjectKeyValue, _changedSpatialItem, DateTimeOffset.UtcNow.AddMilliseconds(20));

            Assert.AreNotEqual(_addOrGetExisting, _value);
            Assert.AreEqual(_changedSpatialItem, _value);

            Thread.Sleep(100);

            Assert.IsNull(_cache.Get(_key));
            Assert.IsNull(_cache.Get(_key2));
        }
Пример #6
0
        public void GetWhenEqualsOverrideTest()
        {
            var _cache = new CollectionCache<TestCacheObject, object>();
            var _key = new TestCacheObject { Id = "A" };
            var _value = new object();

            var _addOrGetExisting = _cache.AddOrGetExisting(_key, _value);
            Assert.AreEqual(_value, _addOrGetExisting);

            var _lookupKey = new TestCacheObject { Id = "A" };
            var _actual = _cache.Get(_lookupKey);
            Assert.AreEqual(_value, _actual.FirstOrDefault());
        }