public DatasetValidateResult Validate(Dataset dataset, DatasetArchive archive) { if (archive == null || archive.WrongArchive) { // Возвращаем успешный ответ, так как есть правило на данную проверку // чтобы не дублировать ошибки пользователю return(DatasetValidateResult.Success); } foreach (var file in archive.Files) { if (file.Equals("answers.txt", StringComparison.OrdinalIgnoreCase)) { continue; } var extension = Path.GetExtension(file); if (!IsSupportedExtension(extension)) { return(DatasetValidateResult.Invalid("Архив должен содержать только картинки и/или файл с ответами")); } } return(DatasetValidateResult.Success); }
public DatasetValidateResult Validate(Dataset dataset, DatasetArchive archive) { if (archive == null || archive.WrongArchive) { return(DatasetValidateResult.Invalid("Не задан архив картинок или не удалось его прочитать")); } return(DatasetValidateResult.Success); }
public DatasetValidateResult Validate(Dataset dataset, DatasetArchive archive) { if (!dataset.ContainsCyrillic && !dataset.ContainsLatin && !dataset.ContainsNumbers) { return(DatasetValidateResult.Invalid("Не выбрано ни одного обязательного параметра")); } return(DatasetValidateResult.Success); }
public DatasetValidateResult Validate(Dataset dataset, DatasetArchive archive) { if (String.IsNullOrEmpty(dataset.Name) || dataset.Name.Length < 4 || dataset.Name.Length > 8) { return(DatasetValidateResult.Invalid("Максимальная длина имени - от 4 до 8 символов")); } return(DatasetValidateResult.Success); }
public void WrongValidationDataset() { var datasetValidateProcessorFactory = _serviceProvider.GetService <IDatasetValidateProcessorFactory>(); var dataset = new Dataset(); var datasetArchive = new DatasetArchive(); var datasetValidateProcessor = datasetValidateProcessorFactory.Create(dataset, datasetArchive); Assert.False(datasetValidateProcessor.IsValid); Assert.NotEmpty(datasetValidateProcessor.GetErrors()); }
public DatasetValidateResult Validate(Dataset dataset, DatasetArchive archive) { if (String.IsNullOrEmpty(dataset.Name)) { return(DatasetValidateResult.Success); } if (Regex.IsMatch(dataset.Name, pattern, RegexOptions.IgnoreCase)) { return(DatasetValidateResult.Invalid("Имя не может содержать слово \"captcha\"")); } return(DatasetValidateResult.Success); }
public DatasetValidateResult Validate(Dataset dataset, DatasetArchive archive) { if (archive == null || archive.WrongArchive) { // Возвращаем успешный ответ, так как есть правило на данную проверку // чтобы не дублировать ошибки пользователю return(DatasetValidateResult.Success); } var delta = 0; if (dataset.ContainsCyrillic) { delta += 3000; } if (dataset.ContainsLatin) { delta += 3000; } if (dataset.ContainsNumbers) { delta += 3000; } if (dataset.ContainsSpecialCharacters) { delta += 3000; } if (dataset.CaseSensitivity) { delta += 3000; } var minLimit = 2000 + delta; var maxLimit = 3000 + delta; if (archive.Files.Count < minLimit || archive.Files.Count > maxLimit) { return(DatasetValidateResult.Invalid("Кол-во картинок в архиве не соответствует указанным параметрам")); } return(DatasetValidateResult.Success); }
public DatasetValidateResult Validate(Dataset dataset, DatasetArchive archive) { if (String.IsNullOrEmpty(dataset.Name)) { return(DatasetValidateResult.Success); } char[] textArray = dataset.Name.ToCharArray(); for (int i = 0; i < textArray.Length; i++) { if (!Regex.IsMatch(textArray[i].ToString(), _pattern, RegexOptions.IgnoreCase)) { return(DatasetValidateResult.Invalid("Имя должно содержать только латинские буквы")); } } return(DatasetValidateResult.Success); }
public DatasetValidateResult Validate(Dataset dataset, DatasetArchive archive) { if (archive == null || archive.WrongArchive) { // Возвращаем успешный ответ, так как есть правило на данную проверку // чтобы не дублировать ошибки пользователю return(DatasetValidateResult.Success); } if (!String.IsNullOrEmpty(dataset.LocationOfResponsesToPictures) && dataset.LocationOfResponsesToPictures.Equals("в отдельном файле", StringComparison.OrdinalIgnoreCase) && !archive.ExistAnswers) { return(DatasetValidateResult.Invalid("Файл ответов требуется, но отсутствует")); } return(DatasetValidateResult.Success); }
public DatasetValidateResult Validate(Dataset dataset, DatasetArchive archive) { if (archive == null || archive.WrongArchive) { // Возвращаем успешный ответ, так как есть правило на данную проверку // чтобы не дублировать ошибки пользователю return(DatasetValidateResult.Success); } if (!String.IsNullOrEmpty(dataset.LocationOfResponsesToPictures) && dataset.LocationOfResponsesToPictures.Equals("в отдельном файле", StringComparison.OrdinalIgnoreCase) && archive.ExistAnswers && archive.Files.Count - 1 != archive.AnswerEntryList.Count) { return(DatasetValidateResult.Invalid("Количество ответов не совпадает с количеством картинок")); } return(DatasetValidateResult.Success); }
public void SuccessValidationDataset() { var datasetValidateProcessorFactory = _serviceProvider.GetService <IDatasetValidateProcessorFactory>(); var dataset = new Dataset(); dataset.Name = "testing"; dataset.ContainsLatin = true; var datasetArchive = new DatasetArchive(); for (int i = 0; i < 5500; i++) { datasetArchive.Files.Add($"image{i}.jpg"); } var datasetValidateProcessor = datasetValidateProcessorFactory.Create(dataset, datasetArchive); Assert.True(datasetValidateProcessor.IsValid); Assert.Empty(datasetValidateProcessor.GetErrors()); }
public IDatasetValidateProcessor Create(Dataset dataset, DatasetArchive archive) { return(new DatasetValidateProcessor(_validators, dataset, archive)); }
public DatasetValidateProcessor(IEnumerable <IDatasetValidator> validators, Dataset dataset, DatasetArchive archive) { _validators = validators ?? throw new System.ArgumentNullException(nameof(validators)); _dataset = dataset ?? throw new System.ArgumentNullException(nameof(dataset)); _archive = archive; }