/// <summary>
        /// Parse list of values.
        /// </summary>
        /// <param name="valueListString">e.g. 1,3,4</param>
        public static ValueWithCIsData Parse(string valueListString)
        {
            string[] bits = valueListString.Split(',');

            ValueWithCIsData data = null;

            if (bits.Length == 1)
            {
                data = new ValueWithCIsData { Value = double.Parse(bits[0]) };
            }
            else if (bits.Length == 3)
            {
                data = GetNullObject();

                if (CanValueBeParsed(bits[0]))
                {
                    // No data
                }
                else if (CanValueBeParsed(bits[1]))
                {
                    // No CIs
                    data.Value = double.Parse(bits[0]);
                }
                else
                {
                    data.Value = double.Parse(bits[0]);
                    data.LowerCI = double.Parse(bits[1]);
                    data.UpperCI = double.Parse(bits[2]);
                }
            }

            return data;
        }
 public void TestFormatAndTruncateDataList()
 {
     var data = new ValueWithCIsData() { Value = Number };
     DataProcessor().FormatAndTruncateList(new List<ValueWithCIsData>{data});
     AssertValueTruncatedAsExpected(data);
     Assert.AreEqual("1.11", data.ValueFormatted);
 }
 public override void FormatConfidenceIntervals(ValueWithCIsData data)
 {
     if (data != null)
     {
         data.UpperCIF = FormatNumber(data.UpperCI);
         data.LowerCIF = FormatNumber(data.LowerCI);
     }
 }
 public void TestFormatCIs()
 {
     var data = new ValueWithCIsData
     {
         UpperCI = 2.222222222,
         LowerCI = Number
     };
     DataProcessor().FormatAndTruncate(data);
     Assert.AreEqual("1.11", data.LowerCIF);
     Assert.AreEqual("2.22", data.UpperCIF);
 }
        public void TestFormatConfidenceIntervals()
        {
            var formatter = NumericFormatterFactory.NewWithLimits(GetMetadata(1), null);
            var data = new ValueWithCIsData
            {
                LowerCI = 1.1111,
                UpperCI = 9.9999
            };
            formatter.FormatConfidenceIntervals(data);

            Assert.AreEqual("1.1", data.LowerCIF);
            Assert.AreEqual("10.0", data.UpperCIF);
        }
        public void TestFormatConfidenceIntervals_NullValues()
        {
            var formatter = NumericFormatterFactory.NewWithLimits(GetMetadata(1), null);
            var data = new ValueWithCIsData
            {
                LowerCI = ValueData.NullValue,
                UpperCI = ValueData.NullValue
            };
            formatter.FormatConfidenceIntervals(data);

            Assert.AreEqual(NumericFormatter.NoValue, data.LowerCIF);
            Assert.AreEqual(NumericFormatter.NoValue, data.UpperCIF);
        }
 public void TestGetBaseData()
 {
     ValueWithCIsData data = new ValueWithCIsData
     {
         Value = 1,
         LowerCI = 2,
         UpperCI = 3,
         Count = 4
     };
     ValueWithCIsData copy = data.GetValueWithCIsData();
     Assert.AreEqual(data.Value, copy.Value);
     Assert.AreEqual(data.Count, copy.Count);
     Assert.AreEqual(data.LowerCI, copy.LowerCI);
     Assert.AreEqual(data.UpperCI, copy.UpperCI);
 }
        private Significance GetSignificance(ValueWithCIsData data, ValueWithCIsData comparator)
        {
            if (CanComparisonGoAhead(data, comparator) == false ||
                data.AreCIsValid == false ||
                comparator.AreCIsValid == false)
            {
                return Significance.None;
            }

            if (DoCIsOverlap(comparator, data))
            {
                return Significance.Same;
            }

            if (data.Value < comparator.Value)
            {
                return AdjustForPolarity(Significance.Worse);
            }

            return AdjustForPolarity(Significance.Better);
        }
 public void TestTruncateUpperCI()
 {
     var data = new ValueWithCIsData { UpperCI = Number };
     TruncateData(data);
     Assert.AreEqual(TruncatedNumber, data.UpperCI);
 }
 public abstract void FormatConfidenceIntervals(ValueWithCIsData data);
 private static bool DoCIsOverlap(ValueWithCIsData data1, ValueWithCIsData data2)
 {
     return data1.Value < data2.Value ? data2.LowerCI <= data1.UpperCI : data1.LowerCI <= data2.UpperCI;
 }
 public Significance Compare(ValueWithCIsData data, ValueWithCIsData comparator, IndicatorMetadata metadata)
 {
     return GetSignificance(data, comparator);
 }
 protected virtual bool CanComparisonGoAhead(ValueWithCIsData data, ValueWithCIsData comparator)
 {
     return IsPolarityValid() && IsDataValid(data) && IsDataValid(comparator);
 }
 protected bool CanComparisonGoAhead(ValueWithCIsData data)
 {
     return IsPolarityValid() && IsDataValid(data);
 }
 protected static void SetValueWithCIsDataDefaults(ValueWithCIsData data)
 {
     data.Value = NullValue;
     data.LowerCI = NullValue;
     data.UpperCI = NullValue;
 }
 public static ValueWithCIsData GetNullObject()
 {
     ValueWithCIsData data = new ValueWithCIsData();
     SetValueWithCIsDataDefaults(data);
     return data;
 }
 private static void AssertValueTruncatedAsExpected(ValueWithCIsData data)
 {
     Assert.AreEqual(1.1111, data.Value);
 }
 protected bool IsDataValid(ValueWithCIsData data)
 {
     return data != null && data.IsValueValid;
 }
 public void TestTruncateDataList()
 {
     var data = new ValueWithCIsData { Value = Number };
     DataProcessor().TruncateList(new List<ValueWithCIsData> { data });
     AssertValueTruncatedAsExpected(data);
 }
 public void TestTruncateData()
 {
     var data = new ValueWithCIsData { Value = Number };
     DataProcessor().Truncate(data);
     AssertValueTruncatedAsExpected(data);
 }
 private static void TruncateData(ValueWithCIsData data)
 {
     var processor = new ValueWithCIsDataProcessor(new Moq.Mock<DefaultFormatter>().Object);
     processor.FormatAndTruncate(data);
 }