public void TestEnumTranslationsInEnglish() { Language lang = _translations.FirstOrDefault(l => l.CommonName.Equals("English")); Assert.IsNotNull(lang, "Could not load english translation"); Translator trans = new BasicTranslator(Path.Combine(_languagePath, lang.FileName)); var enumsWithoutTranslation = new List <Type>(); enumsWithoutTranslation.Add(typeof(ApiProvider)); enumsWithoutTranslation.Add(typeof(EncryptionLevel)); ////Associated radio buttons get translated manually enumsWithoutTranslation.Add(typeof(LoggingLevel)); EnsureApplicationResources(); //Get assembly which defines the settings var assembly = Assembly.GetAssembly(typeof(PdfCreatorSettings)); //Get all enumTypes in "pdfforge.PDFCreator.Core.Settings.Enums" var enumTypes = assembly.GetTypes().Where(t => String.Equals(t.Namespace, "pdfforge.PDFCreator.Core.Settings.Enums", StringComparison.Ordinal)); //Remove all enumtypes without translation enumTypes = enumTypes.Where(e => !enumsWithoutTranslation.Contains(e)); foreach (var e in enumTypes) { var values = Enum.GetValues(e); foreach (var v in values) { string enumValue = e.Name + "." + v; Assert.IsNotNullOrEmpty(trans.GetTranslation("Enums", enumValue), enumValue + " has no translation in " + lang.CommonName); } } }
private void TestTokensInTranslation(Data englishTranslationData, Language language) { Data translationData = Data.CreateDataStorage(); IniStorage iniStorage = new IniStorage(); iniStorage.SetData(translationData); iniStorage.ReadData(Path.Combine(_languagePath, language.FileName), true); Translator trans = new BasicTranslator(language.CommonName, translationData); foreach (var section in englishTranslationData.GetSubSections("")) { if (section.StartsWith("General")) { continue; } var values = englishTranslationData.GetValues(section); foreach (var keyValuePair in values) { string translation = trans.GetRawTranslation(section.TrimEnd('\\'), keyValuePair.Key); if (translation != "") { ValidateSingleTranslation(keyValuePair.Value, translation, language, section + keyValuePair.Key); } } } }
private void TestLanguage(Language lang) { Data translationData = Data.CreateDataStorage(); IniStorage iniStorage = new IniStorage(); iniStorage.SetData(translationData); iniStorage.ReadData(Path.Combine(_languagePath, lang.FileName), true); Translator trans = new BasicTranslator(lang.CommonName, translationData); trans.TranslationError += trans_TranslationError; // Do some work to include all resources as we do not have our WPF app context here EnsureApplicationResources(); var args = new Dictionary <Type, object[]>(); // Everything with the type "Window" is tested automatically. If special parameters are needed for a type, they can be declared here args.Add(typeof(EditEmailTextWindow), new object[] { false }); args.Add(typeof(EncryptionPasswordsWindow), new object[] { EncryptionPasswordMiddleButton.Remove, true, true }); args.Add(typeof(FtpPasswordWindow), new object[] { FtpPasswordMiddleButton.Remove }); args.Add(typeof(MessageWindow), new object[] { "", "", MessageWindowButtons.YesLaterNo, MessageWindowIcon.PDFCreator }); args.Add(typeof(ProfileSettingsWindow), new object[] { new PdfCreatorSettings(new IniStorage()), new GpoSettings() }); args.Add(typeof(RecommendPdfArchitectWindow), new object[] { false }); args.Add(typeof(SignaturePasswordWindow), new object[] { PasswordMiddleButton.Skip, null }); args.Add(typeof(SmtpPasswordWindow), new object[] { SmtpPasswordMiddleButton.Remove }); args.Add(typeof(UpdateDownloadWindow), new object[] { null }); TestWindows(trans, lang, args); TestActionControls(trans, lang); Assert.IsEmpty(trans.TranslationErrors, "There were errors while translating the forms"); }
private PrintJobViewModel BuildViewModel(ApplicationSettings appSettings, IList <ConversionProfile> profiles, IJobInfoQueue queue, ConversionProfile preselectedProfile = null) { var settings = new PdfCreatorSettings(MockRepository.GenerateStub <IStorage>()); settings.ApplicationSettings = appSettings; settings.ConversionProfiles = profiles; var settingsHelper = Substitute.For <ISettingsProvider>(); settingsHelper.Settings.Returns(settings); var settingsManager = Substitute.For <ISettingsManager>(); settingsManager.GetSettingsProvider().Returns(settingsHelper); var translator = new BasicTranslator("default", _translationData); var userGuideHelper = Substitute.For <IUserGuideHelper>(); var printJobViewModel = new PrintJobViewModel(settingsManager, queue, translator, new DragAndDropEventHandler(Substitute.For <IFileConversionHandler>()), MockRepository.GenerateStub <IInteractionInvoker>(), userGuideHelper, new ApplicationNameProvider("PDFCreator")); var interaction = new PrintJobInteraction(null, preselectedProfile); var interactionHelper = new InteractionHelper <PrintJobInteraction>(printJobViewModel, interaction); return(printJobViewModel); }
private PrintJobViewModel CreateMockedPrintJobViewModel(IJobInfoQueue jobInfoQueue, JobInfo jobInfo, string applicationName = "PDFCreator") { var appSettings = new ApplicationSettings(); var profiles = new List <ConversionProfile>(); var selectedProfile = new ConversionProfile(); profiles.Add(selectedProfile); var interaction = new PrintJobInteraction(jobInfo, selectedProfile); var settings = new PdfCreatorSettings(MockRepository.GenerateStub <IStorage>()); settings.ApplicationSettings = appSettings; settings.ConversionProfiles = profiles; var settingsHelper = Substitute.For <ISettingsProvider>(); settingsHelper.Settings.Returns(settings); var settingsManager = Substitute.For <ISettingsManager>(); settingsManager.GetSettingsProvider().Returns(settingsHelper); var translator = new BasicTranslator("default", _translationData); var userGuideHelper = Substitute.For <IUserGuideHelper>(); var printJobViewModel = new PrintJobViewModel(settingsManager, jobInfoQueue, translator, new DragAndDropEventHandler(MockRepository.GenerateStub <IFileConversionHandler>()), MockRepository.GenerateStub <IInteractionInvoker>(), userGuideHelper, new ApplicationNameProvider(applicationName)); printJobViewModel.SetInteraction(interaction); printJobViewModel.FinishInteraction = () => { }; return(printJobViewModel); }
public void AllLanguages_ContainSameTokensAsEnglish(string translation) { // These translations contain something that looks like a token, but it is okay if they do not match var exceptions = new[] { "pdfforge.PDFCreator.UI.Views.ActionControls.UserTokenActionControl\\DescriptionText.Text" }; var englishLanguage = _translations.First(x => x.CommonName.Equals("English", StringComparison.InvariantCultureIgnoreCase)); var englishTranslationData = Data.CreateDataStorage(); var iniStorage = new IniStorage(); iniStorage.SetData(englishTranslationData); iniStorage.ReadData(Path.Combine(_languagePath, englishLanguage.FileName), true); var lang = GetLanguage(translation); var translationData = Data.CreateDataStorage(); var translatedIni = new IniStorage(); translatedIni.SetData(translationData); translatedIni.ReadData(Path.Combine(_languagePath, lang.FileName), true); ITranslator trans = new BasicTranslator(lang.CommonName, translationData); foreach (var section in englishTranslationData.GetSubSections("")) { if (section.StartsWith("General")) { continue; } var values = englishTranslationData.GetValues(section); foreach (var keyValuePair in values) { if (exceptions.Contains(section + keyValuePair.Key)) { continue; } var translatedString = trans.GetTranslation(section.TrimEnd('\\'), keyValuePair.Key); if (translatedString != "") { ValidateSingleTranslation(keyValuePair.Value, translatedString, lang, section + keyValuePair.Key); } } } }
public void AllErrorCodes_ArePresentInTranslation(ErrorCode errorCode) { // Store the english translator for other tests... if (_englishTranslator == null) { _englishTranslator = new BasicTranslator(Path.Combine(_translationTestHelper.FindTranslationFolder(), "english.ini")); } var section = "ErrorCodes"; int exitCode = (int)errorCode; var defaultValue = StringValueAttribute.GetValue(errorCode); Assert.AreEqual(defaultValue, _englishTranslator.GetTranslation(section, exitCode.ToString()), $"The value for {errorCode} ({exitCode}) is not set!\r\nAdd:\r\n{exitCode}={defaultValue}"); }
public void AllErrorCodes_AreMappedByErrorCodeInterpreter() { var section = "ErrorCodes"; var translator = new BasicTranslator(Path.Combine(_translationTestHelper.FindTranslationFolder(), "english.ini")); var errorCodes = translator.GetKeysForSection(section) .Where(IsInt) .Select(int.Parse) .Select(x => (ErrorCode)x) .ToList(); Assert.IsTrue(errorCodes.Any(), $"There are no entries in the section [{section}]"); var errorCodeInterpreter = new ErrorCodeInterpreter(translator); foreach (var errorCode in errorCodes) { Assert.IsTrue(Enum.IsDefined(typeof(ErrorCode), errorCode), $"The error code {(int)errorCode} is not defined"); var message = errorCodeInterpreter.GetErrorText(errorCode, true); StringAssert.DoesNotContain("Default", message, $"Error code {errorCode} contains the word 'default', which indicates that it has not been translated."); StringAssert.DoesNotContain(translator.GetTranslation(section, "Default"), message, $"Error code {errorCode} has the default translation!"); } }