public void Test_VerifyAverageBetweenDataContextSwitch()
        {
            SampleAggregator uut = new SampleAggregator();

            uint count = 200;
            uint value = 10;

            var samples = GenerateSamples(count, value, value);

            List<AggregatedSample> aggregatedSamples = new List<AggregatedSample>();
            uut.DataAggregatedEvent +=
                sampleString =>
                {
                    aggregatedSamples.Add(ConvertToSample(sampleString));
                };

            uut.AggregateData(samples, FeatureVectorType.AverageContextSwitch);

            Assert.AreEqual<int>((int)(count / value), aggregatedSamples.Count);
            uint expectedValue = (value * (value - 1)) / (value - 1);  //
            foreach (AggregatedSample s in aggregatedSamples)
            {
                Assert.AreEqual<uint>(expectedValue, s.EventValue1);
                Assert.AreEqual<uint>(expectedValue, s.EventValue2);
                Assert.AreEqual<uint>(expectedValue, s.EventValue3);
                Assert.AreEqual<uint>(expectedValue, s.EventValue4);
                Assert.AreEqual<uint>(expectedValue, s.EventValue5);
                Assert.AreEqual<uint>(expectedValue, s.EventValue6);
            }
        }
        public void Test_VerifyBinningWorks()
        {
            SampleAggregator uut = new SampleAggregator();

            uint count = 1000;
            uint value = 10;
            var samples = GenerateDifferentSamples(count, value, 50);

            List<string> aggregatedSamples = new List<string>();
            uut.DataAggregatedEvent +=
                sampleString =>
                {
                    aggregatedSamples.Add(sampleString);
                };

            uut.AggregateData(samples, FeatureVectorType.Histogram);
        }
        public void Test_VerifySumBetweenDataContextSwitchWithSampleCountDimension()
        {
            SampleAggregator uut = new SampleAggregator();

            uint count = 520;
            uint value = 10;

            var samples = GenerateSamples(count, value, value);

            List<AggregatedSample> aggregatedSamples = new List<AggregatedSample>();
            uut.DataAggregatedEvent +=
                sampleString =>
                {
                    aggregatedSamples.Add(ConvertToSample(sampleString));
                };

            uut.AggregateData(samples, FeatureVectorType.SummedContextSwitchWithTotalCountIncluded);

            Assert.AreEqual<int>((int)(count / value), aggregatedSamples.Count);
            uint expectedValue = value * (value - 1);
            foreach (AggregatedSample s in aggregatedSamples)
            {
                Assert.AreEqual<uint>(expectedValue, s.EventValue1);
                Assert.AreEqual<uint>(expectedValue, s.EventValue2);
                Assert.AreEqual<uint>(expectedValue, s.EventValue3);
                Assert.AreEqual<uint>(expectedValue, s.EventValue4);
                Assert.AreEqual<uint>(expectedValue, s.EventValue5);
                Assert.AreEqual<uint>(expectedValue, s.EventValue6);
                Assert.AreEqual<uint>(value - 1, s.SampleCountBetweenContextSwitches);
            }
        }