//[InlineData(new object[] { new string[] { "file1.csv", "file2.csv", "file3.csv" } })] public void StartProcess_processes_the_files_from_configured_file_location(IEnumerable <string> filesList) { //given moqFolderManager.Setup(m => m.GetAllFiles(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Dictionary <string, string> >())).Returns(filesList); var medianVarianceResult = new MedianVarianceResult(It.IsAny <string>(), It.IsAny <List <VarianceData> >(), new Dictionary <string, string>()); moqDataProcessor.Setup(m => m.GetMedianVariance(It.IsAny <string>(), It.IsAny <SourceFolderSettings>())).Returns(medianVarianceResult); moqOutPutService.Setup(m => m.OutputResult(It.IsAny <MedianVarianceResult>())).Verifiable("called"); var sut = new MedianManager(moqFolderManager.Object, moqDataProcessor.Object, moqOutPutService.Object); var sourceFolderSettings = new SourceFolderSettings() { FileFormat = new FileFormat() { Delimiter = ",", Ext = "*.csv" }, FileTypes = new Dictionary <string, string>() { { "TOU", "Energy" }, { "LP", "Data Value" } }, Path = "D:\\sample Files", LowerVariancePC = 20, UpperVariancePC = 20 }; //when sut.StartProcess(sourceFolderSettings); //then moqFolderManager.Verify(v => v.GetAllFiles(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Dictionary <string, string> >()), Times.Once); moqDataProcessor.Verify(v => v.GetMedianVariance(It.IsAny <string>(), It.IsAny <SourceFolderSettings>()), Times.Exactly(filesList.Count())); moqOutPutService.Verify(v => v.OutputResult(It.IsAny <MedianVarianceResult>()), Times.Exactly(filesList.Count())); }
public void OutputResult(MedianVarianceResult result) { //Always good to validate the input parameter in public methods if (result == null) { return; } foreach (var row in result.VarianceData) { Console.WriteLine($"{result.FileName} {row.Date} {row.Value} {result.Median}"); } }
private MedianVarianceResult PopulateMedianVariance(string filePath, SourceFolderSettings settings) { //Init file reader so that headers/path/delimiter are pre-populated and saved for later usage _fileReaderService.InitFileReader(filePath, settings.FileFormat.Delimiter); var result = new MedianVarianceResult ( _fileReaderService.FileName, new List <VarianceData>(), settings.FileTypes ); //Let's calculate the median. Pass in the Data Column Name from Model result.Median = _calcService.GetMedian(_fileReaderService.IterateFileOnColumn(result.DataColumnName)); //Iterate each row now foreach (var data in _fileReaderService.IterateFileOnColumn(result.DataColumnName)) { //Move to next iteration as value is not a decimal if (!decimal.TryParse(data, out decimal dataValue)) { continue; } //Let's find out if our value is within variance range bool inRange = _calcService.IsValueInMedianRange(result.Median, dataValue, settings.LowerVariancePC, settings.UpperVariancePC); if (inRange) { //Populate the date from the line being read //No need to iterate over again as FileReaderService keeps the current line saved var date = _fileReaderService.GetColumnValueFromCurrentLine(result.DateTimeColumnName); result.VarianceData.Add(new VarianceData(date, dataValue)); } } return(result); }