public void returns_NaN_for_a_set_of_all_negative_numbers() { //arrange var inputData = new[] { -1.0, -2.0, -3.0 }; //act var gainLossRatio = inputData.GainLossRatio(); //assert Assert.AreEqual(double.NaN, gainLossRatio); }
public void handles_a_value_of_zero_as_a_positive() { //arrange var inputData = new[] { 0.0, -1.0 }; //act var gainLossRatio = inputData.GainLossRatio(); //assert Assert.AreEqual(0.0, gainLossRatio); //0.0 / -1.0 => 0.0 }
//Not sure this is correct. Undefined may be more correct. public void returns_NaN_for_a_single_negative_input() { //arrange var inputData = new[] { -1.0 }; //act var gainLossRatio = inputData.GainLossRatio(); //assert Assert.AreEqual(double.NaN, gainLossRatio); }
public void calculates_the_correct_ratio_given_a_set_of_gains_and_losses() { //arrange var inputData = new[] { -2.0, -1.0, 0.0, 1.0, 2.0 }; var meanOfGains = inputData.Where(x => x >= 0).Mean(); var meanOfLosses = inputData.Where(x => x < 0).Mean(); var expectedRatio = Math.Abs(meanOfGains / meanOfLosses); //act var gainLossRatio = inputData.GainLossRatio(); //assert Assert.AreEqual(expectedRatio, gainLossRatio); }