예제 #1
0
 public void Concat(CheckResult newResult)
 {
     this._Concat(this.WarningList, newResult.WarningList);
     this._Concat(this.ErrorList, newResult.ErrorList);
 }
예제 #2
0
        // check with pattern that specified in parameter.
        public CheckResult Valid(List <string[]> matrix, Dictionary <int, CellChecker> cellCheckerDictionary, RowChecker rowPrevChecker, RowChecker rowPostChecker, MatrixChecker matrixPrevChecker, MatrixChecker matrixPostChecker)
        {
            CheckResult result = new CheckResult();

            string[] errors;
            string[] warnings;

            result.Content = matrix;

            #region Previous Matrix Check
            if (matrixPrevChecker != null)
            {
                matrixPrevChecker.Valid(matrix, out errors, out warnings);

                if (warnings.Length > 0)
                {
                    result.AppendCsvWarning(warnings);
                }

                if (errors.Length > 0)
                {
                    result.AppendCsvError(errors);
                    if (!this.ContinueOnError)
                    {
                        return(result);
                    }
                }
            }
            #endregion

            for (int row = 0; row < matrix.Count; row++)
            {
                #region Previous Row Check
                if (rowPrevChecker != null)
                {
                    rowPrevChecker.Valid(matrix[row], out errors, out warnings);

                    if (warnings.Length > 0)
                    {
                        result.AppendRowWarning(row, warnings);
                    }

                    if (errors.Length > 0)
                    {
                        result.AppendRowError(row, errors);
                        if (!this.ContinueOnError)
                        {
                            break;
                        }
                    }
                }
                #endregion

                #region Check Cells
                for (int col = 0; col < (cellCheckerDictionary != null ? matrix[row].Length : -1); col++)
                {
                    if (!cellCheckerDictionary.ContainsKey(col))
                    {
                        continue;
                    }

                    cellCheckerDictionary[col].Valid(matrix[row][col], out errors, out warnings);

                    if (warnings.Length > 0)
                    {
                        result.AppendCellWarning(row, col, warnings);
                    }

                    if (errors.Length > 0)
                    {
                        result.AppendCellError(row, col, errors);
                        if (!this.ContinueOnError)
                        {
                            break;
                        }
                    }
                }
                #endregion

                #region Post Row Check
                if (rowPostChecker != null)
                {
                    if (rowPostChecker.Valid(matrix[row], out errors, out warnings))
                    {
                        if (warnings.Length > 0)
                        {
                            result.AppendRowWarning(row, warnings);
                        }
                    }
                    else
                    {
                        Debug.Assert(errors.Length > 0, "No error message returned while check result is false.");
                        result.AppendRowError(row, errors);
                        if (!this.ContinueOnError)
                        {
                            break;
                        }
                    }
                }
                #endregion
            }

            #region Post Matrix Check
            if (matrixPostChecker != null)
            {
                matrixPostChecker.Valid(matrix, out errors, out warnings);

                if (warnings.Length > 0)
                {
                    result.AppendCsvWarning(warnings);
                }

                if (errors.Length > 0)
                {
                    result.AppendCsvError(errors);
                    if (!this.ContinueOnError)
                    {
                        return(result);
                    }
                }
            }
            #endregion

            return(result);
        }
예제 #3
0
 public Viewer(CheckResult result)
 {
     _result = new List <CheckResult>();
     _result.Add(result);
 }