public void InputFile_NotExcelFile_Throws() { var options = new Options {InputPath = @"C:\TestDir\TestFile.pdf", OutputPath = @"C:\TestDir\TestFile.txt"}; var validator = new OptionsValidator(); Action act = () => validator.ValidateAndThrow(options); act.ShouldThrow<ValidationException>().WithMessage("*not Excel*"); }
static void Main(string[] args) { var options = new Options(); var extractor = Container.GetInstance<IExtractor<KitLabel>>(); var settings = Container.GetInstance<ISettingsService>(); var jobValidator = new JobValidator(settings); var columnMapValidator = new ColumnMapValidator(); var optionsValidator = new OptionsValidator(); var kitLabels = new List<KitLabel>(); Job job; CommandLine.Parser.Default.ParseArguments(args, options); try { optionsValidator.ValidateAndThrow(options); extractor.Initialize(options.InputPath); var columnMap = extractor.GetColumnMap(settings, 1, 1); columnMapValidator.ValidateAndThrow(columnMap); kitLabels.AddRange(extractor.Extract(columnMap, 1, 2)); job = new Job(settings.OutputHeaderString, kitLabels); jobValidator.ValidateAndThrow(job); } catch (ValidationException exc) { var messages = string.Join("; ", exc.Errors.Select(e => e.ErrorMessage)); var messageText = string.Format("** Warning! Input data file validation failed:; {0}", messages); kitLabels = new List<KitLabel> { new KitLabel(69) {Attn = "Data errors detected", Sbu = "Error", KitName = messageText} }; } catch (ArgumentOutOfRangeException exception) { var message = "** Warning! Excel conversion errors occurred:; "; var lookup = new Dictionary<string, string> { {"sheetIndex", "Unable to find a worksheet from which to extract data"}, {"startRowIndex", "No kit label rows are present in the data file"} }; string errorText; if (lookup.TryGetValue(exception.ParamName, out errorText)) { message += errorText; } kitLabels = new List<KitLabel> { new KitLabel(69) {Attn = "Range error detected", Sbu = "Error", KitName = message} }; } catch (Exception exc) { var message = string.Format("** Warning! Excel conversion errors occurred:; {0}", exc.Message); kitLabels = new List<KitLabel> { new KitLabel(70) {Attn = "Unknown Error detected", Sbu = "Error", KitName = message} }; } finally { job = new Job(settings.OutputHeaderString, kitLabels); File.WriteAllLines(options.OutputPath, job.GetOutputList(), Encoding.Unicode); } }