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));
        }
Example #3
0
        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"));
 }
Example #10
0
        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())));
        }