public void TestExtractor()
        {
            IConfigurableCacheFactory ccf = CacheFactory.ConfigurableCacheFactory;

            IXmlDocument config = XmlHelper.LoadXml("assembly://Coherence.Tests/Tangosol.Resources/s4hc-local-cache-config.xml");

            ccf.Config = config;

            INamedCache cache = CacheFactory.GetCache("local-default");

            cache.Clear();
            ExtractorProcessor processor = new ExtractorProcessor(new ReflectionExtractor("Street"));
            Address            addr1     = new Address("XI krajiske divizije", "Belgrade", "Serbia", "11000");
            Address            addr2     = new Address("Pere Velimirovica", "Uzice", "Serbia", "11000");
            Address            addr3     = new Address("Rige od Fere", "Novi Sad", "Serbia", "11000");

            cache.Insert("addr1", addr1);
            cache.Insert("addr2", addr2);
            cache.Insert("addr3", addr3);

            Assert.IsTrue(cache.Count == 3);

            Object result = cache.Invoke("addr1", processor);

            Assert.IsNotNull(result);
            Assert.AreEqual(addr1.Street, result as String);

            processor = new ExtractorProcessor(new ReflectionExtractor("City"));
            IDictionary dictResult = cache.InvokeAll(cache.Keys, processor);

            Assert.AreEqual(addr1.City, dictResult["addr1"]);
            Assert.AreEqual(addr2.City, dictResult["addr2"]);
            Assert.AreEqual(addr3.City, dictResult["addr3"]);

            CacheFactory.Shutdown();
        }
        public void TestComposite()
        {
            IConfigurableCacheFactory ccf = CacheFactory.ConfigurableCacheFactory;

            IXmlDocument config = XmlHelper.LoadXml("assembly://Coherence.Tests/Tangosol.Resources/s4hc-local-cache-config.xml");

            ccf.Config = config;

            INamedCache cache = CacheFactory.GetCache("local-default");

            cache.Clear();

            Address addr1 = new Address("XI krajiske divizije", "Belgrade", "Serbia", "11000");
            Address addr2 = new Address("Pere Velimirovica", "Belgrade", "Serbia", "11000");
            Address addr3 = new Address("Rige od Fere", "Belgrade", "Serbia", "11000");

            cache.Insert("addr1", addr1);
            cache.Insert("addr2", addr2);

            Assert.IsTrue(cache.Count == 2);

            LikeFilter         likeXI        = new LikeFilter(new ReflectionExtractor("Street"), "XI%", '\\', true);
            ExtractorProcessor extractStreet = new ExtractorProcessor(new ReflectionExtractor("Street"));
            IEntryProcessor    putAddr3      = new ConditionalPut(AlwaysFilter.Instance, addr3);
            IEntryProcessor    removeLikeXI  = new ConditionalRemove(likeXI, false);

            IEntryProcessor[]  processors = new IEntryProcessor[] { extractStreet, removeLikeXI, putAddr3 };
            CompositeProcessor processor  = new CompositeProcessor(processors);

            Object objResult = cache.Invoke("addr1", processor);

            Assert.IsTrue(cache.Count == 2);
            object[] objResultArr = objResult as object[];
            Assert.IsNotNull(objResultArr);
            Assert.AreEqual(addr1.Street, objResultArr[0]);

            Address res = cache["addr1"] as Address;

            Assert.IsNotNull(res);
            Assert.AreEqual(addr3.City, res.City);
            Assert.AreEqual(addr3.State, res.State);
            Assert.AreEqual(addr3.Street, res.Street);
            Assert.AreEqual(addr3.ZIP, res.ZIP);

            res = cache["addr2"] as Address;
            Assert.IsNotNull(res);
            Assert.AreEqual(addr2.City, res.City);
            Assert.AreEqual(addr2.State, res.State);
            Assert.AreEqual(addr2.Street, res.Street);
            Assert.AreEqual(addr2.ZIP, res.ZIP);

            IDictionary dictResult = cache.InvokeAll(new ArrayList(new object[] { "addr1", "addr2" }), processor);

            Assert.IsTrue(cache.Count == 2);
            Address address = cache["addr1"] as Address;

            Assert.IsNotNull(address);
            Assert.AreEqual(addr3.Street, address.Street);
            address = cache["addr2"] as Address;
            Assert.IsNotNull(address);
            Assert.AreEqual(addr3.Street, address.Street);
            object[] objectArr = dictResult["addr1"] as object[];
            Assert.IsNotNull(objectArr);
            Assert.AreEqual(objectArr[0], addr3.Street);
            objectArr = dictResult["addr2"] as object[];
            Assert.IsNotNull(objectArr);
            Assert.AreEqual(objectArr[0], addr2.Street);

            CacheFactory.Shutdown();
        }