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);
 }