public void WriteVersion0LdmlFile(string language) { string filePath = Path.Combine(GlobalWritingSystemRepositoryMigrator.LdmlPathVersion0, String.Format("{0}.ldml", language)); string content = LdmlContentForTests.Version0(language, "", "", ""); File.WriteAllText(filePath, content); }
public void WritingSystemLdmlVersionGetterGetFileVersion_FileHasNoVersion_ReturnsminusOne() { using (_environment = new TestEnvironment()) { _environment.WriteContentToWritingSystemLdmlFile(LdmlContentForTests.Version0("en", "", "", "")); var versionGetter = new WritingSystemLdmlVersionGetter(); Assert.That(versionGetter.GetFileVersion(_environment.PathToWritingSystemLdmlFile), Is.EqualTo(-1)); } }
public void LoadAllDefinitions_WsIsValidRfc5646TagStartingWithx_IsNotTreatedAsFlexPrivateUseAndThrows() { using (var environment = new TestEnvironment()) { var ldmlPath = Path.Combine(environment.TestPath, "xh.ldml"); File.WriteAllText(ldmlPath, LdmlContentForTests.Version0("xh", "", "", "")); var repo = LdmlInFolderWritingSystemRepository.Initialize(environment.TestPath, DummyWritingSystemHandler.onMigration, DummyWritingSystemHandler.onLoadProblem, WritingSystemCompatibility.Strict); //Assert.That(() => new LdmlInFolderWritingSystemRepository(environment.TestPath), Throws.Exception.TypeOf<ApplicationException>()); } }
public void GetFileVersion_V0_ReturnsBadVersion() { string xml = LdmlContentForTests.Version0("en", "", "", ""); using (var file = new TempFile(xml)) { var silLdmlVersion = new SilLdmlVersion(); int result = silLdmlVersion.GetFileVersion(file.Path); Assert.That(result, Is.EqualTo(SilLdmlVersion.BadVersion)); } }
public void SaveDefinition_WritingSystemCameFromFlexPrivateUseLdml_FileNameIsRetained() { using (var environment = new TestEnvironment()) { var pathToFlexprivateUseLdml = Path.Combine(environment.TestPath, "x-Zxxx-x-audio.ldml"); File.WriteAllText(pathToFlexprivateUseLdml, LdmlContentForTests.Version0("x", "Zxxx", "", "x-audio")); environment.Collection = LdmlInFolderWritingSystemRepository.Initialize(environment.TestPath, DummyWritingSystemHandler.onMigration, DummyWritingSystemHandler.onLoadProblem, WritingSystemCompatibility.Flex7V0Compatible); var ws = environment.Collection.Get("x-Zxxx-x-audio"); environment.Collection.SaveDefinition(ws); Assert.That(File.Exists(pathToFlexprivateUseLdml)); } }
public void LoadAllDefinitions_FilenameIsFlexConformPrivateUseAndDoesNotMatchRfc5646Tag_Migrates() { using (var environment = new TestEnvironment()) { var ldmlPath = Path.Combine(environment.TestPath, "x-en-Zxxx.ldml"); File.WriteAllText(ldmlPath, LdmlContentForTests.Version0("x-en", "Zxxx", "", "")); var repo = LdmlInFolderWritingSystemRepository.Initialize(environment.TestPath, DummyWritingSystemHandler.onMigration, DummyWritingSystemHandler.onLoadProblem, WritingSystemCompatibility.Strict); // Now try to load up. Assert.That(repo.Get("qaa-Zxxx-x-en").Language, Is.EqualTo("qaa")); } }
//This test makes sure that existing Flex private use tags are not changed public void CreateNonExistentWritingSystemsFoundInOptionsList_OptionsListFileContainsEntirelyPrivateUseRfcTagThatExistsInRepo_RfcTagIsNotMigrated() { using (var e = new TestEnvironment("x-blah")) { e.WriteContentToLdmlFileInWritingSystemFolderWithName("x-blah", LdmlContentForTests.Version0("x-blah", "", "", "")); e.CreateLegacyFriendlyWritingSystemRepository(); e.Helper.CreateNonExistentWritingSystemsFoundInFile(); Assert.That(File.Exists(e.GetLdmlFileforWs("x-blah")), Is.True); Assert.That(File.Exists(e.GetLdmlFileforWs("qaa-x-blah")), Is.False); AssertThatXmlIn.File(e.PathToOptionsListFile).HasAtLeastOneMatchForXpath("/optionsList/options/option/name/form[@lang='x-blah']"); AssertThatXmlIn.File(e.PathToOptionsListFile).HasNoMatchForXpath("/optionsList/options/option/name/form[@lang='qaa-x-blah']"); } }
public void Set_WritingSystemWasLoadedFromFlexPrivateUseLdmlAndRearranged_DoesNotChangeFileName() { using (var environment = new TestEnvironment()) { var pathToFlexprivateUseLdml = Path.Combine(environment.TestPath, "x-en-Zxxx-x-audio.ldml"); File.WriteAllText(pathToFlexprivateUseLdml, LdmlContentForTests.Version0("x-en", "Zxxx", "", "x-audio")); environment.Collection = LdmlInFolderWritingSystemRepository.Initialize(environment.TestPath, DummyWritingSystemHandler.onMigration, DummyWritingSystemHandler.onLoadProblem, WritingSystemCompatibility.Flex7V0Compatible); var ws = environment.Collection.Get("x-en-Zxxx-x-audio"); environment.Collection.Set(ws); Assert.That(File.Exists(pathToFlexprivateUseLdml), Is.True); } }
public void Read_ValidLanguageTagStartingWithXButVersion0_Throws() { using (TempFile version0Ldml = new TempFile()) { using (var writer = new StreamWriter(version0Ldml.Path, false, Encoding.UTF8)) { writer.Write(LdmlContentForTests.Version0("xh", "", "", "")); } var wsV1 = new WritingSystemDefinitionV1(); var adaptor = new LdmlAdaptorV1(); Assert.Throws <ApplicationException>(() => adaptor.Read(version0Ldml.Path, wsV1)); } }
public void MigrateIfNeeded_LdmlV0ContainsIdThatNeedsMigrating_WritingSystemChangeLogUpdated() { using (var e = new TestEnvironment()) { string writingSystemsPath = Path.Combine(e.ProjectPath, "WritingSystems"); string ldmlFilePath = Path.Combine(writingSystemsPath, "blah.ldml"); string idChangeLogFilePath = Path.Combine(writingSystemsPath, "idchangelog.xml"); Directory.CreateDirectory(writingSystemsPath); File.WriteAllText(ldmlFilePath, LdmlContentForTests.Version0("blah", "", "", "")); var migrator = new WritingSystemsMigrator(e.ProjectPath); migrator.MigrateIfNecessary(); AssertThatXmlIn.File(idChangeLogFilePath).HasAtLeastOneMatchForXpath("/WritingSystemChangeLog/Changes/Change/To[text()='qaa-x-blah']"); } }
public void MigrateIfNeeded_WSPrefsAndLdmlV0ContainsIdsThatNeedMigrating_WritingSystemChangeLogUpdated() { using (var e = new TestEnvironment()) { const string language = "zzas"; e.WriteToPrefsFile(WritingSystemPrefsFileContent.SingleWritingSystem(language, language, "", "", "", 12, false, language, "", false, true)); string writingSystemsPath = Path.Combine(e.ProjectPath, "WritingSystems"); string ldmlFilePath = Path.Combine(writingSystemsPath, "en-bogus.ldml"); string idChangeLogFilePath = Path.Combine(writingSystemsPath, "idchangelog.xml"); Directory.CreateDirectory(writingSystemsPath); File.WriteAllText(ldmlFilePath, LdmlContentForTests.Version0("en-bogus", "", "", "")); var migrator = new WritingSystemsMigrator(e.ProjectPath); migrator.MigrateIfNecessary(); AssertThatXmlIn.File(idChangeLogFilePath).HasAtLeastOneMatchForXpath("/WritingSystemChangeLog/Changes/Change/To[text()='en-x-bogus']"); AssertThatXmlIn.File(idChangeLogFilePath).HasAtLeastOneMatchForXpath("/WritingSystemChangeLog/Changes/Change/To[text()='qaa-Zxxx-x-zzas-audio']"); } }
public void LoadDefinitions_ValidLanguageTagStartingWithXButV0_Throws() { using (var environment = new TestEnvironment()) { var pathToFlexprivateUseLdml = Path.Combine(environment.TestPath, "xh.ldml"); File.WriteAllText(pathToFlexprivateUseLdml, LdmlContentForTests.Version0("xh", "", "", "")); var repository = new LdmlInFolderWritingSystemRepository(environment.TestPath); var problems = repository.LoadProblems; Assert.That(problems.Count, Is.EqualTo(1)); Assert.That( problems[0].Exception, Is.TypeOf <ApplicationException>().With.Property("Message"). ContainsSubstring(String.Format( "The LDML tag 'xh' is version 0. Version {0} was expected.", WritingSystemDefinition.LatestWritingSystemDefinitionVersion )) ); } }
public void Read_ReadPrivateUseWsFromFieldWorksLdmlThenNormalLdmlMissingVersion1Element_Throws() { using (TempFile badFlexLdml = new TempFile(), version0Ldml = new TempFile()) { using (var writer = new StreamWriter(badFlexLdml.Path, false, Encoding.UTF8)) { writer.Write(LdmlContentForTests.Version0("x-en", "", "", "x-private")); } using (var writer = new StreamWriter(version0Ldml.Path, false, Encoding.UTF8)) { writer.Write(LdmlContentForTests.Version0("en", "", "", "")); } var wsV1 = new WritingSystemDefinitionV1(); var wsV0 = new WritingSystemDefinitionV1(); var adaptor = new LdmlAdaptorV1(); adaptor.Read(badFlexLdml.Path, wsV0); Assert.Throws <ApplicationException>(() => adaptor.Read(version0Ldml.Path, wsV1)); } }
public void LoadAllDefinitions_LDMLV0_HasExpectedProblem() { using (var environment = new TestEnvironment()) { var ldmlPath = Path.Combine(environment.TestPath, "en.ldml"); File.WriteAllText(ldmlPath, LdmlContentForTests.Version0("en", "", "", "")); var repository = new LdmlInFolderWritingSystemRepository(environment.TestPath); var problems = repository.LoadProblems; Assert.That(problems.Count, Is.EqualTo(1)); Assert.That( problems[0].Exception, Is.TypeOf <ApplicationException>().With.Property("Message"). ContainsSubstring(String.Format( "The LDML tag 'en' is version 0. Version {0} was expected.", WritingSystemDefinition.LatestWritingSystemDefinitionVersion )) ); } }
public void Write_WritePrivateUseWsFromFieldWorksLdmlThenNormalLdml_ContainsVersion2() { using (TempFile badFlexLdml = new TempFile(), version1Ldml = new TempFile()) { var namespaceManager = new XmlNamespaceManager(new NameTable()); namespaceManager.AddNamespace("palaso", "urn://palaso.org/ldmlExtensions/v1"); using (var writer = new StreamWriter(badFlexLdml.Path, false, Encoding.UTF8)) { writer.Write(LdmlContentForTests.Version0("x-en", "", "", "x-private")); } var wsV0 = new WritingSystemDefinitionV1(); var adaptor = new LdmlAdaptorV1(); adaptor.Read(badFlexLdml.Path, wsV0); adaptor.Write(badFlexLdml.Path, wsV0, new MemoryStream(File.ReadAllBytes(badFlexLdml.Path))); var wsV1 = new WritingSystemDefinitionV1(); adaptor.Write(version1Ldml.Path, wsV1, null); var versionReader = new WritingSystemLdmlVersionGetter(); Assert.That(versionReader.GetFileVersion(version1Ldml.Path), Is.EqualTo(2)); } }
//This test makes sure that existing Flex private use tags are not changed public void CreateNonExistentWritingSystemsFoundInLift_LiftFileContainsEntirelyPrivateUseRfcTagThatExistsInRepo_RfcTagIsMigrated() { using (var e = new TestEnvironment(String.Format(TestEnvironment.LiftFile1Content, "x-custom-Zxxx-x-audio", "x-dontcare"))) { e.WriteContentToLdmlFileInWritingSystemFolderWithName("x-custom-Zxxx-x-audio", LdmlContentForTests.Version0("x-custom", "Zxxx", "", "x-audio")); e.Helper.CreateNonExistentWritingSystemsFoundInFile(); Assert.That(File.Exists(e.GetLdmlFileforWs("x-custom-Zxxx-x-audio")), Is.True); Assert.That(File.Exists(e.GetLdmlFileforWs("en-Zxxx-x-audio")), Is.False); AssertThatXmlIn.File(e.PathToLiftFile).HasAtLeastOneMatchForXpath("/lift/entry/lexical-unit/form[@lang='x-custom-Zxxx-audio']"); AssertThatXmlIn.File(e.PathToLiftFile).HasNoMatchForXpath("/lift/entry/lexical-unit/form[@lang='custom-Zxxx-x-audio']"); } }