public void NotEnoughPriceDataToCalculate()
        {
            var closingPrices = GraphPlottingUtilities.CreateGraph(
                DateTime.MinValue,
                new[] { 98m, 99m, 100m, 100m }
            );

            var calculator = new MomentumCalculator(closingPrices, 4);

            Assert.AreEqual(0, calculator.CalculateAsync().Result.Count);
        }
        public void PriceDataMinimumSatisfied()
        {
            const int period = 3;

            var closingPrices = GraphPlottingUtilities.CreateGraph(
                DateTime.MinValue,
                new[] { 100m, 100m, 100m, 100m }
            );

            var expectedMomentum = GraphPlottingUtilities.CreateGraph(
                DateTime.MinValue.AddDays(period),
                new[] { 100m }
            );

            var calculator = new MomentumCalculator(closingPrices, period);
            Assert.AreEqual(expectedMomentum, calculator.CalculateAsync().Result);
        }
        public void CalculateTest()
        {
            const int period = 10;

            var closingPrices = GraphPlottingUtilities.CreateGraph(
                DateTime.MinValue,
                new[] { 98m, 99m, 100m, 100m, 101m, 101m, 101m, 101m, 101m, 101m, 101m, 103m, 105m}
            );

            var expectedMomentum = GraphPlottingUtilities.CreateGraph(
                DateTime.MinValue.AddDays(14),
                new[] {103.1m, 104m, 105m}
            );

            var calculator = new MomentumCalculator(closingPrices, period);
            Assert.AreEqual(expectedMomentum, calculator.CalculateAsync().Result);
        }