public PartitionDataForAllSexes GetPartitionData(int profileId,
            string areaCode, int indicatorId, int ageId, int areaTypeId)
        {
            InitGrouping(profileId, areaTypeId, indicatorId, ageId);
            InitMetadata(_grouping);

            var timePeriod = TimePeriod.GetDataPoint(_grouping);

            // Get Data
            IList<CoreDataSet> dataList = _groupDataReader.GetCoreDataForAllSexes(indicatorId,
                timePeriod, areaCode, ageId);

            // Define and order sexes
            var sexes = GetSexesFromDataList(dataList);

            // Process data list
            dataList = new CoreDataSetSorter(dataList).SortBySexId(sexes);
            CalculateSignificances(areaCode, timePeriod, dataList);
            FormatData(dataList);

            return new PartitionDataForAllSexes
            {
                AreaCode = areaCode,
                IndicatorId = indicatorId,
                AgeId = ageId,
                Sexes = sexes,
                Data = dataList
            };
        }
        public void TestSortBySexId()
        {
            var unsortedDataList = GetDataWithSpecificSexIds(2, 3, 1);
            var sexes = GetSexes(1, 2, 3);
            var sortedDataList = new CoreDataSetSorter(unsortedDataList).SortBySexId(sexes);

            AssertSexIdOrder(sortedDataList, 1, 2, 3);
        }
        public void TestSortByAgeIdWhereMultipleDataWithSameAgeId()
        {
            var unsortedDataList = GetDataWithSpecificAgeIds(2, 1, 2);
            var ages = GetAges(1, 2);
            var sortedDataList = new CoreDataSetSorter(unsortedDataList).SortByAgeId(ages);

            AssertAgeIdOrder(sortedDataList, 1, 2, 2);
        }
        public void TestSortByDescendingYear()
        {
            var unsortedDataList = new List<CoreDataSet>
            {
                new CoreDataSet { Year = 2002},
                new CoreDataSet { Year = 2001},
                new CoreDataSet { Year = 2003}
            };
            var sortedDataList = new CoreDataSetSorter(unsortedDataList).SortByDescendingYear().ToList();

            Assert.AreEqual(2003, sortedDataList[0].Year);
            Assert.AreEqual(2001, sortedDataList[2].Year);
        }
 /// <summary>
 /// Get the data (starting with the most recent) until an invalid data point is reached.
 /// </summary>
 private List<CoreDataSet> GetValidDataList()
 {
     var orderedData = new CoreDataSetSorter(Data.ToList()).SortByDescendingYear();
     var validData = new List<CoreDataSet>();
     foreach (var data in orderedData)
     {
         if (IsDataValid(data))
         {
             validData.Add(data);
         }
         else
         {
             break;
         }
     }
     return validData;
 }