예제 #1
0
        public void TestViewBuilderWithListener()
        {
            ICacheListener listener = new TestCacheListener();
            INamedCache    cache    = new ViewBuilder(GetCache("v-listener")).Listener(listener).Build();

            Assert.IsInstanceOf(typeof(ContinuousQueryCache), cache);

            ContinuousQueryCache queryCache = (ContinuousQueryCache)cache;

            Assert.That(queryCache.CacheListener, Is.EqualTo(listener));
        }
        public void ConverterCacheListenerTests()
        {
            TestCacheListener listener = new TestCacheListener();
            IObservableCache  cache    = InstantiateCache();
            IConverter        cUp      = new ConvertUp();
            CacheEventArgs    evt      =
                new CacheEventArgs(cache, CacheEventType.Inserted, "key", "oldvalue", "newvalue", false);

            ConverterCollections.ConverterCacheEventArgs convEvt =
                (ConverterCollections.ConverterCacheEventArgs)ConverterCollections.GetCacheEventArgs(cache, evt, cUp, cUp);

            ICacheListener convListener = new ConverterCollections.ConverterCacheListener(cache, listener, cUp, cUp);

            Assert.IsNotNull(convListener);
            Assert.AreEqual(listener.inserted, 0);
            convListener.EntryInserted(evt);
            Assert.AreEqual(listener.inserted, 1);
            Assert.IsNotNull(listener.evt);
            CacheEventArgs listenerEvt = listener.evt;

            Assert.AreEqual(listenerEvt.Cache, convEvt.Cache);
            Assert.AreEqual(listenerEvt.EventType, convEvt.EventType);
            Assert.AreEqual(listenerEvt.IsSynthetic, convEvt.IsSynthetic);
            Assert.AreEqual(listenerEvt.Key, convEvt.Key);
            Assert.AreEqual(listenerEvt.NewValue, convEvt.NewValue);
            Assert.AreEqual(listenerEvt.OldValue, convEvt.OldValue);

            Assert.AreEqual(listener.updated, 0);
            convListener.EntryUpdated(evt);
            Assert.AreEqual(listener.updated, 1);

            Assert.AreEqual(listener.deleted, 0);
            convListener.EntryDeleted(evt);
            Assert.AreEqual(listener.deleted, 1);

            Assert.IsInstanceOf(typeof(ConverterCollections.ConverterCacheListener), convListener);
            ConverterCollections.ConverterCacheListener ccl =
                convListener as ConverterCollections.ConverterCacheListener;
            Assert.IsNotNull(ccl);
            Assert.AreEqual(ccl.CacheListener, listener);
            Assert.AreEqual(ccl.ConverterKeyUp, cUp);
            Assert.AreEqual(ccl.ConverterValueUp, cUp);
            Assert.AreEqual(ccl.ObservableCache, cache);
        }
        public void ConverterObservableCacheTests()
        {
            IObservableCache  cache    = InstantiateCache();
            IConverter        cDown    = new ConvertDown();
            IConverter        cUp      = new ConvertUp();
            TestCacheListener listener = new TestCacheListener();

            IObservableCache convCache = ConverterCollections.GetObservableCache(cache, cUp, cDown, cUp, cDown);

            Assert.IsNotNull(convCache);
            //AddCacheListener(listener)
            convCache.AddCacheListener(listener);
            Assert.AreEqual(listener.inserted, 0);
            convCache.Add(1, 1);
            Assert.AreEqual(listener.inserted, 1);
            Assert.AreEqual(listener.updated, 0);
            convCache[1] = 2;
            Assert.AreEqual(listener.updated, 1);
            Assert.AreEqual(listener.deleted, 0);
            convCache.Remove(1);
            Assert.AreEqual(listener.deleted, 1);
            //RemoveCacheListener(listener)
            convCache.RemoveCacheListener(listener);
            Assert.AreEqual(listener.inserted, 1);
            convCache.Add(1, 1);
            Assert.AreEqual(listener.inserted, 1);

            listener.inserted = listener.updated = listener.deleted = 0;
            convCache.Clear();
            //AddCacheListener(listener, key, isLite);
            convCache.AddCacheListener(listener, "1", true);
            for (int i = 0; i < 3; i++)
            {
                convCache.Add(i, i);
            }
            Assert.AreEqual(listener.inserted, 1);
            Assert.AreEqual(listener.updated, 0);
            Assert.AreEqual(listener.deleted, 0);
            for (int i = 0; i < 3; i++)
            {
                convCache[i] = i + 1;
            }
            Assert.AreEqual(listener.inserted, 1);
            Assert.AreEqual(listener.updated, 1);
            Assert.AreEqual(listener.deleted, 0);
            convCache.Clear();
            Assert.AreEqual(listener.inserted, 1);
            Assert.AreEqual(listener.updated, 1);
            Assert.AreEqual(listener.deleted, 1);
            //RemoveCacheListener(listener, key)
            convCache.RemoveCacheListener(listener, "1");
            convCache.Add(1, 1);
            Assert.AreEqual(listener.inserted, 1);

            listener.inserted = listener.updated = listener.deleted = 0;
            convCache.Clear();
            IFilter filter = AlwaysFilter.Instance;

            //AddCacheListener(listener, filter, isLite)
            convCache.AddCacheListener(listener, filter, true);
            for (int i = 0; i < 3; i++)
            {
                convCache.Add(i, i);
            }
            Assert.AreEqual(listener.inserted, 3);
            Assert.AreEqual(listener.updated, 0);
            Assert.AreEqual(listener.deleted, 0);
            for (int i = 0; i < 3; i++)
            {
                convCache[i] = i + 1;
            }
            Assert.AreEqual(listener.inserted, 3);
            Assert.AreEqual(listener.updated, 3);
            Assert.AreEqual(listener.deleted, 0);
            convCache.Clear();
            Assert.AreEqual(listener.inserted, 3);
            Assert.AreEqual(listener.updated, 3);
            Assert.AreEqual(listener.deleted, 3);
            //RemoveCacheListener(listener, filter)
            convCache.RemoveCacheListener(listener, filter);
            convCache.Add(1, 1);
            Assert.AreEqual(listener.inserted, 3);

            Assert.IsInstanceOf(typeof(ConverterCollections.ConverterObservableCache), convCache);
            ConverterCollections.ConverterObservableCache coc =
                convCache as ConverterCollections.ConverterObservableCache;
            Assert.IsNotNull(coc);
            Assert.AreEqual(coc.ObservableCache, cache);
        }