Exemplo n.º 1
0
        public void CompareDateTimeValidationAndConvertion()
        {
            IOUtility iOUtility = new IOUtility();

            foreach (var dt in DateTimeCases)
            {
                DateTime result;
                iOUtility.ConvertToDate(dt.InputDateTimeString, dt.Pattern, out result, dt.CultureInfo);
                DataTypeCheck check       = new DataTypeCheck("dtCheck", "DateTime", DecimalCharacter.point, dt.Pattern, dt.CultureInfo);
                var           checkresult = check.Execute(dt.InputDateTimeString, 1);

                if (dt.ItMatch)
                {
                    result.ToString(new CultureInfo("en-US", false)).Should().NotBeNull("can´t convert : " + dt.InputDateTimeString + " with pattern:" + dt.Pattern);
                    result.ToString(new CultureInfo("en-US", false)).Should().Match(dt.OutputDateTimeString, "not match :" + result + " - " + dt.OutputDateTimeString);
                    //checkresult.Should(typeof(DateTime))
                    //Assert.IsInstanceOf<DateTime>(checkresult, "xyz");
                    checkresult.Should().BeOfType <DateTime>();
                }
                else
                {
                    if (result != null)
                    {
                        result.ToString(new CultureInfo("en-US", false)).Should().NotMatch(dt.OutputDateTimeString, "should not match :" + result + " - " + dt.OutputDateTimeString);
                    }
                    else
                    {
                        result.ToString(new CultureInfo("en-US", false)).Should().BeNullOrEmpty();
                        checkresult.Should().BeOfType <Error>();
                    }
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="name"></param>
 /// <param name="dataType"></param>
 /// <param name="optional"></param>
 /// <param name="decimalCharacter"></param>
 /// <param name="pattern"></param>
 public ValueValidationManager(string name, string dataType, bool optional, DecimalCharacter decimalCharacter, string pattern = "")
 {
     _name                    = name;
     _dataType                = dataType;
     _optional                = optional;
     ValidationList           = new List <IValueValidation>();
     this.NullOrOptionalCheck = new OptionalCheck(name, dataType, optional);
     this.DataTypeCheck       = new DataTypeCheck(name, dataType, decimalCharacter, pattern);
 }
Exemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="name"></param>
        /// <param name="dataType"></param>
        /// <param name="optional"></param>
        /// <param name="decimalCharacter"></param>
        /// <param name="pattern"></param>
        public ValueValidationManager(string name, string dataType, bool optional, DecimalCharacter decimalCharacter, string pattern = "", IEnumerable <MissingValue> missingValues = null, CultureInfo cultureInfo = null, ICollection <Constraint> constraints = null)
        {
            _name               = name;
            _dataType           = dataType;
            _optional           = optional;
            ValidationList      = new List <IValueValidation>();
            NullOrOptionalCheck = new OptionalCheck(name, dataType, optional);
            DataTypeCheck       = new DataTypeCheck(name, dataType, decimalCharacter, pattern, cultureInfo);
            MissingValueCheck   = new MissingValueCheck(name, dataType, missingValues);
            Constraints         = constraints;

            if (Constraints != null)
            {
                //load contraints
                foreach (var c in Constraints)
                {
                    c.Materialize();
                }
            }
        }
        /// <summary>
        /// Determin whether the selected datatypes are suitable
        /// </summary>
        private List <Error> ValidateRows(string JsonArray)
        {
            DataTypeManager dtm = new DataTypeManager();

            try
            {
                const int maxErrorsPerColumn = 20;

                TaskManager = (EasyUploadTaskManager)Session["TaskManager"];

                string[][] DeserializedJsonArray = JsonConvert.DeserializeObject <string[][]>(JsonArray);

                List <Error>    ErrorList       = new List <Error>();
                List <RowModel> Rows            = (List <RowModel>)TaskManager.Bus[EasyUploadTaskManager.ROWS];
                RowModel[]      MappedRowsArray = Rows.ToArray();

                List <string> DataArea        = (List <string>)TaskManager.Bus[EasyUploadTaskManager.SHEET_DATA_AREA];
                List <int[]>  IntDataAreaList = new List <int[]>();
                foreach (string area in DataArea)
                {
                    IntDataAreaList.Add(JsonConvert.DeserializeObject <int[]>(area));
                }

                foreach (int[] IntDataArea in IntDataAreaList)
                {
                    string[,] SelectedDataArea = new string[(IntDataArea[2] - IntDataArea[0]), (IntDataArea[3] - IntDataArea[1])];

                    for (int x = IntDataArea[1]; x <= IntDataArea[3]; x++)
                    {
                        int errorsInColumn = 0;
                        for (int y = IntDataArea[0]; y <= IntDataArea[2]; y++)
                        {
                            int    SelectedY = y - (IntDataArea[0]);
                            int    SelectedX = x - (IntDataArea[1]);
                            string vv        = DeserializedJsonArray[y][x];

                            RowModel mappedHeader = MappedRowsArray.Where(t => t.Index == SelectedX).FirstOrDefault();

                            DataType datatype = null;

                            datatype = dtm.Repo.Get(mappedHeader.SelectedDataType.DataTypeId);

                            string datatypeName = datatype.SystemType;

                            DataTypeCheck dtc;
                            double        DummyValue = 0;
                            if (Double.TryParse(vv, out DummyValue))
                            {
                                if (vv.Contains("."))
                                {
                                    dtc = new DataTypeCheck(mappedHeader.SelectedDataAttribute.Name, datatypeName, DecimalCharacter.point);
                                }
                                else
                                {
                                    dtc = new DataTypeCheck(mappedHeader.SelectedDataAttribute.Name, datatypeName, DecimalCharacter.comma);
                                }
                            }
                            else
                            {
                                dtc = new DataTypeCheck(mappedHeader.SelectedDataAttribute.Name, datatypeName, DecimalCharacter.point);
                            }

                            var ValidationResult = dtc.Execute(vv, y);
                            if (ValidationResult is Error)
                            {
                                ErrorList.Add((Error)ValidationResult);
                                errorsInColumn++;
                            }

                            if (errorsInColumn >= maxErrorsPerColumn)
                            {
                                //Break inner (row) loop to jump to the next column
                                break;
                            }
                        }
                    }
                }

                return(ErrorList);
            }
            finally
            {
                dtm.Dispose();
            }
        }