public ErrorResult EnrichError(SpreadsheetWorkbook spreadsheetWorkbook, Exception e) { var formulaName = spreadsheetWorkbook.GetFormulaName(); if (e.GetType() == typeof(ExpressionParseException)) { var error = "Invalid expression found in tax formula [" + formulaName + "]. Check that separators and delimiters use the English locale."; return(new ErrorResult(formulaName, error, spreadsheetWorkbook.GetPresentation())); } if (e.Message.StartsWith("Circular Reference")) { var error = parseCircularReferenceException(e, formulaName); return(new ErrorResult(formulaName, error, spreadsheetWorkbook.GetPresentation())); } if ("Object reference not set to an instance of an object".Equals(e.Message) && StackTraceContains(e, "vLookup")) { return(new ErrorResult(formulaName, "Missing Lookup Table", spreadsheetWorkbook.GetPresentation())); } if ("No matches found".Equals(e.Message)) { var error = parseNoMatchException(e, formulaName); return(new ErrorResult(formulaName, error, spreadsheetWorkbook.GetPresentation())); } return(new ErrorResult(formulaName, e.Message, spreadsheetWorkbook.GetPresentation())); }
public ErrorResult EnrichError(SpreadsheetWorkbook spreadsheetWorkbook, Exception e) { var formulaName = spreadsheetWorkbook.GetFormulaName(); var error = _errorValidators .FirstOrDefault(ev => ev.Validate(e)) ?.ErrorMessage(e, formulaName) ?? e.Message; return(new ErrorResult(formulaName, error, spreadsheetWorkbook.GetPresentation())); }
public void ShouldReturnInvalidExpression() { var enricher = new MessageEnricher(); var worksheet = new SpreadsheetWorkbook(); var e = new ExpressionParseException("ExpressionParseException error"); var actual = enricher.EnrichError(worksheet, e); Assert.Equal("Invalid expression found in tax formula [" + worksheet.GetFormulaName() + "]. Check that separators and delimiters use the English locale.", actual.Message); }
public void ShouldReturnMissingFormula() { var enricher = new MessageEnricher(); var worksheet = new SpreadsheetWorkbook(); var e = new SpreadsheetException("Missing Formula", new List <string>() { "C1", "C2", "C3" }, "token"); var actual = enricher.EnrichError(worksheet, e); Assert.Equal($"Invalid expression found in tax formula [{worksheet.GetFormulaName()}]. Check for merged cells near {e.Cells}", actual.Message); }
public void ShouldReturnCircularReference() { var enricher = new MessageEnricher(); var worksheet = new SpreadsheetWorkbook(); var e = new SpreadsheetException("Circular Reference xxx", new List <string>() { "C1", "C2", "C3" }, "token"); var actual = enricher.EnrichError(worksheet, e); Assert.Equal("Circular Reference in spreadsheet related to formula '" + worksheet.GetFormulaName() + "'. Cells: " + e.Cells, actual.Message); }
public void SpreadsheetExceptionShouldReturnNoMatchesFound() { var enricher = new MessageEnricher(); var worksheet = new SpreadsheetWorkbook(); var e = new SpreadsheetException("No matches found", new List <string>() { "C1", "C2", "C3" }, "token"); var actual = enricher.EnrichError(worksheet, e); Assert.Equal("No match found for token [" + e.Token + "] related to formula '" + worksheet.GetFormulaName() + "'.", actual.Message); }