public void ValuesAreNotEqual_returnsFalse()
            {
                var value1 = new Lib.RSIValue(1M, 2M, 4);
                var value2 = new Lib.RSIValue(1M, 3M, 4);

                Assert.False(value1.Equals(value2));
            }
            public void ValuesAreEqual_returnsTrue()
            {
                var value1 = new Lib.RSIValue(1M, 2M, 4);
                var value2 = new Lib.RSIValue(1M, 2M, 4);

                Assert.True(value1.Equals(value2));
            }
            public void PreviousRSIPassedWithCandlestick_RSIGetsCalculated()
            {
                var expected   = new Lib.RSIValue(0.5430M, 0.5771M, 4);
                var calculator = new Lib.RSICalculator(MIN_SAMPLES);
                var actual     = calculator.CalculateNextValue(new Lib.RSIValue(0.5848M, 0.5446M, 4), new Lib.Candlestick(2M, 1M));

                Assert.Equal(expected, actual);
            }
            public void AverageLoss0_SetToMinimumNon0ValueForPrecision()
            {
                var value = new Lib.RSIValue(1M, 0M, 4);

                Assert.Equal(1M, value.AverageGain);
                Assert.Equal(0.0001M, value.AverageLoss);
                Assert.Equal(10000M, value.RS);
                Assert.Equal(99.990M, value.RSI);
            }
            public void Precision0_setToMax28()
            {
                var value = new Lib.RSIValue(1M, 2M, 0);

                Assert.Equal(1M, value.AverageGain);
                Assert.Equal(2M, value.AverageLoss);
                Assert.Equal(0.5M, value.RS);
                Assert.Equal(33.333333333333333333333333333M, value.RSI);
            }
            public void DataSet_propertiesSet()
            {
                var value = new Lib.RSIValue(1M, 2M, 4);

                Assert.Equal(1M, value.AverageGain);
                Assert.Equal(2M, value.AverageLoss);
                Assert.Equal(0.5M, value.RS);
                Assert.Equal(33.333M, value.RSI);
            }
            public void DataArraySet_RSIValueGetsCalculated()
            {
                var expected    = new Lib.RSIValue(0.5848M, 0.5446M, 4);
                var differences = new decimal[] {
                    1.0000M, -0.6875M, 0.5000M, -2.0000M, -0.6875M,
                    0.3750M, 1.1250M, 2.0625M, -0.2500M, -0.5625M,
                    -2.4375M, 1.7500M, 1.3750M, -1.0000M
                };
                var calculator = new Lib.RSICalculator(14);
                var actual     = calculator.CalculateInitialValue(differences);

                Assert.Equal(expected, actual);
            }
            public void CandlesticksSet_RSIValueGetsCalculated()
            {
                var expected     = new Lib.RSIValue(0.5848M, 0.5446M, 4);
                var candlesticks = new Lib.Candlestick[] {
                    new Lib.Candlestick(10M, 11M), new Lib.Candlestick(11M, 10.3125M), new Lib.Candlestick(10.3125M, 10.8125M),
                    new Lib.Candlestick(10.8125M, 8.8125M), new Lib.Candlestick(8.8125M, 8.125M), new Lib.Candlestick(8.125M, 8.5M),
                    new Lib.Candlestick(8.5M, 9.625M), new Lib.Candlestick(9.625M, 11.6875M), new Lib.Candlestick(11.6875M, 11.4375M),
                    new Lib.Candlestick(11.4375M, 10.875M), new Lib.Candlestick(10.875M, 8.4375M), new Lib.Candlestick(8.4375M, 10.1875M),
                    new Lib.Candlestick(10.1875M, 11.5625M), new Lib.Candlestick(11.5625M, 10.5625M)
                };
                var calculator = new Lib.RSICalculator(14);
                var actual     = calculator.CalculateInitialValue(candlesticks);

                Assert.Equal(expected, actual);
            }