public void MigrateIfNecessary_WsPrefsFileContainsRfcTagThatChangesOnMigration_MigrationDelegateIsCalled() { using (var environment = new TestEnvironment()) { const string language = "en"; const bool isAudio = true; environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem(language, language, "", "", "", 0, false, "", "", true, isAudio) ); bool delegateCalledCorrectly = false; var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, delegate(IEnumerable <LdmlVersion0MigrationStrategy.MigrationInfo> oldToNewRfcTagsMap) { if (oldToNewRfcTagsMap. First(info => info.RfcTagBeforeMigration == "en"). RfcTagAfterMigration == "en-Zxxx-x-audio") { delegateCalledCorrectly = true; } } ); migrator.MigrateIfNecassary(); Assert.IsTrue(delegateCalledCorrectly); } }
public void MigrateIfNecessary_WsPrefsFileContainsMultipleWs_MultipleLdmlFilesAreCreated() { using (var environment = new TestEnvironment()) { environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.TwoWritingSystems("bogus1", "bogus2") ); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); Assert.That(File.Exists(environment.GetFileForOriginalRfcTag("bogus1")), Is.True); Assert.That(File.Exists(environment.GetFileForOriginalRfcTag("bogus2")), Is.True); } }
public void MigrateIfNecessary_SuccessfulMigration_LegacyFileIsDeleted() { using (var environment = new TestEnvironment()) { environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem("en", "", "", "", "", 0, false, "", "", true, false) ); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); Assert.That(File.Exists(environment.WsPrefsFilePath), Is.False); } }
public void MigrateIfNecessary_DateModified_IsSetToRecentTime() { using (var environment = new TestEnvironment()) { environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem("en", "", "", "", "", 0, false, "", "", true, false) ); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); string pathToEnFile = environment.GetFileForOriginalRfcTag("en"); AssertThatXmlIn.File(pathToEnFile).HasNoMatchForXpath("/ldml/identity/generation[@date = '0001-01-01T00:00:00']"); } }
public void MigrateIfNecessary_WsPrefsFileContainsWsWithNoSortInfoSpecified_LdmlContainsNoSortInfo() { using (var environment = new TestEnvironment()) { const string id = "en"; environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem(id, "", "", "", "", 0, false, "", "", true, false) ); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); string pathToEnFile = environment.GetFileForOriginalRfcTag("en"); AssertThatXmlIn.File(pathToEnFile).HasNoMatchForXpath("/ldml/collations/collation"); } }
public void MigrateIfNecessary_WsPrefsFileContainsWsContainingRightToLeftIsFalse_CharacterOrientationIsnotContainedInLdml() { using (var environment = new TestEnvironment()) { const bool rightToleft = false; environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem("en", "", "", "", "", 0, rightToleft, "", "", true, false) ); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); string pathToEnFile = environment.GetFileForOriginalRfcTag("en"); AssertThatXmlIn.File(pathToEnFile). HasNoMatchForXpath("/ldml/layout/orientation/@characters"); } }
public void MigrateIfNecessary_WsPrefsFileContainsWsContainingCustomIcuSortRules_CustomSortRulesAreInLdml() { using (var environment = new TestEnvironment()) { const string sortUsing = "CustomICU"; const string sortRules = "& C < č"; environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem("en", "", sortUsing, sortRules, "", 0, false, "", "", true, false) ); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); string pathToEnFile = environment.GetFileForOriginalRfcTag("en"); AssertThatXmlIn.File(pathToEnFile).HasAtLeastOneMatchForXpath( String.Format("/ldml/collations/collation/special/palaso:sortRulesType[@value='{0}']", sortUsing), environment.NamespaceManager ); AssertThatXmlIn.File(pathToEnFile).HasAtLeastOneMatchForXpath("/ldml/collations/collation/rules/p"); //Only checking one character. Hopefully this means the rest are there too. } }
public void MigrateIfNecessary_WsPrefsFileContainsWsContainingIsAudioIsFalse_AudioIsRemovedFromRfcTag() { using (var environment = new TestEnvironment()) { const string id = "en-Audio"; environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem(id, "", "", "", "", 0, false, "", "", true, false) ); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); string pathToEnFile = environment.GetFileForOriginalRfcTag(id); AssertThatXmlIn.File(pathToEnFile).HasAtLeastOneMatchForXpath("/ldml/identity/language[@type = 'en']"); AssertThatXmlIn.File(pathToEnFile).HasNoMatchForXpath("/ldml/identity/script"); AssertThatXmlIn.File(pathToEnFile).HasNoMatchForXpath("/ldml/identity/region"); AssertThatXmlIn.File(pathToEnFile).HasNoMatchForXpath("/ldml/identity/variant"); } }
public void MigrateIfNecessary_WsPrefsFileContainsWsContainingFontSize_FontSizeIsInLdml() { using (var environment = new TestEnvironment()) { const int fontSize = 12; environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem("en", "", "", "", "", fontSize, false, "", "", true, false) ); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); string pathToEnFile = environment.GetFileForOriginalRfcTag("en"); AssertThatXmlIn.File(pathToEnFile). HasAtLeastOneMatchForXpath(String.Format( "/ldml/special/palaso:defaultFontSize[@value='{0}']", fontSize), environment.NamespaceManager ); } }
public void MigrateIfNecessary_WsPrefsFileContainsWsContainingIsUnicodeEncodedIsTrue_IsLegacyDoesNotAppearInLdml() { using (var environment = new TestEnvironment()) { const bool isUnicodeEncoded = true; environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem("en", "", "", "", "", 0, false, "", "", isUnicodeEncoded, false) ); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); string pathToEnFile = environment.GetFileForOriginalRfcTag("en"); AssertThatXmlIn.File(pathToEnFile). HasNoMatchForXpath( "/ldml/special/palaso:isLegacyEncoded", environment.NamespaceManager ); } }
public void MigrateIfNecessary_WsPrefsFileContainsWsContainingSortRulesFromOtherLanguage_OtherLanguageIsInLdml() { using (var environment = new TestEnvironment()) { const string otherLanguage = "de"; environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem("en", "", otherLanguage, "", "", 0, false, "", "", true, false) ); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); string pathToEnFile = environment.GetFileForOriginalRfcTag("en"); AssertThatXmlIn.File(pathToEnFile). HasAtLeastOneMatchForXpath(String.Format( "/ldml/collations/collation/base/alias[@source='{0}']", otherLanguage), environment.NamespaceManager ); } }
public void MigrateIfNecessary_WsPrefsFileContainsWsContainingKeyboardName_KeyboardNameIsInLdml() { using (var environment = new TestEnvironment()) { const string keyboardName = "IPA Unicode 5.1(ver 1.2 US) MSK"; environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem("en", "", "", "", "", 0, false, "", keyboardName, true, false) ); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); string pathToEnFile = environment.GetFileForOriginalRfcTag("en"); AssertThatXmlIn.File(pathToEnFile). HasAtLeastOneMatchForXpath(String.Format( "/ldml/special/palaso:defaultKeyboard[@value='{0}']", keyboardName), environment.NamespaceManager ); } }
public void MigrateIfNecessary_WsPrefsFileContainsSpellCheckingId_SpellCheckingIdIsInLdml() { using (var environment = new TestEnvironment()) { const string spellCheckingId = "spell"; environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem("en", "", "", "", "", 0, false, spellCheckingId, "", true, false) ); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); string pathToEnFile = environment.GetFileForOriginalRfcTag("en"); AssertThatXmlIn.File(pathToEnFile). HasAtLeastOneMatchForXpath(String.Format( "/ldml/special/palaso:spellCheckingId[@value='{0}']", spellCheckingId), environment.NamespaceManager ); } }
public void MigrateIfNecessary_LdmlForWritingSystemInWsPrefsFileAlreadyExists_LdmlIsCreatedForOtherWritingSystemsInWsPrefsFile() { using (var environment = new TestEnvironment()) { environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.TwoWritingSystems("en", "de") ); var ws = WritingSystemDefinition.Parse("en"); ws.Abbreviation = "untouched"; var wsRepo = environment.WritingSystems; wsRepo.Set(ws); wsRepo.Save(); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); Assert.That(File.Exists(environment.GetFileForOriginalRfcTag("de")), Is.True); } }
public void MigrateIfNecessary_WsPrefsFileContainsWsContainingId_IdIsInLdml() { using (var environment = new TestEnvironment()) { const string id = "en-US-fonipa-x-etic"; environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem(id, "", "", "", "", 0, false, "", "", true, false) ); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); string pathToEnFile = environment.GetFileForOriginalRfcTag(id); AssertThatXmlIn.File(pathToEnFile). HasAtLeastOneMatchForXpath(String.Format( "/ldml/identity/language[@type='{0}']", id), environment.NamespaceManager ); } }
public void MigrateIfNecessary_WsPrefsFileContainsWsContainingIsAudioIsTrueAndrfcTagAlreadyHasScript_ScriptContainsZxxxAndVariantContainsXDashAudioDashScript() { using (var environment = new TestEnvironment()) { const string language = "en-Latn"; const bool isAudio = true; environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem(language, "", "", "", "", 0, false, "", "", true, isAudio) ); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); string pathToEnFile = environment.GetFileForOriginalRfcTag(language); AssertThatXmlIn.File(pathToEnFile).HasAtLeastOneMatchForXpath("/ldml/identity/language[@type = 'en-Latn']"); AssertThatXmlIn.File(pathToEnFile).HasAtLeastOneMatchForXpath("/ldml/identity/script[@type = 'Zxxx']"); AssertThatXmlIn.File(pathToEnFile).HasNoMatchForXpath("/ldml/identity/region"); AssertThatXmlIn.File(pathToEnFile).HasAtLeastOneMatchForXpath("/ldml/identity/variant[@type = 'x-audio']"); } }
public void MigrateIfNecessary_LdmlForWritingSystemInWsPrefsFileAlreadyExists_LdmlIsUntouched() { using (var environment = new TestEnvironment()) { environment.WriteContentToWsPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystemForLanguage("en")); var ws = WritingSystemDefinition.Parse("en"); ws.Abbreviation = "untouched"; var wsRepo = environment.WritingSystems; wsRepo.Set(ws); wsRepo.Save(); var migrator = new WritingSystemPrefsMigrator( environment.WsPrefsFilePath, environment.ChangeRfcTags); migrator.MigrateIfNecassary(); AssertThatXmlIn.File(environment.GetFileForOriginalRfcTag("en")).HasAtLeastOneMatchForXpath( "/ldml/special/palaso:abbreviation[@value='untouched']", environment.NamespaceManager); } }