Beispiel #1
0
        public void TestCalculations_AllNegativeIntegers_Even()
        {
            CalculationHelper calc = new CalculationHelper(generateTestData_AllNegativeIntegers_Even());
            CalculationDTO    dto  = calc.Calculate();

            Assert.IsNotNull(dto.mean);
            Assert.IsNotNull(dto.median);
            Assert.IsNotNull(dto.mode);

            Assert.AreEqual(-34.333333333333336, dto.mean);
            Assert.AreEqual(-28.5, dto.median);

            List <double> testMode = new List <double>()
            {
                -12
            };

            for (var i = 0; i < dto.mode.Count; i++)
            {
                Assert.AreEqual(testMode[i], dto.mode[i]);
            }
        }
Beispiel #2
0
        public void TestCalculations_MixedBag_Odd()
        {
            CalculationHelper calc = new CalculationHelper(generateTestData_MixedBag_Odd());
            CalculationDTO    dto  = calc.Calculate();

            Assert.IsNotNull(dto.mean);
            Assert.IsNotNull(dto.median);
            Assert.IsNotNull(dto.mode);

            Assert.AreEqual(164122.13748818, dto.mean);
            Assert.AreEqual(0.0328409, dto.median);

            List <double> testMode = new List <double>()
            {
                -19304.273, 838984, 0.0328409, -0.0204, 930.948
            };

            for (var i = 0; i < dto.mode.Count; i++)
            {
                Assert.AreEqual(testMode[i], dto.mode[i]);
            }
        }
Beispiel #3
0
        public void TestCalculations_AllNegativeDecimals_Even()
        {
            CalculationHelper calc = new CalculationHelper(generateTestData_AllNegativeDecimals_Even());
            CalculationDTO    dto  = calc.Calculate();

            Assert.IsNotNull(dto.mean);
            Assert.IsNotNull(dto.median);
            Assert.IsNotNull(dto.mode);

            Assert.AreEqual(-0.3862486666666667, dto.mean);
            Assert.AreEqual(-0.35988000000000003, dto.median);

            List <double> testMode = new List <double>()
            {
                -0.234, -0.018932, -0.8394, -0.7101, -0.0293, -0.48576
            };

            for (var i = 0; i < dto.mode.Count; i++)
            {
                Assert.AreEqual(testMode[i], dto.mode[i]);
            }
        }
Beispiel #4
0
        public void TestCalculations_AllPositiveDecimals_Even()
        {
            CalculationHelper calc = new CalculationHelper(generateTestData_AllPositiveDecimals_Even());
            CalculationDTO    dto  = calc.Calculate();

            Assert.IsNotNull(dto.mean);
            Assert.IsNotNull(dto.median);
            Assert.IsNotNull(dto.mode);

            Assert.AreEqual(0.5355599999999999, dto.mean);
            Assert.AreEqual(0.59793, dto.median);

            List <double> testMode = new List <double>()
            {
                0.234, 0.7101
            };

            for (var i = 0; i < dto.mode.Count; i++)
            {
                Assert.AreEqual(testMode[i], dto.mode[i]);
            }
        }
        public CalculationDataFlow(ILogger <CalculationDataFlow> logger, IResultProducer resultProducer)
        {
            _logger         = logger;
            _resultProducer = resultProducer;

            _deserializeBlock = new TransformBlock <byte[], CalculationPack>(msg => MessagePackSerializer.Deserialize <CalculationPack>(msg));

            _calculationBlock = new TransformBlock <CalculationPack, CalculationPack>(pack =>
            {
                Parallel.ForEach(pack.Data, unit =>
                {
                    unit.Equation.Result = CalculationHelper.Calculate(unit.Equation.EqMethod, unit.Equation.Values);
                });

                return(pack);
            });

            _publishBlock = new ActionBlock <CalculationPack>(pack =>
            {
                //TODO publish in kafka topic

                //_logger.LogInformation(pack.Id.ToString());

                foreach (var eq in pack.Data)
                {
                    _logger.LogInformation($"PackId: {eq.CalcPackId} EqId: {eq.Equation.Id} Result:{eq.Equation.Result}");
                }

                _resultProducer.ProduceResultAsync(pack);
            });

            var linkOptions = new DataflowLinkOptions()
            {
                PropagateCompletion = true
            };

            _deserializeBlock.LinkTo(_calculationBlock, linkOptions);
            _calculationBlock.LinkTo(_publishBlock, linkOptions);
        }
Beispiel #6
0
        public void TestCalculations_MixedBag_Even()
        {
            CalculationHelper calc = new CalculationHelper(generateTestData_MixedBag_Even());
            CalculationDTO    dto  = calc.Calculate();

            Assert.IsNotNull(dto.mean);
            Assert.IsNotNull(dto.median);
            Assert.IsNotNull(dto.mode);

            Assert.AreEqual(104594.44790681665, dto.mean);
            Assert.AreEqual(0.006220449999999999, dto.median);


            List <double> testMode = new List <double>()
            {
                -19304.273, 838984, 0.0328409, -0.0204, 930.948, -193044
            };

            for (var i = 0; i < dto.mode.Count; i++)
            {
                Assert.AreEqual(testMode[i], dto.mode[i]);
            }
        }