public void TestInvalidValuesNotReturned()
        {
            var list = new[]
                {
                    new ValueData{Value = ValueData.NullValue},
                    new ValueData{Value = 1}
                };

            var values = new ValueListBuilder(list).ValidValues;

            Assert.AreEqual(1, values.Count);
            Assert.AreEqual(1, values[0]);
        }
        public void TestValidValuesReturned()
        {
            var list = new []
                {
                    new ValueData{Value = 3},
                    new ValueData{Value = 1}
                };

            var values = new ValueListBuilder(list).ValidValues;

            Assert.AreEqual(2, values.Count);
            Assert.AreEqual(3, values[0]);
            Assert.AreEqual(1, values[1]);
        }
 public void TestNullListIngored()
 {
     var builder = new ValueListBuilder(null);
     Assert.AreEqual(0, builder.ValidValues.Count);
 }
        private IEnumerable<double> GetValuesForStats(Grouping grouping, TimePeriod timePeriod)
        {
            IList<CoreDataSet> data = null;
            IList<double> values;

            if (parentArea.IsCountry)
            {
                // Optimisation for large number of areas
                values = groupDataReader.GetOrderedCoreDataValidValuesForAllAreasOfType(grouping, timePeriod,
                    areaCodesToIgnore);
            }
            else
            {
                data = new CoreDataSetListProvider(groupDataReader).GetChildAreaData(grouping, parentArea, timePeriod);
                data = new CoreDataSetFilter(data).RemoveWithAreaCode(areaCodesToIgnore).ToList();
                data = data.OrderBy(x => x.Value).ToList();
                values = new ValueListBuilder(data).ValidValues;
            }

            // Apply rules
            int areaTypeId = grouping.AreaTypeId;
            if (areaTypeId != AreaTypeIds.GpPractice)
            {
                doEnoughAreasHaveValues = IsRequiredNumberOfAreaValues(values) ||
                    ShouldSpineChartAlwaysBeAvailable(grouping.IndicatorId);

                if (doEnoughAreasHaveValues == false)
                {
                    values = null;
                }
            }
            else if (parentArea.IsCcg)
            {
                // CCG average of GP practices
                if (RuleShouldCcgAverageBeCalculated.Validates(grouping, data, ccgPopulation) == false)
                {
                    values = null;
                }
            }

            return values;
        }