public void Test_Generate(int[] cellId, byte[] sectorId, double[] rtd,
                                  int[] resultCellId, byte[] resultSectorId,
                                  int resultCount, double[] min, double[] max, double[] average,
                                  int[] innerCount, int[] outerCount, int[] innerExcessCount, int[] outerExcessCount)
        {
            for (int i = 0; i < cellId.Length; i++)
            {
                sourceList.Add(new CdrRtdRecord
                {
                    CellId   = cellId[i],
                    SectorId = sectorId[i],
                    Rtd      = rtd[i]
                });
            }
            GenerateCdrTaRecordsFromTaRecordsService service = new GenerateCdrTaRecordsFromTaRecordsService(
                sourceList);
            List <CdrTaRecord> resultList = service.Generate();

            Assert.AreEqual(resultList.Count, resultCount);
            for (int i = 0; i < resultCount; i++)
            {
                Assert.AreEqual(resultList[i].CellId, resultCellId[i]);
                Assert.AreEqual(resultList[i].SectorId, resultSectorId[i]);
                Assert.AreEqual(resultList[i].TaMin, min[i], Eps);
                Assert.AreEqual(resultList[i].TaMax, max[i], Eps);
                Assert.AreEqual(resultList[i].TaAverage, average[i], Eps);
                Assert.AreEqual(resultList[i].TaInnerIntervalNum, innerCount[i]);
                Assert.AreEqual(resultList[i].TaOuterIntervalNum, outerCount[i]);
                Assert.AreEqual(resultList[i].TaInnerIntervalExcessNum, innerExcessCount[i], "Max is:" + max[i]);
                Assert.AreEqual(resultList[i].TaOuterIntervalExcessNum, outerExcessCount[i]);
            }
        }
        public override void Import(ImportedFileInfo[] validFileInfos)
        {
            FinishValidFilesStateService fileService = new FinishValidFilesStateService(validFileInfos);

            string[]            paths        = validFileInfos.Select(x => x.FilePath).ToArray();
            List <CdrRtdRecord> taRecordList = new List <CdrRtdRecord>();

            List <MrRecordSet> mrRecordSets = taRecordList.Import(_repository, _cells, paths.Where(x =>
                                                                                                   x.IndexOf("MRO", StringComparison.Ordinal) >= 0));

            List <RuInterferenceRecord> records = mrRecordSets.GenerteRuInterferenceRecords();

            GenerateCdrTaRecordsService taService = new GenerateCdrTaRecordsFromTaRecordsService(taRecordList);
            List <CdrTaRecord>          taDetails = taService.Generate();

            List <InterferenceDetails> details = new List <InterferenceDetails>();

            details.Import(records);

            _stats.AddRange(details.Select(x => new InterferenceStat
            {
                CellId            = x.CellId,
                SectorId          = x.SectorId,
                VictimCells       = x.Victims.Count,
                InterferenceCells = x.Victims.Count(v => v.InterferenceRatio > RuInterferenceStat.RatioThreshold)
            }));

            _stats.ImportByTa(taDetails);
            fileService.Finish();
            MessageBox.Show("成功导入MR数据文件");
        }