Beispiel #1
0
        public void CalculateSpeechDistributionScore_CharacterWhoSpeaksOnlyOnce_ReturnsOne()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.JUD);

            Assert.AreEqual(1, testProject.SpeechDistributionScoreByCharacterId["apostles"]);
            Assert.AreEqual(1, testProject.SpeechDistributionScoreByCharacterId["Enoch"]);
        }
Beispiel #2
0
        public void CalculateSpeechDistributionScore_CharacterWhoSpeaksFourTimesInOnlyOneChapter_ReturnsFour()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.ACT);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            Assert.AreEqual(4, testProject.SpeechDistributionScoreByCharacterId["Stephen"]);
        }
Beispiel #3
0
        public void MigrateDeprecatedCharacterIds_FirstVerseInQuoteIsUnexpectedForCharacter_CharacterIdNotSetToUnknown()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.JUD);

            TestProject.SimulateDisambiguationForAllBooks(testProject);

            var bookScript            = testProject.IncludedBooks.Single();
            var verses13and14Block    = bookScript.GetBlocksForVerse(1, 13).Single();
            var originalVerse14Blocks = bookScript.GetBlocksForVerse(1, 14);

            // Use reflection to get around a check to ensure we don't do this in production code
            List <Block> blocks     = (List <Block>)ReflectionHelper.GetField(bookScript, "m_blocks");
            int          blockCount = (int)ReflectionHelper.GetField(bookScript, "m_blockCount");

            //Combine verse 13 and 14 blocks
            foreach (var block in originalVerse14Blocks)
            {
                verses13and14Block.BlockElements.AddRange(block.BlockElements);

                blocks.Remove(block);
                blockCount--;
            }
            ReflectionHelper.SetField(bookScript, "m_blockCount", blockCount);

            verses13and14Block.CharacterId = "Enoch";

            //Setup check
            Assert.AreEqual("Enoch", verses13and14Block.CharacterId);

            //SUT
            Assert.AreEqual(0, ProjectDataMigrator.MigrateDeprecatedCharacterIds(testProject));

            Assert.AreEqual("Enoch", verses13and14Block.CharacterId);
        }
Beispiel #4
0
        public void CalculateSpeechDistributionScore_BoazInProjectThatOnlyIncludesRuth_ReturnsResultFromMaxBook()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.RUT);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            Assert.IsTrue(testProject.SpeechDistributionScoreByCharacterId["Boaz"] >= 7);
        }
Beispiel #5
0
        public void GetFormattedChapterAnnouncement_MainTitle1_BookNameComesFromMainTitle1()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.IJN);

            testProject.SetBlockGetChapterAnnouncement(ChapterAnnouncement.MainTitle1);
            Assert.AreEqual("JON 4", testProject.GetFormattedChapterAnnouncement("1JN", 4));
        }
Beispiel #6
0
        public void GetFormattedChapterAnnouncement_ShortName_BookNameComesFromShortName()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.IJN);

            testProject.SetBlockGetChapterAnnouncement(ChapterAnnouncement.ShortNameFromMetadata);
            Assert.AreEqual("1 John 4", testProject.GetFormattedChapterAnnouncement("1JN", 4));
        }
Beispiel #7
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));
        }
Beispiel #8
0
        public void GetFormattedChapterAnnouncement_PageHeader_BookNameComesFromPageHeader()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.IJN);

            testProject.SetBlockGetChapterAnnouncement(ChapterAnnouncement.PageHeader);
            Assert.AreEqual("1 JON 4", testProject.GetFormattedChapterAnnouncement("1JN", 4));
        }
Beispiel #9
0
        public void CalculateSpeechDistributionScore_CharacterWhoSpeaksThriceInOneChapterTwiceInAnotherChapterAndOnceInEachOfTwoOtherChapterAcrossRangeOfSevenChapters_ReturnsThirtyNine()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.ACT);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            Assert.AreEqual(39, testProject.SpeechDistributionScoreByCharacterId["angel of the LORD, an"]);
        }
Beispiel #10
0
        public void GetFormattedChapterAnnouncement_ChapterLabel_ReturnsNull()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.IJN);

            testProject.SetBlockGetChapterAnnouncement(ChapterAnnouncement.ChapterLabel);
            // In reality, we wouldn't expect GetFormattedChapterAnnouncement to get called at all in this
            // case, but safer to just have it return null.
            Assert.IsNull(testProject.GetFormattedChapterAnnouncement("1JN", 4));
        }
Beispiel #11
0
        public void SetCharacterGroupGenerationPreferencesToValidValues_NarrationByAuthor_NumbersSnapToActualNumberOfAuthors(int numMaleNarrators, int numFemaleNarrators)
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.MRK, TestProject.TestBook.LUK, TestProject.TestBook.ACT);

            testProject.CharacterGroupGenerationPreferences.NarratorsOption         = NarratorsOption.NarrationByAuthor;
            testProject.CharacterGroupGenerationPreferences.NumberOfMaleNarrators   = numMaleNarrators;
            testProject.CharacterGroupGenerationPreferences.NumberOfFemaleNarrators = numFemaleNarrators;

            testProject.SetCharacterGroupGenerationPreferencesToValidValues();
            Assert.AreEqual(2, testProject.CharacterGroupGenerationPreferences.NumberOfMaleNarrators);
            Assert.AreEqual(0, testProject.CharacterGroupGenerationPreferences.NumberOfFemaleNarrators);
        }
Beispiel #12
0
        public void SetCharacterGroupGenerationPreferencesToValidValues_ThreeBooks(int numMaleNarrators, int numFemaleNarrators, int resultMale, int resultFemale)
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.MRK, TestProject.TestBook.LUK, TestProject.TestBook.ACT);

            testProject.CharacterGroupGenerationPreferences.NarratorsOption         = NarratorsOption.Custom;
            testProject.CharacterGroupGenerationPreferences.NumberOfMaleNarrators   = numMaleNarrators;
            testProject.CharacterGroupGenerationPreferences.NumberOfFemaleNarrators = numFemaleNarrators;

            testProject.SetCharacterGroupGenerationPreferencesToValidValues();
            Assert.AreEqual(resultMale, testProject.CharacterGroupGenerationPreferences.NumberOfMaleNarrators);
            Assert.AreEqual(resultFemale, testProject.CharacterGroupGenerationPreferences.NumberOfFemaleNarrators);
        }
Beispiel #13
0
        public void CalculateSpeechDistributionScore_CharacterWhoSpeaksALotInOneBookAndALittleInAnother_ReturnsResultFromMaxBook()
        {
            var testProjectA = TestProject.CreateTestProject(TestProject.TestBook.REV);

            TestProject.SimulateDisambiguationForAllBooks(testProjectA);
            var resultFromRev = testProjectA.SpeechDistributionScoreByCharacterId["God"];

            var testProject = TestProject.CreateTestProject(TestProject.TestBook.MRK, TestProject.TestBook.REV);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            Assert.AreEqual(resultFromRev, testProject.SpeechDistributionScoreByCharacterId["God"]);
        }
Beispiel #14
0
        public void SetCharacterGroupGenerationPreferencesToValidValues_NarrationByAuthorValueIsZero_SetToDefault()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.MRK, TestProject.TestBook.LUK, TestProject.TestBook.ACT);

            testProject.CharacterGroupGenerationPreferences.NarratorsOption         = NarratorsOption.NarrationByAuthor;
            testProject.CharacterGroupGenerationPreferences.NumberOfMaleNarrators   = 0;
            testProject.CharacterGroupGenerationPreferences.NumberOfFemaleNarrators = 0;

            testProject.SetCharacterGroupGenerationPreferencesToValidValues();
            Assert.AreEqual(1, testProject.CharacterGroupGenerationPreferences.NumberOfMaleNarrators);
            Assert.AreEqual(0, testProject.CharacterGroupGenerationPreferences.NumberOfFemaleNarrators);
        }
Beispiel #15
0
        public void MigrateDeprecatedCharacterIds_ExistingAmbiguousUserNotConfirmed_NoChanges()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.LUK);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            var block = testProject.IncludedBooks.Single().GetBlocksForVerse(18, 39).Last();

            block.CharacterId   = CharacterVerseData.kAmbiguousCharacter;
            block.UserConfirmed = false;

            Assert.AreEqual(0, ProjectDataMigrator.MigrateDeprecatedCharacterIds(testProject));
            Assert.AreEqual(false, block.UserConfirmed);
        }
Beispiel #16
0
        public void GetFormattedChapterAnnouncement_NoBookNameAvailable_ReturnsNull()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.IJN);

            testProject.SetBlockGetChapterAnnouncement(ChapterAnnouncement.ShortNameFromMetadata);
            var metadata = (GlyssenDblTextMetadata)ReflectionHelper.GetField(testProject, "m_metadata");

            metadata.AvailableBooks[0].ShortName = "   ";
            Assert.IsNull(testProject.GetFormattedChapterAnnouncement("1JN", 4));

            metadata.AvailableBooks[0].ShortName = null;
            Assert.IsNull(testProject.GetFormattedChapterAnnouncement("1JN", 4));
        }
Beispiel #17
0
        public void MigrateDeprecatedCharacterIds_DeliveryChangedForOneOfTwoCharactersInVerse_DeliveryChangedInBlock(string character, string initialDelivery, string expectedDelivery)
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.LUK);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            var block = testProject.IncludedBooks.Single().GetBlocksForVerse(18, 39).Last();

            block.CharacterId = character;
            block.Delivery    = initialDelivery;

            Assert.AreEqual(1, ProjectDataMigrator.MigrateDeprecatedCharacterIds(testProject));
            Assert.AreEqual(expectedDelivery, block.Delivery);
        }
Beispiel #18
0
        public void MigrateDeprecatedCharacterIds_ExistingAmbiguousUserConfirmed_ClearsUserConfirmed()
        {
            // Note: this scenario was caused by a bug in a previous version of this method.
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.LUK);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            var block = testProject.IncludedBooks.Single().GetBlocksForVerse(18, 39).Last();

            block.CharacterId   = CharacterVerseData.kAmbiguousCharacter;
            block.UserConfirmed = true;

            Assert.AreEqual(1, ProjectDataMigrator.MigrateDeprecatedCharacterIds(testProject));
            Assert.AreEqual(false, block.UserConfirmed);
        }
Beispiel #19
0
        public void MigrateDeprecatedCharacterIds_CharacterIdReplacedWithSingleId_CharacterIdInScriptSetToReplacementId()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.REV);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            var angelsSpeakingInRev712 = testProject.IncludedBooks.Single().GetBlocksForVerse(7, 12).ElementAt(1);

            angelsSpeakingInRev712.SetCharacterIdAndCharacterIdInScript("tons of angelic beings", 66);

            Assert.AreEqual(1, ProjectDataMigrator.MigrateDeprecatedCharacterIds(testProject));

            Assert.AreEqual("angels, all the", angelsSpeakingInRev712.CharacterId);
            Assert.AreEqual("angels, all the", angelsSpeakingInRev712.CharacterIdInScript);
        }
Beispiel #20
0
        public void MigrateDeprecatedCharacterIds_StandardCharacterIdUsedInUnexpectedPlaceIsLaterRenamed_CharacterIdInScriptSetToUnknown()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.REV);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            var unexpectedPeterInRev711 = testProject.IncludedBooks.Single().GetBlocksForVerse(7, 11).First();

            testProject.ProjectCharacterVerseData.Add(new CharacterVerse(new BCVRef(66, 7, 11), "peter", "", "", true));
            unexpectedPeterInRev711.SetCharacterIdAndCharacterIdInScript("peter", 66);

            Assert.AreEqual(1, ProjectDataMigrator.MigrateDeprecatedCharacterIds(testProject));

            Assert.AreEqual(CharacterVerseData.kUnknownCharacter, unexpectedPeterInRev711.CharacterId);
            Assert.IsFalse(testProject.ProjectCharacterVerseData.Any());
        }
Beispiel #21
0
        public void MigrateDeprecatedCharacterIds_CharacterIdRemoved_MultipleCharactersStillInVerse_CharacterIdInScriptSetToAmbiguous()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.REV);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            var blockInRev13V10 = testProject.IncludedBooks.Single().GetBlocksForVerse(13, 10).First();

            blockInRev13V10.SetCharacterIdAndCharacterIdInScript("angels, all the", 66);
            blockInRev13V10.CharacterIdOverrideForScript = "angels, all, the";
            Assert.AreEqual("angels, all, the", blockInRev13V10.CharacterIdInScript);

            Assert.AreEqual(1, ProjectDataMigrator.MigrateDeprecatedCharacterIds(testProject));

            Assert.AreEqual(CharacterVerseData.kAmbiguousCharacter, blockInRev13V10.CharacterId);
            Assert.AreEqual(CharacterVerseData.kAmbiguousCharacter, blockInRev13V10.CharacterIdInScript);
        }
Beispiel #22
0
        public void MigrateDeprecatedCharacterIds_CharacterIdRemoved_NoOtherCharactersInVerse_CharacterIdInScriptSetToUnknown()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.REV);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            var blockInRev43 = testProject.IncludedBooks.Single().GetBlocksForVerse(4, 3).First();

            blockInRev43.SetCharacterIdAndCharacterIdInScript("angels, all the", 66);
            blockInRev43.CharacterIdOverrideForScript = "angels, all, the";
            Assert.AreEqual("angels, all, the", blockInRev43.CharacterIdInScript);

            Assert.AreEqual(1, ProjectDataMigrator.MigrateDeprecatedCharacterIds(testProject));

            Assert.AreEqual(CharacterVerseData.kUnknownCharacter, blockInRev43.CharacterId);
            Assert.AreEqual(CharacterVerseData.kUnknownCharacter, blockInRev43.CharacterIdInScript);
        }
Beispiel #23
0
        public void MigrateDeprecatedCharacterIds_OneMemberOfMultiCharacterIdChanged_CharacterIdInScriptSetToReplacementId()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.REV);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            var singersInRev59 = testProject.IncludedBooks.Single().GetBlocksForVerse(5, 9).Skip(1).ToList();

            foreach (var block in singersInRev59)
            {
                block.SetCharacterIdAndCharacterIdInScript("cuatro living creatures/twenty-four elders", 66);
            }

            Assert.AreEqual(singersInRev59.Count, ProjectDataMigrator.MigrateDeprecatedCharacterIds(testProject));

            Assert.True(singersInRev59.All(b => b.CharacterId == "living creature, first/living creature, second/living creature, third/living creature, fourth/twenty-four elders" &&
                                           b.CharacterIdInScript == "living creature, first"));
        }
Beispiel #24
0
        public void MigrateDeprecatedCharacterIds_DeliveryChanged_DeliveryChangedInBlock(string initialDelivery)
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.REV);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            var singersInRev59 = testProject.IncludedBooks.Single().GetBlocksForVerse(5, 9).Skip(1).ToList();

            foreach (var block in singersInRev59)
            {
                block.Delivery = initialDelivery;
            }

            Assert.AreEqual(singersInRev59.Count, ProjectDataMigrator.MigrateDeprecatedCharacterIds(testProject));

            Assert.True(singersInRev59.All(b => b.CharacterId == "living creature, first/living creature, second/living creature, third/living creature, fourth/twenty-four elders" &&
                                           b.Delivery == "singing"));
        }
Beispiel #25
0
        public void MigrateDeprecatedCharacterIds_OneOfTwoCharacterIdsInVerseReplacedWithDifferentId_CharacterIdInScriptSetToAmbiguous()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.REV);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            var johnSpeakingInRev714 = testProject.IncludedBooks.Single().GetBlocksForVerse(7, 14).ElementAt(1);

            johnSpeakingInRev714.SetCharacterIdAndCharacterIdInScript("John", 66);
            johnSpeakingInRev714.UserConfirmed = true;
            var elderSpeakingInRev714 = testProject.IncludedBooks.Single().GetBlocksForVerse(7, 14).ElementAt(3);

            elderSpeakingInRev714.SetCharacterIdAndCharacterIdInScript("elders, one of the", 66);
            Assert.True(johnSpeakingInRev714.UserConfirmed);

            Assert.AreEqual(1, ProjectDataMigrator.MigrateDeprecatedCharacterIds(testProject));

            Assert.AreEqual(CharacterVerseData.kAmbiguousCharacter, johnSpeakingInRev714.CharacterId);
            Assert.AreEqual(CharacterVerseData.kAmbiguousCharacter, johnSpeakingInRev714.CharacterIdInScript);
            Assert.False(johnSpeakingInRev714.UserConfirmed);
            Assert.AreEqual("elders, one of the", elderSpeakingInRev714.CharacterId);
            Assert.AreEqual("elders, one of the", elderSpeakingInRev714.CharacterIdInScript);
        }
Beispiel #26
0
        public void MigrateInvalidCharacterIdsWithoutCharacterIdInScriptOverrides_ControlFileHasNoExplicitDefault_FirstCharacterIsUsed()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.MRK);

            TestProject.SimulateDisambiguationForAllBooks(testProject);
            var jesusSpeakingInMrk59 = testProject.IncludedBooks.Single().GetBlocksForVerse(5, 9).ElementAt(1);

            jesusSpeakingInMrk59.SetCharacterIdAndCharacterIdInScript("Jesus", 66);
            jesusSpeakingInMrk59.UserConfirmed = true;
            var demonSpeakingInMrk59 = testProject.IncludedBooks.Single().GetBlocksForVerse(5, 9).ElementAt(3);

            demonSpeakingInMrk59.CharacterId = "demons (Legion)/man delivered from Legion of demons";
            demonSpeakingInMrk59.CharacterIdOverrideForScript = null;
            demonSpeakingInMrk59.UserConfirmed = true;

            Assert.AreEqual(1, ProjectDataMigrator.MigrateInvalidCharacterIdsWithoutCharacterIdInScriptOverrides(testProject));

            Assert.AreEqual("Jesus", jesusSpeakingInMrk59.CharacterId);
            Assert.AreEqual("Jesus", jesusSpeakingInMrk59.CharacterIdInScript);
            Assert.IsTrue(jesusSpeakingInMrk59.UserConfirmed);
            Assert.AreEqual("demons (Legion)/man delivered from Legion of demons", demonSpeakingInMrk59.CharacterId);
            Assert.AreEqual("demons (Legion)", demonSpeakingInMrk59.CharacterIdInScript);
            Assert.IsTrue(demonSpeakingInMrk59.UserConfirmed);
        }
Beispiel #27
0
        public void CalculateSpeechDistributionScore_CharacterWhoDoesNotSpeak_ReturnsZero()
        {
            var testProject = TestProject.CreateTestProject(TestProject.TestBook.JUD);

            Assert.IsFalse(testProject.SpeechDistributionScoreByCharacterId.ContainsKey("Jesus"));
        }
Beispiel #28
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())));
        }