public void CalculateSpeechDistributionScore_CharacterWhoSpeaksOnlyOnce_ReturnsOne() { var testProject = TestProject.CreateTestProject(TestProject.TestBook.JUD); Assert.AreEqual(1, testProject.SpeechDistributionScoreByCharacterId["apostles"]); Assert.AreEqual(1, testProject.SpeechDistributionScoreByCharacterId["Enoch"]); }
public void CalculateSpeechDistributionScore_CharacterWhoSpeaksFourTimesInOnlyOneChapter_ReturnsFour() { var testProject = TestProject.CreateTestProject(TestProject.TestBook.ACT); TestProject.SimulateDisambiguationForAllBooks(testProject); Assert.AreEqual(4, testProject.SpeechDistributionScoreByCharacterId["Stephen"]); }
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); }
public void CalculateSpeechDistributionScore_BoazInProjectThatOnlyIncludesRuth_ReturnsResultFromMaxBook() { var testProject = TestProject.CreateTestProject(TestProject.TestBook.RUT); TestProject.SimulateDisambiguationForAllBooks(testProject); Assert.IsTrue(testProject.SpeechDistributionScoreByCharacterId["Boaz"] >= 7); }
public void GetFormattedChapterAnnouncement_MainTitle1_BookNameComesFromMainTitle1() { var testProject = TestProject.CreateTestProject(TestProject.TestBook.IJN); testProject.SetBlockGetChapterAnnouncement(ChapterAnnouncement.MainTitle1); Assert.AreEqual("JON 4", testProject.GetFormattedChapterAnnouncement("1JN", 4)); }
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)); }
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 GetFormattedChapterAnnouncement_PageHeader_BookNameComesFromPageHeader() { var testProject = TestProject.CreateTestProject(TestProject.TestBook.IJN); testProject.SetBlockGetChapterAnnouncement(ChapterAnnouncement.PageHeader); Assert.AreEqual("1 JON 4", testProject.GetFormattedChapterAnnouncement("1JN", 4)); }
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"]); }
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)); }
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); }
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); }
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"]); }
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); }
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); }
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)); }
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); }
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); }
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); }
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()); }
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); }
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); }
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")); }
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")); }
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); }
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); }
public void CalculateSpeechDistributionScore_CharacterWhoDoesNotSpeak_ReturnsZero() { var testProject = TestProject.CreateTestProject(TestProject.TestBook.JUD); Assert.IsFalse(testProject.SpeechDistributionScoreByCharacterId.ContainsKey("Jesus")); }
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()))); }