public void TestGetLanguages()
        {
            var home   = new TranslatorController(_db);
            var result = home.GetLanguages();

            Assert.NotNull(result);
        }
Ejemplo n.º 2
0
        public async Task Translator_Index_ReturnsAViewResult_WithListOfQUeries()
        {
            //Arrange
            var mockRepo = new Mock <ITranslatorRepository>();

            mockRepo.Setup(repo => repo.GetQueriesAsync())
            .ReturnsAsync(GetTestQueries());
            var mockRepo2 = new Mock <ITranslationRepository>();

            mockRepo2.Setup(repo => repo.GetTranslationsAsync())
            .ReturnsAsync(GetTestTranslations());
            var mockService = new Mock <IApiHttpClientService>();

            mockService.Setup(service => service.GetResponseAsync("", ""))
            .ReturnsAsync(GetTestResponse());
            var controller = new TranslatorController(mockService.Object, mockRepo.Object, mockRepo2.Object);

            //Act
            var result = await controller.Index();

            //Assert
            var viewResult = Assert.IsType <ViewResult>(result);
            var model      = Assert.IsAssignableFrom <IEnumerable <Query> >(
                viewResult.ViewData.Model);

            Assert.Equal(2, model.Count());
        }
        public void TestGetMessagesTranslated(string language)
        {
            var home     = new TranslatorController(_db);
            var messages = home.GetMessages(language);

            Assert.NotNull(messages);
        }
        public void TestGetMessage(int id)
        {
            var home    = new TranslatorController(_db);
            var message = home.GetMessage(id);

            Assert.NotNull(message);
        }
Ejemplo n.º 5
0
        public async Task Translator_Translate_Post_ReturnsView_WhenModelStateIsInvalid()
        {
            //Arrange
            var mockRepo = new Mock <ITranslatorRepository>();

            mockRepo.Setup(repo => repo.GetQueriesAsync())
            .ReturnsAsync(GetTestQueries());
            var mockRepo2 = new Mock <ITranslationRepository>();

            mockRepo2.Setup(repo => repo.GetTranslationsAsync())
            .ReturnsAsync(GetTestTranslations());
            var mockService = new Mock <IApiHttpClientService>();

            mockService.Setup(service => service.GetResponseAsync("", ""))
            .ReturnsAsync(GetTestResponse());
            var controller = new TranslatorController(mockService.Object, mockRepo.Object, mockRepo2.Object);

            controller.ModelState.AddModelError("Text", "Required");
            controller.ModelState.AddModelError("Id", "Required");
            var viewModel = new TranslatorViewModel();

            //Act
            var result = await controller.Translate(viewModel);

            //Assert
            var viewResult = Assert.IsType <ViewResult>(result);
            var model      = Assert.IsAssignableFrom <TranslatorViewModel>(
                viewResult.ViewData.Model);
        }
Ejemplo n.º 6
0
        public async Task Translator_Translate_Post_ReturnsRedirectToAction_WhereModelStateIsValid()
        {
            //Arrange
            var mockRepo = new Mock <ITranslatorRepository>();

            mockRepo.Setup(repo => repo.AddResponseAsync(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <SuccessResponse>(), It.IsAny <ErrorResponse>()))
            .Returns(Task.CompletedTask)
            .Verifiable();
            var mockRepo2 = new Mock <ITranslationRepository>();

            mockRepo2.Setup(repo => repo.GetTranslationsAsync())
            .ReturnsAsync(GetTestTranslations());
            var mockService = new Mock <IApiHttpClientService>();

            mockService.Setup(service => service.GetResponseAsync(It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync(It.IsAny <HttpResponseMessage>());
            var controller = new TranslatorController(mockService.Object, mockRepo.Object, mockRepo2.Object);

            var viewModel = new TranslatorViewModel
            {
                Id   = 1,
                Text = "test"
            };

            //Act
            var result = await controller.Translate(viewModel);

            //Assert
            var redirectToActionResult = Assert.IsType <RedirectToActionResult>(result);

            Assert.Null(redirectToActionResult.ControllerName);
            Assert.Equal("Details", redirectToActionResult.ActionName);
            mockRepo.Verify();
        }
Ejemplo n.º 7
0
        public TranslatorControllerTests()
        {
            var loggerMock = new Mock <ILogger <TranslatorController> >();

            _translationServiceMock = new Mock <ITranslationService>();
            _translatorController   = new TranslatorController(loggerMock.Object, _translationServiceMock.Object);
        }
        public void TestPost()
        {
            Message messageToTest = new Message();
            var     home          = new TranslatorController(_db);
            var     result        = home.Post(messageToTest);

            Assert.NotNull(result);
        }
        public void TestEmptyModel()
        {
            var controller = new TranslatorController(_mapper);
            var request    = new TranslationRequest();
            var response   = controller.Get(request);

            Assert.AreEqual(System.Net.HttpStatusCode.NotFound, response.Code);
        }
        public async Task TranslateText()
        {
            var textToTranslate = @"ἁμαρτία, (ας, ἡ (from 2 aorist ἁμαρτεῖν, as ἀποτυχία from ἀποτύχειν), a failing to hit the mark (see ἁμαρτάνω. In Greek writings (from Aeschylus and Thucydides down). 1st, an error of the understanding (cf. Ackermann, Das Christl. im Plato, p. 59 Anm. 3 (English translation (S. R. Asbury, 1861), p. 57 n. 99)). 2nd, a bad action, evil deed. In the N. T. always in an ethical sense, and";

            var controller = new TranslatorController();
            var result     = await controller.Translate(textToTranslate);

            if (result != null)
            {
            }
        }
        public void TestCaseInsensitive()
        {
            var controller = new TranslatorController(_mapper);
            var request    = new TranslationRequest
            {
                Language = "eN",
                Text     = "HeLlO, WoRlD!"
            };
            var response = controller.Get(request);

            Assert.AreEqual(System.Net.HttpStatusCode.OK, response.Code);
            Assert.AreEqual("привет мир", response.Translation);
        }
        public void TestCorrectTranslation()
        {
            var controller = new TranslatorController(_mapper);
            var request    = new TranslationRequest
            {
                Language = "En",
                Text     = "Hello, world!"
            };
            var response = controller.Get(request);

            Assert.AreEqual(System.Net.HttpStatusCode.OK, response.Code);
            Assert.AreEqual("привет мир", response.Translation);
        }
Ejemplo n.º 13
0
        private async Task <string> GetTranslation(TranslatorController controller, string text)
        {
            var _translation = await controller.Translate(text);

            if (_translation.IsNotNull())
            {
                if (_translation.Length > 0)
                {
                    if (_translation.First().Translations.Length > 0)
                    {
                        return(_translation.First().Translations.First().Text);
                    }
                }
            }
            return(String.Empty);
        }
Ejemplo n.º 14
0
        public async Task Translator_Translate_Get_ReturnsAView()
        {
            //Arrange
            var mockRepo = new Mock <ITranslatorRepository>();

            mockRepo.Setup(repo => repo.GetQueriesAsync())
            .ReturnsAsync(GetTestQueries());
            var mockRepo2 = new Mock <ITranslationRepository>();

            mockRepo2.Setup(repo => repo.GetTranslationsAsync())
            .ReturnsAsync(GetTestTranslations());
            var mockService = new Mock <IApiHttpClientService>();

            mockService.Setup(service => service.GetResponseAsync("", ""))
            .ReturnsAsync(GetTestResponse());
            var controller = new TranslatorController(mockService.Object, mockRepo.Object, mockRepo2.Object);

            //Act
            var result = await controller.Translate();

            //Assert
            var viewResult = Assert.IsType <ViewResult>(result);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Initializes this instance.
        /// </summary>
        private void Init()
        {
            _controller       = new TranslatorController();
            _backgroundWorker = new BackgroundWorker();
            _bindingSource    = new BindingSource();

            stopButton.Enabled  = false;
            startButton.Enabled = false;
            Controls.Add(resxGridView);

            loadSourceResxToolStripMenuItem.Enabled        = true;
            loadTmxToolStripMenuItem.Enabled               = true;
            exportDestinationResxToolStripMenuItem.Enabled = false;
            saveProjectTMXToolStripMenuItem.Enabled        = false;

            ((CheckBox)googleCheckBox.Control).Checked    = true;
            ((CheckBox)tmxUpdateCheckbox.Control).Checked = true;

            _controller.SessionModel.UseExternalTranslator = ((CheckBox)googleCheckBox.Control).Checked;
            _controller.SessionModel.UpdateTmxFile         = ((CheckBox)tmxUpdateCheckbox.Control).Checked;

            var tb = fuzzinessTrackbar.Control as TrackBar;

            Debug.Assert(tb != null, "tb != null");
            tb.Maximum       = 100;
            tb.Minimum       = 0;
            tb.Value         = 0;
            tb.ValueChanged += TbOnValueChanged;

            Debug.Assert(fuzzinessComboBox.ComboBox != null, "fuzzinessComboBox.ComboBox != null");
            fuzzinessComboBox.ComboBox.SelectedIndex = 0;
            fuzzinessComboBox.ComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
            fuzzinessComboBox.SelectedIndexChanged  += FuzzinessComboBoxOnSelectedIndexChanged;

            if (fuzzinessComboBox.SelectedItem.ToString() == "None")
            {
                fuzzinessTrackbar.Enabled          = false;
                _controller.SessionModel.Fuzziness = 0;
            }

            if (fuzzinessComboBox.SelectedItem.ToString() == "Auto")
            {
                fuzzinessTrackbar.Enabled          = false;
                _controller.SessionModel.Fuzziness = -1;
            }

            if (fuzzinessComboBox.SelectedItem.ToString() == "Manual")
            {
                fuzzinessTrackbar.Enabled          = true;
                _controller.SessionModel.Fuzziness = 1.0 - tb.Value / 100.0;
            }

            statusTextLabel.Text = Resources.ResourceTranslatorForm_Init_Idle;
            resxStatusLabel.Text = Resources.ResourceTranslatorForm_Init_No_RESX_loaded;
            tmxStatusLabel.Text  = Resources.ResourceTranslatorForm_Init_No_TMX_loaded;
            srcLocaleLabel.Text  = Resources.ResourceTranslatorForm_Init______;
            destLocaleBtn.Text   = Resources.ResourceTranslatorForm_Init______;
            destLocaleBtn.DropDownItems.Clear();

            // Initialize the DataGridView.
            resxGridView.AutoGenerateColumns = false;
            resxGridView.AutoSize            = true;
            resxGridView.DataSource          = _bindingSource;
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Defines the entry point of the application.
        /// </summary>
        /// <param name="args">The arguments.</param>
        private static void Main(string[] args)
        {
            String      exportFilename        = null;
            Boolean     updateTmxFile         = false;
            Boolean     useExternalTranslator = false;
            CultureInfo destinationLocale     = null;

            /* initialize options */
            for (int i = 0; i < args.Length; ++i)
            {
                string s = args[i];
                if (s.StartsWith("-r"))
                {
                    _resxFileName = args[i + 1];
                }
                if (s.StartsWith("-l"))
                {
                    destinationLocale = new CultureInfo(args[i + 1]);
                }
                if (s.StartsWith("-t"))
                {
                    _tmxFilename = args[i + 1];
                }
                if (s.StartsWith("-e"))
                {
                    exportFilename = args[i + 1];
                }
                if (s.StartsWith("-p"))
                {
                    _projectExportFilename = args[i + 1];
                }
                if (s.StartsWith("-f"))
                {
                    _fuzziness = Double.Parse(args[i + 1]);
                }
                if (s.StartsWith("-g"))
                {
                    useExternalTranslator = true;
                }
                if (s.StartsWith("-u"))
                {
                    updateTmxFile = true;
                }
                if (s.StartsWith("-h"))
                {
                    Usage();
                    return;
                }
                Console.WriteLine(s);
            }

            if (String.IsNullOrEmpty(exportFilename))
            {
                Match  match     = Regex.Match(_resxFileName, @"\.[a-z]{2}(-[A-Z]{2})?\.", RegexOptions.None);
                String srcLocale = match.ToString().Replace(".", "");
                if (!String.IsNullOrEmpty(srcLocale) && null != destinationLocale)
                {
                    exportFilename = _resxFileName.Replace(srcLocale, destinationLocale.ToString());
                }
            }

            /* check if all needed parameters are set */
            if (String.IsNullOrEmpty(exportFilename) || String.IsNullOrEmpty(_resxFileName) ||
                String.IsNullOrEmpty(_tmxFilename))
            {
                Usage();
                return;
            }

            /* init controller */
            _controller = new TranslatorController {
                ExportFileName = exportFilename
            };
            _controller.SessionModel.Fuzziness             = _fuzziness;
            _controller.SessionModel.UpdateTmxFile         = updateTmxFile;
            _controller.SessionModel.UseExternalTranslator = useExternalTranslator;


            try
            {
                Console.WriteLine(_controller.InitResx(_resxFileName));
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return;
            }

            try
            {
                Console.WriteLine(_controller.InitTmx(_tmxFilename));
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return;
            }
            if (destinationLocale != null)
            {
                _controller.SessionModel.DestinationLanguage = destinationLocale;
            }
            if (_controller.IsReadyToTranslate())
            {
                /* we need to spawn a background worker here.
                 * This is done, because the GUI has to do the
                 * stuff in background to stay responsive and
                 * both GUI and CLI sharing the same controller methods.
                 */
                Console.WriteLine("Translating...");
                var backgroundWorker = new BackgroundWorker
                {
                    WorkerSupportsCancellation = true,
                    WorkerReportsProgress      = true
                };
                backgroundWorker.ProgressChanged    += bw_ProgressChanged;
                backgroundWorker.RunWorkerCompleted += bw_RunWorkerCompleted;
                backgroundWorker.DoWork             += _controller.PerformTranslations;
                backgroundWorker.RunWorkerAsync();
                /* wait until all other tasks are finished */
                while (!_isFinished)
                {
                    Thread.Sleep(1000);
                }
            }
            else
            {
                Console.WriteLine("Not ready to translate");
            }
            Console.WriteLine("Application will exit now!");
        }
Ejemplo n.º 17
0
        private async Task _Import(string zipFilePath, UnitOfWork uow)
        {
            if (File.Exists(zipFilePath))
            {
                var controller = new TranslatorController();
                var fileName   = ExtractAndGetFirstArchiveItemFilePath(zipFilePath);
                try {
                    using (var conn = new SqliteConnection($"DataSource=\"{fileName}\"")) {
                        SQLitePCL.Batteries.Init();
                        conn.Open();

                        var command = conn.CreateCommand();
                        var sql     = @"SELECT topic, lexeme, transliteration, pronunciation, short_definition, definition FROM dictionary WHERE CAST(substr(topic,2) as INTEGER) > 4031 AND topic like ""G%""";
                        command.CommandText = sql; //@"SELECT topic, lexeme, transliteration, pronunciation, short_definition, definition FROM dictionary";

                        using (var reader = command.ExecuteReader()) {
                            while (reader.Read())
                            {
                                var topic           = reader.GetString(0);
                                var lexeme          = reader.GetString(1);
                                var transliteration = reader.GetString(2);
                                var pronunciacion   = reader.GetString(3);
                                var shortDefinition = reader.GetString(4);
                                var definition      = reader.GetString(5);

                                var lang  = topic.StartsWith("H") ? Language.Hebrew : Language.Greek;
                                var _code = topic.Substring(1);
                                var code  = Convert.ToInt32(_code);

                                var short_definition_translation = await GetTranslation(controller, shortDefinition);

                                var definition_translation = await GetTranslation(controller, definition);

                                var item = new XPQuery <StrongCode>(uow).Where(x => x.Lang == lang && x.Code == code).FirstOrDefault();
                                if (item.IsNull())
                                {
                                    item = new StrongCode(uow)
                                    {
                                        Code            = code,
                                        Definition      = definition_translation,
                                        Lang            = lang,
                                        Pronunciation   = pronunciacion,
                                        ShortDefinition = short_definition_translation,
                                        SourceWord      = lexeme,
                                        Transliteration = transliteration
                                    };
                                }
                                else
                                {
                                    item.Definition      = definition_translation;
                                    item.Pronunciation   = pronunciacion;
                                    item.ShortDefinition = short_definition_translation;
                                    item.SourceWord      = lexeme;
                                    item.Transliteration = transliteration;
                                }

                                item.Save();
                            }
                        }

                        conn.Close();
                    }
                }
                finally {
                    try { File.Delete(fileName); } catch { }
                }
            }
        }