public void TestGetLanguages() { var home = new TranslatorController(_db); var result = home.GetLanguages(); Assert.NotNull(result); }
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); }
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); }
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(); }
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); }
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); }
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); }
/// <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; }
/// <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!"); }
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 { } } } }