public void IsCustomReferenceAvailable_No_ReturnsFalse() { TestReferenceText.CreateCustomReferenceText(TestReferenceText.TestReferenceTextResource.AzeriJUD); Assert.IsFalse(ReferenceTextIdentifier.IsCustomReferenceAvailable("Spanish")); Assert.IsFalse(ReferenceTextIdentifier.IsCustomReferenceAvailable("English")); }
public void AllAvailable_CustomReferenceTexts_IncludesBuiltInAndCustomTexts() { TestReferenceText.CreateCustomReferenceText(TestReferenceText.TestReferenceTextResource.AzeriJUD); TestReferenceText.CreateCustomReferenceText(TestReferenceText.TestReferenceTextResource.EnglishJUD); var referenceTexts = ReferenceTextIdentifier.AllAvailable.ToList(); VerifyBuiltInReferenceTexts(referenceTexts); Assert.AreEqual(4, referenceTexts.Count); var customEnglish = referenceTexts.Single(r => r.Type == ReferenceTextType.Custom && r.CustomIdentifier == "English"); Assert.AreEqual(ReferenceTextType.Custom, customEnglish.Type); Assert.AreEqual("English", customEnglish.CustomIdentifier); var folder = customEnglish.ProjectFolder; Assert.IsTrue(folder.EndsWith(Path.DirectorySeparatorChar + "English")); folder = Path.GetDirectoryName(folder); var azeri = referenceTexts.Single(r => r.Type == ReferenceTextType.Custom && r.CustomIdentifier == "Azeri"); Assert.AreEqual(ReferenceTextType.Custom, azeri.Type); Assert.AreEqual("Azeri", azeri.CustomIdentifier); Assert.AreEqual(folder, Path.GetDirectoryName(azeri.ProjectFolder)); }
public void SetReferenceText_ChangeFromEnglishToFrenchWithOneBlockMismatched_ReferenceTextClearedForAllRelatedBlocks() { var testProject = TestProject.CreateTestProject(TestProject.TestBook.MRK); testProject.ReferenceText = ReferenceText.GetStandardReferenceText(ReferenceTextType.English); testProject.IsOkayToClearExistingRefBlocksWhenChangingReferenceText = () => true; var mark = testProject.IncludedBooks[0]; var blocks = mark.GetScriptBlocks(); var mark5V41 = blocks.IndexOf(b => b.ChapterNumber == 5 && b.InitialStartVerseNumber == 41); var matchup = testProject.ReferenceText.GetBlocksForVerseMatchedToReferenceText(mark, mark5V41, testProject.Versification); Assert.AreEqual(5, matchup.CorrelatedBlocks.Count); Assert.AreEqual(40, matchup.CorrelatedBlocks[0].InitialStartVerseNumber); Assert.AreEqual(41, matchup.CorrelatedBlocks[1].InitialStartVerseNumber); Assert.IsTrue(matchup.CorrelatedBlocks.All(b => b.ReferenceBlocks.Count == 1)); matchup.MatchAllBlocks(null); matchup.SetReferenceText(3, "this won't match."); matchup.Apply(null); var matchedVernBlocks = blocks.Skip(mark5V41).Take(4).ToList(); Assert.IsTrue(matchedVernBlocks.All(b => b.MatchesReferenceText)); Assert.IsTrue(matchedVernBlocks.All(b => b.ReferenceBlocks.Single().ReferenceBlocks.Count == 0)); Assert.IsFalse(matchedVernBlocks.Any(b => string.IsNullOrEmpty(b.GetPrimaryReferenceText()))); ReferenceText rtFrench = TestReferenceText.CreateCustomReferenceText(TestReferenceText.TestReferenceTextResource.FrenchMRK); testProject.ReferenceText = rtFrench; Assert.IsTrue(blocks.Single(b => b.ChapterNumber == 5 && b.InitialStartVerseNumber == 40).MatchesReferenceText); mark5V41 = blocks.IndexOf(b => b.ChapterNumber == 5 && b.InitialStartVerseNumber == 41); var vernBlocksForMark5V41 = blocks.Skip(mark5V41).Take(4).ToList(); Assert.IsFalse(vernBlocksForMark5V41.Any(b => b.MatchesReferenceText)); }
public void IsCustomReferenceAvailable_Yes_ReturnsTrue() { TestReferenceText.CreateCustomReferenceText(TestReferenceText.TestReferenceTextResource.AzeriJUD); TestReferenceText.CreateCustomReferenceText(TestReferenceText.TestReferenceTextResource.EnglishJUD); ReferenceTextIdentifier.ClearCache(); Assert.IsTrue(ReferenceTextIdentifier.IsCustomReferenceAvailable("English")); Assert.IsTrue(ReferenceTextIdentifier.IsCustomReferenceAvailable("Azeri")); }
public void AllAvailable_AfterCallingGetOrCreateForUnavailableCustomRefText_IncludesMissingCustomText() { TestReferenceText.OverrideProprietaryReferenceTextProjectFileLocationToTempLocation(); var idEpl = ReferenceTextIdentifier.GetOrCreate(ReferenceTextType.Custom, "EsperantoPigLatin"); Assert.IsTrue(idEpl.Missing); var referenceTexts = ReferenceTextIdentifier.AllAvailable.ToList(); VerifyBuiltInReferenceTexts(referenceTexts); Assert.AreEqual(3, referenceTexts.Count); Assert.AreEqual(idEpl, referenceTexts.Single(r => r.Type == ReferenceTextType.Custom && r.CustomIdentifier == "EsperantoPigLatin")); }
public void AllAvailable_AfterCallingGetOrCreate_IncludesAllCustomTexts() { TestReferenceText.CreateCustomReferenceText(TestReferenceText.TestReferenceTextResource.AzeriJUD); TestReferenceText.CreateCustomReferenceText(TestReferenceText.TestReferenceTextResource.EnglishJUD); ReferenceTextIdentifier.ClearCache(); var idAzeri = ReferenceTextIdentifier.GetOrCreate(ReferenceTextType.Custom, "Azeri"); var referenceTexts = ReferenceTextIdentifier.AllAvailable.ToList(); VerifyBuiltInReferenceTexts(referenceTexts); Assert.AreEqual(4, referenceTexts.Count); Assert.IsNotNull(referenceTexts.Single(r => r.Type == ReferenceTextType.Custom && r.CustomIdentifier == "English")); }
public void AllAvailable_NoCustomReferenceTexts_IncludesOnlyBuiltInPublicDomainTexts(bool proprietaryReferenceTextLocationExists) { if (proprietaryReferenceTextLocationExists) { TestReferenceText.OverrideProprietaryReferenceTextProjectFileLocationToTempLocation(); } else { ReferenceTextIdentifier.ProprietaryReferenceTextProjectFileLocation = Path.GetFileNameWithoutExtension(Path.GetTempFileName()); Assert.IsFalse(Directory.Exists(ReferenceTextIdentifier.ProprietaryReferenceTextProjectFileLocation)); } var publicDomainDistributedReferenceTexts = ReferenceTextIdentifier.AllAvailable.ToList(); Assert.AreEqual(2, publicDomainDistributedReferenceTexts.Count); VerifyBuiltInReferenceTexts(publicDomainDistributedReferenceTexts); }
public void Teardown() { TestReferenceText.DeleteTempCustomReferenceProjectFolder(); }
public void IsCustomReferenceAvailable_NoCustomReferenceTexts_ReturnsFalse() { TestReferenceText.OverrideProprietaryReferenceTextProjectFileLocationToTempLocation(); Assert.IsFalse(ReferenceTextIdentifier.IsCustomReferenceAvailable("English")); Assert.IsFalse(ReferenceTextIdentifier.IsCustomReferenceAvailable("Azeri")); }
public void SetReferenceText_ChangeFromEnglishToFrench_MatchedBlocksGetMigrated() { var testProject = TestProject.CreateTestProject(TestProject.TestBook.MRK); testProject.ReferenceText = ReferenceText.GetStandardReferenceText(ReferenceTextType.English); var mark = testProject.IncludedBooks[0]; var blocks = mark.GetScriptBlocks(); // Case where the vern blocks match 1-for-1 to the English reference text var mark8V5 = blocks.IndexOf(b => b.ChapterNumber == 8 && b.InitialStartVerseNumber == 5); var matchup = testProject.ReferenceText.GetBlocksForVerseMatchedToReferenceText(mark, mark8V5, testProject.Versification); Assert.AreEqual(4, matchup.CorrelatedBlocks.Count); Assert.IsTrue(matchup.CorrelatedBlocks.All(b => b.ReferenceBlocks.Count == 1)); matchup.MatchAllBlocks(null); matchup.Apply(null); var matchedVernBlocks = blocks.Skip(mark8V5).Take(4).ToList(); Assert.IsTrue(matchedVernBlocks.All(b => b.MatchesReferenceText)); Assert.IsTrue(matchedVernBlocks.All(b => b.ReferenceBlocks.Single().ReferenceBlocks.Count == 0)); Assert.IsFalse(matchedVernBlocks.Any(b => string.IsNullOrEmpty(b.GetPrimaryReferenceText()))); // Case where two of the English reference text blocks get combined to match a vern block var mark9V9 = blocks.IndexOf(b => b.ChapterNumber == 9 && b.InitialStartVerseNumber == 9); var englishRefBlocks = testProject.ReferenceText.Books.Single(b => b.BookId == "MRK").GetScriptBlocks(); var mark9V9EnglishRefText = englishRefBlocks.IndexOf(b => b.ChapterNumber == 9 && b.InitialStartVerseNumber == 9); Assert.AreEqual(9, englishRefBlocks[mark9V9EnglishRefText + 1].InitialStartVerseNumber); matchup = testProject.ReferenceText.GetBlocksForVerseMatchedToReferenceText(mark, mark9V9, testProject.Versification); Assert.AreEqual(3, matchup.CorrelatedBlocks.Count); Assert.IsTrue(matchup.CorrelatedBlocks.All(b => b.ReferenceBlocks.Count == 1)); var expectedEnglishRefTextForMark9V9 = englishRefBlocks[mark9V9EnglishRefText].GetText(true) + " " + englishRefBlocks[mark9V9EnglishRefText + 1].GetText(true); Assert.AreEqual(expectedEnglishRefTextForMark9V9, matchup.CorrelatedBlocks[0].GetPrimaryReferenceText()); matchup.MatchAllBlocks(null); matchup.Apply(null); matchedVernBlocks = blocks.Skip(mark9V9).Take(3).ToList(); Assert.IsTrue(matchedVernBlocks.All(b => b.MatchesReferenceText)); Assert.IsTrue(matchedVernBlocks.All(b => b.ReferenceBlocks.Single().ReferenceBlocks.Count == 0)); Assert.IsFalse(matchedVernBlocks.Any(b => string.IsNullOrEmpty(b.GetPrimaryReferenceText()))); ReferenceText rtFrench = TestReferenceText.CreateCustomReferenceText(TestReferenceText.TestReferenceTextResource.FrenchMRK); testProject.ReferenceText = rtFrench; var frenchRefBlocks = rtFrench.Books.Single(b => b.BookId == "MRK").GetScriptBlocks(); // Verify results for case where the vern blocks match 1-for-1 to the English reference text matchedVernBlocks = blocks.Skip(mark8V5).Take(4).ToList(); Assert.IsTrue(matchedVernBlocks.All(b => b.MatchesReferenceText)); Assert.IsFalse(matchedVernBlocks.Any(b => string.IsNullOrEmpty(b.GetPrimaryReferenceText()))); Assert.IsTrue(matchedVernBlocks.All(b => b.ReferenceBlocks.Single().ReferenceBlocks.Count == 1)); Assert.IsFalse(matchedVernBlocks.All(b => string.IsNullOrEmpty(b.ReferenceBlocks.Single().GetPrimaryReferenceText()))); Assert.IsTrue(matchedVernBlocks.All(b => frenchRefBlocks.Any(fb => fb.GetText(true) == b.GetPrimaryReferenceText() && fb.ChapterNumber == b.ChapterNumber && fb.InitialVerseNumberOrBridge == b.InitialVerseNumberOrBridge && b.ReferenceBlocks.Single().GetPrimaryReferenceText() == fb.GetPrimaryReferenceText()))); // Verify results for case where two of the English reference text blocks get combined to match a vern block matchedVernBlocks = blocks.Skip(mark9V9).Take(3).ToList(); Assert.IsTrue(matchedVernBlocks.All(b => b.MatchesReferenceText)); Assert.IsFalse(matchedVernBlocks.Any(b => string.IsNullOrEmpty(b.GetPrimaryReferenceText()))); Assert.IsTrue(matchedVernBlocks.All(b => b.ReferenceBlocks.Single().ReferenceBlocks.Count == 1)); Assert.IsFalse(matchedVernBlocks.All(b => string.IsNullOrEmpty(b.ReferenceBlocks.Single().GetPrimaryReferenceText()))); var mark9V9FrenchRefText = frenchRefBlocks.IndexOf(b => b.ChapterNumber == 9 && b.InitialStartVerseNumber == 9); Assert.AreEqual(frenchRefBlocks[mark9V9FrenchRefText].GetText(true) + " " + frenchRefBlocks[mark9V9FrenchRefText + 1].GetText(true), matchedVernBlocks[0].GetPrimaryReferenceText()); Assert.AreEqual(expectedEnglishRefTextForMark9V9, matchedVernBlocks[0].ReferenceBlocks.Single().GetPrimaryReferenceText()); Assert.IsTrue(matchedVernBlocks.Skip(1).All(b => frenchRefBlocks.Any(fb => fb.GetText(true) == b.GetPrimaryReferenceText() && fb.ChapterNumber == b.ChapterNumber && fb.InitialVerseNumberOrBridge == b.InitialVerseNumberOrBridge && b.ReferenceBlocks.Single().GetPrimaryReferenceText() == fb.GetPrimaryReferenceText()))); }