public void Sanitizer_StripsWhitespace()
        {
            var sanitizer = new TextSanitizer();

            var output = sanitizer.Process(" \n \tA\n\t ");

            Assert.Equal("A", output);
        }
        public void Sanitizer_ReplacesInvalidCharacters(string input, string expected)
        {
            var sanitizer = new TextSanitizer();

            var output = sanitizer.Process(input);

            Assert.Equal(expected, output);
        }
        public void On_NullInput_ThrowsArgumentException()
        {
            var sanitizer = new TextSanitizer();

            void Act()
            {
                sanitizer.Process(null);
            }

            Assert.Throws <ArgumentException>((Action)Act);
        }
Example #4
0
        private async Task <ResponseImageViewModel> ProcessImage(UploadImageViewModel model, DigitDetectionOptions options, ModelStateDictionary modelState)
        {
            int expectedNumber = continuityManager.GetCurrentNumber();

            if (!modelState.IsValid)
            {
                var errors = modelState.SelectMany(pair => pair.Value.Errors.Select(error => error.ErrorMessage))
                             .ToList();
                return(ResponseImageViewModelSimpleFactory.GenerateFailureResponse(null, expectedNumber, errors));
            }

            //preprocess image
            var bitmap = bitmapUtility.FromFormFile(model.File);

            if (!imageRatioValidator.Validate(bitmap))
            {
                return(ResponseImageViewModelSimpleFactory.GenerateFailureResponse(null, expectedNumber,
                                                                                   imageRatioValidator.ErrorMessage));
            }

            //extract text
            string recognizedText = await TryRecognizeText(options, bitmap);

            if (recognizedText == null)
            {
                return(ResponseImageViewModelSimpleFactory.GenerateFailureResponse(null, expectedNumber,
                                                                                   ErrorMessages.SERVER_OVERLOADED));
            }

            //preprocess text
            var sanitizer = new TextSanitizer();

            recognizedText = sanitizer.Process(recognizedText);

            var expectedText = continuityManager.GetCurrentNumber().ToString();

            if (expectedText == recognizedText)
            {
                int recognizedAsNumber = int.Parse(recognizedText);

                var bytes = bitmapUtility.ToByteArray(bitmapUtility.Resize(bitmap));

                var entry = new ImageEntry(bytes, recognizedAsNumber);

                if (await continuityManager.TryIncrementCurrentNumber(entry))
                {
                    return(ResponseImageViewModelSimpleFactory.GenerateSuccessResponse(recognizedText,
                                                                                       expectedNumber));
                }
                else
                {
                    //correct the expected number, as it must've changed
                    expectedNumber = continuityManager.GetCurrentNumber();
                    return(ResponseImageViewModelSimpleFactory.GenerateFailureResponse(null, expectedNumber,
                                                                                       ErrorMessages.CONCURRENCY));
                }
            }
            else
            {
                string error = string.Format(ErrorMessages.INVALID_NUMBER, expectedText);
                return(ResponseImageViewModelSimpleFactory.GenerateFailureResponse(recognizedText, expectedNumber,
                                                                                   error));
            }
        }