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>(); } } } }
/// <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); }
/// <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(); } }