コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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());
        }
コード例 #12
0
 public IDatasetValidateProcessor Create(Dataset dataset, DatasetArchive archive)
 {
     return(new DatasetValidateProcessor(_validators, dataset, archive));
 }
コード例 #13
0
 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;
 }