public void TestDecimalAverageAggregator() { DecimalAverage agg1 = new DecimalAverage(IdentityExtractor.Instance); Assert.IsNotNull(agg1); Assert.AreSame(IdentityExtractor.Instance, agg1.Extractor); DecimalAverage agg2 = new DecimalAverage("dummy"); Assert.IsNotNull(agg2); Assert.IsInstanceOf(typeof(ReflectionExtractor), agg2.Extractor); DecimalAverage agg3 = new DecimalAverage("another.dummy"); Assert.IsNotNull(agg3); Assert.IsInstanceOf(typeof(ChainedExtractor), agg3.Extractor); ArrayList al = new ArrayList(); al.Add(new TestInvocableCacheEntry("Ivan", 173.6M)); al.Add(new TestInvocableCacheEntry("Goran", 185.1M)); al.Add(new TestInvocableCacheEntry("Ana", -123456789012345678901234.08M)); Assert.AreEqual((173.6M + 185.1M - 123456789012345678901234.08M) / 3, agg1.Aggregate(al)); // aggragation on remote cache INamedCache cache = CacheFactory.GetCache(CacheName); cache.Clear(); Hashtable ht = new Hashtable(); ht.Add("decimalAvgKey1", 100M); ht.Add("decimalAvgKey2", 80.5M); ht.Add("decimalAvgKey3", 19.5M); ht.Add("decimalAvgKey4", -12345678901234571234.08M); cache.InsertAll(ht); IEntryAggregator aggregator = new DecimalAverage(IdentityExtractor.Instance); object result = cache.Aggregate(cache.Keys, aggregator); Assert.AreEqual((100M + 80.5M + 19.5M - 12345678901234571234.08M) / 4, result); cache.Insert("comparableKey5", null); result = cache.Aggregate(cache.Keys, aggregator); Assert.AreEqual((100M + 80.5M + 19.5M - 12345678901234571234.08M) / 4, result); IFilter filter = new AlwaysFilter(); result = cache.Aggregate(filter, aggregator); Assert.AreEqual((100M + 80.5M + 19.5M - 12345678901234571234.08M) / 4, result); CacheFactory.Shutdown(); }
public void TestAggregatorSerialization() { ConfigurablePofContext ctx = new ConfigurablePofContext("assembly://Coherence.Tests/Tangosol.Resources/s4hc-test-config.xml"); Assert.IsNotNull(ctx); ComparableMax comparableMax = new ComparableMax("member1"); ComparableMin comparableMin = new ComparableMin("member2"); CompositeAggregator compositeAggregator = new CompositeAggregator(); DecimalAverage decimalAverage = new DecimalAverage("member3"); DecimalMax decimalMax = new DecimalMax("member4"); DecimalMin decimalMin = new DecimalMin("member5"); DecimalSum decimalSum = new DecimalSum("member6"); DistinctValues distinctValues = new DistinctValues("member7"); DoubleAverage doubleAverage = new DoubleAverage("member8"); DoubleMax doubleMax = new DoubleMax("member9"); DoubleMin doubleMin = new DoubleMin("member10"); DoubleSum doubleSum = new DoubleSum("member11"); GroupAggregator groupAggregator = new GroupAggregator(); LongMax longMax = new LongMax("member12"); LongMin longMin = new LongMin("member13"); LongSum longSum = new LongSum("member14"); PriorityAggregator priorityAggregator = new PriorityAggregator(); Count count = new Count(); Stream stream = new MemoryStream(); ctx.Serialize(new DataWriter(stream), comparableMax); ctx.Serialize(new DataWriter(stream), comparableMin); ctx.Serialize(new DataWriter(stream), compositeAggregator); ctx.Serialize(new DataWriter(stream), decimalAverage); ctx.Serialize(new DataWriter(stream), decimalMax); ctx.Serialize(new DataWriter(stream), decimalMin); ctx.Serialize(new DataWriter(stream), decimalSum); ctx.Serialize(new DataWriter(stream), distinctValues); ctx.Serialize(new DataWriter(stream), doubleAverage); ctx.Serialize(new DataWriter(stream), doubleMax); ctx.Serialize(new DataWriter(stream), doubleMin); ctx.Serialize(new DataWriter(stream), doubleSum); ctx.Serialize(new DataWriter(stream), groupAggregator); ctx.Serialize(new DataWriter(stream), longMax); ctx.Serialize(new DataWriter(stream), longMin); ctx.Serialize(new DataWriter(stream), longSum); ctx.Serialize(new DataWriter(stream), priorityAggregator); ctx.Serialize(new DataWriter(stream), count); stream.Position = 0; Assert.AreEqual(comparableMax, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(comparableMin, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(compositeAggregator, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(decimalAverage, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(decimalMax, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(decimalMin, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(decimalSum, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(distinctValues, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(doubleAverage, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(doubleMax, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(doubleMin, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(doubleSum, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(groupAggregator, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(longMax, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(longMin, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(longSum, ctx.Deserialize(new DataReader(stream))); Assert.AreEqual(priorityAggregator.GetType(), ctx.Deserialize(new DataReader(stream)).GetType()); Assert.AreEqual(count.GetType(), ctx.Deserialize(new DataReader(stream)).GetType()); stream.Close(); }