Пример #1
0
        public void CleanUpOrphanedMultiBlockQuoteStati_TwoStarts_FirstStartChangedToNone(MultiBlockQuote continuingStatus)
        {
            var block1 = CreateTestBlock(1, MultiBlockQuote.None);
            var block2 = CreateTestBlock(2, MultiBlockQuote.Start);
            var block3 = CreateTestBlock(3, MultiBlockQuote.Start);
            var block4 = CreateTestBlock(4, continuingStatus);

            var block1Original = block1.Clone();
            var block2Original = block2.Clone();
            var block3Original = block3.Clone();
            var block4Original = block4.Clone();

            var book = new BookScript("MAT", new List <Block> {
                block1, block2, block3, block4
            });
            var books = new List <BookScript> {
                book
            };

            ProjectDataMigrator.CleanUpOrphanedMultiBlockQuoteStati(books);

            Assert.AreEqual(4, book.Blocks.Count);
            Assert.AreEqual(block1Original.GetText(true), block1.GetText(true));
            Assert.AreEqual(block2Original.GetText(true), block2.GetText(true));
            Assert.AreEqual(block3Original.GetText(true), block3.GetText(true));
            Assert.AreEqual(block4Original.GetText(true), block4.GetText(true));
            Assert.AreEqual(MultiBlockQuote.None, block1.MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.None, block2.MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.Start, block3.MultiBlockQuote);
            Assert.AreEqual(continuingStatus, block4.MultiBlockQuote);
        }
Пример #2
0
        public void MigrateInvalidCharacterIdForScriptDataToVersion88_CharacterIdUnclearAndCharacterIdInScriptNotNull_CharacterIdInScriptSetToNull(string unclearCharacterId)
        {
            var block1 = CreateTestBlock("Andrew");

            block1.UserConfirmed = true;
            block1.CharacterId   = unclearCharacterId;
            Assert.AreEqual(unclearCharacterId, block1.CharacterId);
            Assert.AreEqual("Andrew", block1.CharacterIdInScript);

            var block2 = CreateTestBlock("Peter");

            block2.UserConfirmed = true;
            block2.CharacterId   = unclearCharacterId;
            Assert.AreEqual(unclearCharacterId, block2.CharacterId);
            Assert.AreEqual("Peter", block2.CharacterIdInScript);

            var book = new BookScript("MAT", new List <Block> {
                block1, block2
            });
            var books = new List <BookScript> {
                book
            };

            Assert.True(block1.UserConfirmed);
            Assert.True(block2.UserConfirmed);

            ProjectDataMigrator.MigrateInvalidCharacterIdForScriptData(books);

            Assert.AreEqual(unclearCharacterId, block1.CharacterId);
            Assert.AreEqual(unclearCharacterId, block1.CharacterIdInScript);
            Assert.False(block1.UserConfirmed);
            Assert.AreEqual(unclearCharacterId, block2.CharacterId);
            Assert.AreEqual(unclearCharacterId, block2.CharacterIdInScript);
            Assert.False(block2.UserConfirmed);
        }
Пример #3
0
        private static bool ProcessDifferentCharacter(BookScript book, Block block, string characterId, ISet <string> matchingCharacterIds, ref bool foundFirst, ref int currentBlockCount, ref int minProximity, ref BookScript firstBook, ref BookScript prevBook, ref Block firstBlock, ref Block prevBlock, ref BookScript secondBook, ref Block secondBlock, ref bool breakOutOfBothLoops, ref string prevCharacterId, ref ISet <string> prevMatchingCharacterIds)
        {
            if (foundFirst)
            {
                if (currentBlockCount < minProximity)
                {
                    minProximity = currentBlockCount;
                    firstBook    = prevBook;
                    firstBlock   = prevBlock;
                    secondBook   = book;
                    secondBlock  = block;

                    if (minProximity == 0)
                    {
                        breakOutOfBothLoops = true;
                        return(true);
                    }
                }
            }
            else
            {
                firstBook   = book;
                firstBlock  = block;
                secondBook  = book;
                secondBlock = block;
            }
            foundFirst               = true;
            currentBlockCount        = 0;
            prevCharacterId          = characterId;
            prevMatchingCharacterIds = matchingCharacterIds;

            prevBook  = book;
            prevBlock = block;
            return(false);
        }
Пример #4
0
        public static List <BookScript> TestQuoteSystem(Project project, QuoteSystem altQuoteSystem)
        {
            var cvInfo = new CombinedCharacterVerseData(project);

            var unparsedBlocks = Unparse(project.Books);

            var blocksInBook = unparsedBlocks.ToDictionary(bookidBlocksPair => bookidBlocksPair.Key.BookId, bookidBlocksPair => bookidBlocksPair.Value);

            var parsedBlocksByBook = new ConcurrentDictionary <string, BookScript>();

            SetQuoteSystem(altQuoteSystem);
            Parallel.ForEach(blocksInBook, bookidBlocksPair =>
            {
                var bookId = bookidBlocksPair.Key;
                var blocks =
                    new QuoteParser(cvInfo, bookId, bookidBlocksPair.Value, project.Versification).Parse().ToList();
                var parsedBook = new BookScript(bookId, blocks);
                parsedBlocksByBook.AddOrUpdate(bookId, parsedBook, (s, script) => parsedBook);
            });

            // sort the list
            var bookScripts = parsedBlocksByBook.Values.ToList();

            bookScripts.Sort((a, b) => BCVRef.BookToNumber(a.BookId).CompareTo(BCVRef.BookToNumber(b.BookId)));
            return(bookScripts);
        }
        public void CleanUpOrphanedMultiBlockQuoteStati_NoneFollowedByNonStart_NonStartChangedToNone(MultiBlockQuote continuingStatus)
        {
            var block1 = CreateTestBlock(1, MultiBlockQuote.None);
            var block2 = CreateTestBlock(2, continuingStatus);

            var block1Original = block1.Clone();
            var block2Original = block2.Clone();

            var book = new BookScript {
                Blocks = new List <Block> {
                    block1, block2
                }
            };
            var books = new List <BookScript> {
                book
            };

            ProjectDataMigrator.CleanUpOrphanedMultiBlockQuoteStati(books);

            Assert.AreEqual(2, book.Blocks.Count);
            Assert.AreEqual(block1Original.GetText(true), block1.GetText(true));
            Assert.AreEqual(block2Original.GetText(true), block2.GetText(true));
            Assert.AreEqual(MultiBlockQuote.None, block1.MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.None, block2.MultiBlockQuote);
        }
Пример #6
0
        /// <summary>Populates bookData with the standard characters that should be allowed to be grouped together without causing proximity problems</summary>
        private void GetStandardCharactersToTreatAsOne(BookScript book, ProjectDramatizationPreferences dramatizationPreferences,
                                                       Dictionary <ExtraBiblicalMaterialSpeakerOption, HashSet <string> > bookData)
        {
            if (m_strictlyAdhereToNarratorPreferences)
            {
                AddOrNew(bookData, dramatizationPreferences.BookTitleAndChapterDramatization, CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.BookOrChapter));
                AddOrNew(bookData, dramatizationPreferences.SectionHeadDramatization, CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.ExtraBiblical));
                AddOrNew(bookData, dramatizationPreferences.BookIntroductionsDramatization, CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.Intro));
                bookData.Remove(ExtraBiblicalMaterialSpeakerOption.Omitted);

                // add the narrator to its group if there are others there already
                if (bookData.ContainsKey(ExtraBiblicalMaterialSpeakerOption.Narrator))
                {
                    bookData[ExtraBiblicalMaterialSpeakerOption.Narrator].Add(book.NarratorCharacterId);
                }
            }
            else
            {
                AddOrNew(bookData, ExtraBiblicalMaterialSpeakerOption.Narrator, book.NarratorCharacterId);
                if (dramatizationPreferences.BookTitleAndChapterDramatization != ExtraBiblicalMaterialSpeakerOption.Omitted)
                {
                    bookData[ExtraBiblicalMaterialSpeakerOption.Narrator].Add(CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.BookOrChapter));
                }
                if (dramatizationPreferences.SectionHeadDramatization != ExtraBiblicalMaterialSpeakerOption.Omitted)
                {
                    bookData[ExtraBiblicalMaterialSpeakerOption.Narrator].Add(CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.ExtraBiblical));
                }
                if (dramatizationPreferences.BookIntroductionsDramatization != ExtraBiblicalMaterialSpeakerOption.Omitted)
                {
                    bookData[ExtraBiblicalMaterialSpeakerOption.Narrator].Add(CharacterVerseData.GetStandardCharacterId(book.BookId, CharacterVerseData.StandardCharacter.Intro));
                }
            }
        }
        public void CleanUpOrphanedMultiBlockQuoteStati_TwoStartsFollowedByNone_BothStartsChangedToNone()
        {
            var block1 = CreateTestBlock(1, MultiBlockQuote.None);
            var block2 = CreateTestBlock(2, MultiBlockQuote.Start);
            var block3 = CreateTestBlock(3, MultiBlockQuote.Start);
            var block4 = CreateTestBlock(4, MultiBlockQuote.None);

            var block1Original = block1.Clone();
            var block2Original = block2.Clone();
            var block3Original = block3.Clone();
            var block4Original = block4.Clone();

            var book = new BookScript {
                Blocks = new List <Block> {
                    block1, block2, block3, block4
                }
            };
            var books = new List <BookScript> {
                book
            };

            ProjectDataMigrator.CleanUpOrphanedMultiBlockQuoteStati(books);

            Assert.AreEqual(4, book.Blocks.Count);
            Assert.AreEqual(block1Original.GetText(true), block1.GetText(true));
            Assert.AreEqual(block2Original.GetText(true), block2.GetText(true));
            Assert.AreEqual(block3Original.GetText(true), block3.GetText(true));
            Assert.AreEqual(block4Original.GetText(true), block4.GetText(true));
            Assert.AreEqual(MultiBlockQuote.None, block1.MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.None, block2.MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.None, block3.MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.None, block4.MultiBlockQuote);
        }
Пример #8
0
        public void CleanUpOrphanedMultiBlockQuoteStati_NoneFollowedByMultipleNonStarts_NonStartsChangedToNone()
        {
            var block1 = CreateTestBlock(1, MultiBlockQuote.None);
            var block2 = CreateTestBlock(2, MultiBlockQuote.Continuation);
            var block3 = CreateTestBlock(3, MultiBlockQuote.Continuation);

            var block1Original = block1.Clone();
            var block2Original = block2.Clone();
            var block3Original = block3.Clone();

            var book = new BookScript("MAT", new List <Block> {
                block1, block2, block3
            });
            var books = new List <BookScript> {
                book
            };

            ProjectDataMigrator.CleanUpOrphanedMultiBlockQuoteStati(books);

            Assert.AreEqual(3, book.Blocks.Count);
            Assert.AreEqual(block1Original.GetText(true), block1.GetText(true));
            Assert.AreEqual(block2Original.GetText(true), block2.GetText(true));
            Assert.AreEqual(block3Original.GetText(true), block3.GetText(true));
            Assert.AreEqual(MultiBlockQuote.None, block1.MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.None, block2.MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.None, block3.MultiBlockQuote);
        }
Пример #9
0
        public void AssignAll_MultiverseQuoteWithTwoCharactersInFirstVerseAndOneCharacterInSecond_AssignedToCharacterRatherThanAmbiguous()
        {
            var cvInfo = MockRepository.GenerateMock <ICharacterVerseInfo>();

            cvInfo.Stub(x => x.GetCharacters("MAT", 17, 26, 0, 26, ScrVers.English)).Return(new[]
            {
                new CharacterVerse(new BCVRef(40, 17, 26), "Peter (Simon)", null, null, false),
                new CharacterVerse(new BCVRef(40, 17, 26), "Jesus", null, null, false),
            });
            cvInfo.Stub(x => x.GetCharacters("MAT", 17, 27, 0, 27, ScrVers.English)).Return(new[]
            {
                new CharacterVerse(new BCVRef(40, 17, 27), "Jesus", null, null, false)
            });

            var bookScript = new BookScript
            {
                BookId = "MAT",
                Blocks = new List <Block>
                {
                    new Block
                    {
                        ChapterNumber           = 17,
                        InitialStartVerseNumber = 26,
                        BlockElements           = new List <BlockElement>
                        {
                            new ScriptText("This quote starts in verse 26 ")
                        },
                        CharacterId     = "Jesus",
                        MultiBlockQuote = MultiBlockQuote.Start
                    },
                    new Block
                    {
                        ChapterNumber           = 17,
                        InitialStartVerseNumber = 27,
                        BlockElements           = new List <BlockElement>
                        {
                            new Verse("27"),
                            new ScriptText("and continues in verse 27")
                        },
                        CharacterId     = "Jesus",
                        MultiBlockQuote = MultiBlockQuote.Continuation
                    }
                }
            };

            Assert.AreEqual("Jesus", bookScript.Blocks[0].CharacterId);
            Assert.AreEqual("Jesus", bookScript.Blocks[1].CharacterId);
            Assert.AreEqual(MultiBlockQuote.Start, bookScript.Blocks[0].MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.Continuation, bookScript.Blocks[1].MultiBlockQuote);

            var characterAssigner = new CharacterAssigner(cvInfo);

            characterAssigner.AssignAll(new[] { bookScript }, ScrVers.English, false);

            Assert.AreEqual("Jesus", bookScript.Blocks[0].CharacterId);
            Assert.AreEqual("Jesus", bookScript.Blocks[1].CharacterId);
            Assert.AreEqual(MultiBlockQuote.Start, bookScript.Blocks[0].MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.Continuation, bookScript.Blocks[1].MultiBlockQuote);
        }
Пример #10
0
        public void AssignAll_MultiverseQuoteWithTwoCharactersInFirstVerseAndOneCharacterInSecond_AssignedToCharacterRatherThanAmbiguous(ScrVersType vers)
        {
            var versification = new ScrVers(vers);
            var cvInfo        = MockRepository.GenerateMock <ICharacterVerseInfo>();

            StubGetCharactersForSingleVerse(cvInfo, kMATbookNum, 17, 26, versification, new[]
            {
                new CharacterSpeakingMode("Peter (Simon)", null, null, false),
                new CharacterSpeakingMode("Jesus", null, null, false),
            });
            StubGetCharactersForSingleVerse(cvInfo, kMATbookNum, 17, 27, versification, new[]
            {
                new CharacterSpeakingMode("Jesus", null, null, false)
            });

            var bookScript = new BookScript("MAT",
                                            new List <Block>
            {
                new Block
                {
                    ChapterNumber           = 17,
                    InitialStartVerseNumber = 26,
                    BlockElements           = new List <BlockElement>
                    {
                        new ScriptText("This quote starts in verse 26 ")
                    },
                    CharacterId     = "Jesus",
                    MultiBlockQuote = MultiBlockQuote.Start
                },
                new Block
                {
                    ChapterNumber           = 17,
                    InitialStartVerseNumber = 27,
                    BlockElements           = new List <BlockElement>
                    {
                        new Verse("27"),
                        new ScriptText("and continues in verse 27")
                    },
                    CharacterId     = "Jesus",
                    MultiBlockQuote = MultiBlockQuote.Continuation
                }
            },
                                            versification
                                            );

            Assert.AreEqual("Jesus", bookScript.Blocks[0].CharacterId);
            Assert.AreEqual("Jesus", bookScript.Blocks[1].CharacterId);
            Assert.AreEqual(MultiBlockQuote.Start, bookScript.Blocks[0].MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.Continuation, bookScript.Blocks[1].MultiBlockQuote);

            var characterAssigner = new CharacterAssigner(cvInfo);

            characterAssigner.AssignAll(new[] { bookScript }, false);

            Assert.AreEqual("Jesus", bookScript.Blocks[0].CharacterId);
            Assert.AreEqual("Jesus", bookScript.Blocks[1].CharacterId);
            Assert.AreEqual(MultiBlockQuote.Start, bookScript.Blocks[0].MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.Continuation, bookScript.Blocks[1].MultiBlockQuote);
        }
Пример #11
0
        public void SetBookIdForChapterBlocks_Normal_AllChapterBlocksGetBookIdSet(string chapterStyleTag)
        {
            var genesis = new BookScript("GEN",
                                         new List <Block>
            {
                CreateTestBlock(CharacterVerseData.GetStandardCharacterId("GEN", CharacterVerseData.StandardCharacter.BookOrChapter)),
                CreateChapterBlock("GEN", 1, chapterStyleTag),
                CreateTestBlock(1, MultiBlockQuote.None),
                CreateChapterBlock("GEN", 2, chapterStyleTag),
                CreateTestBlock(1, MultiBlockQuote.None),
                CreateTestBlock(2, MultiBlockQuote.None),
                CreateChapterBlock("GEN", 3, chapterStyleTag),
                CreateTestBlock(1, MultiBlockQuote.None),
                CreateChapterBlock("GEN", 4, chapterStyleTag),
                CreateTestBlock(1, MultiBlockQuote.None),
                CreateTestBlock(2, MultiBlockQuote.None),
                CreateTestBlock(3, MultiBlockQuote.None),
                CreateTestBlock(4, MultiBlockQuote.None),
                CreateChapterBlock("GEN", 5, chapterStyleTag),
                CreateTestBlock(1, MultiBlockQuote.None),
            }
                                         );
            var matthew = new BookScript("MAT",
                                         new List <Block>
            {
                CreateTestBlock(CharacterVerseData.GetStandardCharacterId("MAT", CharacterVerseData.StandardCharacter.BookOrChapter)),
                CreateChapterBlock("MAT", 1, chapterStyleTag),
                CreateTestBlock(2, MultiBlockQuote.None),
                CreateTestBlock(1, MultiBlockQuote.None),
                CreateChapterBlock("MAT", 2, chapterStyleTag),
                CreateTestBlock(1, MultiBlockQuote.None),
                CreateTestBlock(2, MultiBlockQuote.None),
                CreateTestBlock(3, MultiBlockQuote.None),
                CreateTestBlock(4, MultiBlockQuote.None),
                CreateChapterBlock("MAT", 3, chapterStyleTag),
                CreateTestBlock(1, MultiBlockQuote.None),
                CreateChapterBlock("MAT", 4, chapterStyleTag),
                CreateTestBlock(1, MultiBlockQuote.None),
                CreateChapterBlock("MAT", 5, chapterStyleTag),
                CreateTestBlock(1, MultiBlockQuote.None),
                CreateTestBlock(2, MultiBlockQuote.None),
                CreateChapterBlock("MAT", 6, chapterStyleTag),
                CreateTestBlock(1, MultiBlockQuote.None),
                CreateTestBlock(2, MultiBlockQuote.None),
                CreateChapterBlock("MAT", 20, chapterStyleTag),
                CreateTestBlock(1, MultiBlockQuote.None),
                CreateTestBlock(2, MultiBlockQuote.None),
                CreateTestBlock(3, MultiBlockQuote.None),
            }
                                         );

            var books = new List <BookScript> {
                genesis, matthew
            };

            ProjectDataMigrator.SetBookIdForChapterBlocks(books);

            Assert.IsFalse(books.SelectMany(book => book.Blocks).Where(bl => bl.StyleTag == "c" || bl.StyleTag == "cl").Any(bl => bl.BookCode == null));
        }
Пример #12
0
 public MinimumProximity(int numberOfBlocks, BookScript firstBook, BookScript secondBook, Block firstBlock, Block secondBlock)
 {
     NumberOfBlocks = numberOfBlocks;
     m_firstBook    = firstBook;
     m_secondBook   = secondBook;
     m_firstBlock   = firstBlock;
     m_secondBlock  = secondBlock;
 }
Пример #13
0
 public MinimumProximity(MinimumProximity copyFrom)
 {
     NumberOfBlocks = copyFrom.NumberOfBlocks;
     m_firstBook    = copyFrom.m_firstBook;
     m_secondBook   = copyFrom.m_secondBook;
     m_firstBlock   = copyFrom.m_firstBlock;
     m_secondBlock  = copyFrom.m_secondBlock;
 }
        public void MigrateInvalidMultiBlockQuoteDataToVersion88_SplitDoesntStartWithMultiBlockStart_DataUnchanged()
        {
            var block1 = new Block
            {
                BlockElements = new List <BlockElement>
                {
                    new Verse("1"),
                    new ScriptText("Text of verse 1. "),
                },
                MultiBlockQuote = MultiBlockQuote.None,
                SplitId         = 0,
            };
            var block2 = new Block
            {
                BlockElements = new List <BlockElement>
                {
                    new Verse("2"),
                    new ScriptText("Text of verse 2. "),
                },
                MultiBlockQuote = MultiBlockQuote.Start,
                SplitId         = 0,
            };
            var block3 = new Block
            {
                BlockElements = new List <BlockElement>
                {
                    new Verse("3"),
                    new ScriptText("Text of verse 3. "),
                },
                MultiBlockQuote = MultiBlockQuote.Continuation,
                SplitId         = 0,
            };

            var block1Original = block1.Clone();
            var block2Original = block2.Clone();
            var block3Original = block3.Clone();

            var book = new BookScript {
                Blocks = new List <Block> {
                    block1, block2, block3
                }
            };
            var books = new List <BookScript> {
                book
            };

            ProjectDataMigrator.MigrateInvalidMultiBlockQuoteData(books);

            Assert.AreEqual(3, book.Blocks.Count);
            Assert.AreEqual(block1Original.GetText(true), block1.GetText(true));
            Assert.AreEqual(block2Original.GetText(true), block2.GetText(true));
            Assert.AreEqual(block3Original.GetText(true), block3.GetText(true));
            Assert.AreEqual(MultiBlockQuote.None, block1.MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.Start, block2.MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.Continuation, block3.MultiBlockQuote);
        }
Пример #15
0
    void SwapBooks(int one, int two)
    {
        BookScript bookOne = bookScripts[one];
        BookScript bookTwo = bookScripts[two];

        bookOne.Move(bookTwo.model.transform.localScale.x, one == selected);
        bookTwo.Move(-bookOne.model.transform.localScale.x, two == selected);
        bookScripts[one] = bookTwo;
        bookScripts[two] = bookOne;
    }
        private Block Split(BookScript book, Block blockToSplit, string verse, int pos)
        {
            var newBlock = book.SplitBlock(blockToSplit, verse, pos, true, "Jesus");

            newBlock.Delivery          = "giving orders";
            newBlock.UserConfirmed     = true;
            blockToSplit.UserConfirmed = true;
            Assert.AreEqual(newBlock.SplitId, blockToSplit.SplitId);
            return(newBlock);
        }
Пример #17
0
        public void MigrateInvalidMultiBlockQuoteDataToVersion88_SplitWithMultiBlockStartAndNone_ChangedToNoneAndStart(MultiBlockQuote lastBlockMultiBlockQuote)
        {
            var block1 = new Block
            {
                BlockElements = new List <BlockElement>
                {
                    new Verse("1"),
                    new ScriptText("Text of verse 1. "),
                },
                MultiBlockQuote = MultiBlockQuote.Start,
                SplitId         = 0,
            };
            var block2 = new Block
            {
                BlockElements = new List <BlockElement>
                {
                    new Verse("2"),
                    new ScriptText("Text of verse 2. "),
                },
                MultiBlockQuote = MultiBlockQuote.None,
                SplitId         = 0,
            };
            var block3 = new Block
            {
                BlockElements = new List <BlockElement>
                {
                    new Verse("3"),
                    new ScriptText("Text of verse 3. "),
                },
                MultiBlockQuote = lastBlockMultiBlockQuote
            };

            var block1Original = block1.Clone();
            var block2Original = block2.Clone();
            var block3Original = block3.Clone();

            var book = new BookScript("MAT", new List <Block> {
                block1, block2, block3
            });
            var books = new List <BookScript> {
                book
            };

            ProjectDataMigrator.MigrateInvalidMultiBlockQuoteData(books);

            Assert.AreEqual(3, book.Blocks.Count);
            Assert.AreEqual(block1Original.GetText(true), block1.GetText(true));
            Assert.AreEqual(block2Original.GetText(true), block2.GetText(true));
            Assert.AreEqual(block3Original.GetText(true), block3.GetText(true));
            Assert.AreEqual(MultiBlockQuote.None, block1.MultiBlockQuote);
            Assert.AreEqual(MultiBlockQuote.Start, block2.MultiBlockQuote);
            Assert.AreEqual(lastBlockMultiBlockQuote, block3.MultiBlockQuote);
        }
Пример #18
0
        private string BuildBookHtml(BookScript book)
        {
            var bldr = new StringBuilder();

            bldr.AppendFormat("<div id=\"{0}\" class=\"book\">", book.BookId);
            foreach (var unappliedSplit in book.UnappliedSplits)
            {
                bldr.Append(BuildUnappliedSplitHtml(book.BookId, unappliedSplit.ToList()));
            }
            bldr.Append("</div>");
            return(bldr.ToString());
        }
Пример #19
0
 /// <summary>
 /// Registers the BookScript as the book object to be used in the game. If
 /// this returns false, that means that a book was already registered and
 /// was not changed.
 /// </summary>
 /// <returns><c>true</c>, if book was registered, <c>false</c> otherwise.</returns>
 /// <param name="book">The book.</param>
 public bool RegisterBook(BookScript book)
 {
     if (m_book == null || m_book == book)
     {
         m_book = book;
         return(true);
     }
     else
     {
         Debug.LogWarning("Duplicate BookScript detected.");
         return(false);
     }
 }
Пример #20
0
        public void SetUp()
        {
            var blockA      = new Block("ip");
            var blockB      = new Block("p", 1, 1);
            var blockC      = new Block("p", 2, 7);
            var bookScriptA = new BookScript("LUK", new List <Block> {
                blockA, blockB, blockC
            });
            var blockD      = new Block("ip");
            var blockE      = new Block("p", 1, 1);
            var blockF      = new Block("p", 5, 7);
            var blockG      = new Block("p", 5, 7);
            var bookScriptB = new BookScript("ROM", new List <Block> {
                blockD, blockE, blockF, blockG
            });

            m_books = new List <BookScript> {
                bookScriptA, bookScriptB
            };

            m_navigator = new BlockNavigator(m_books);

            var blockH = new Block("ip")
            {
                MultiBlockQuote = MultiBlockQuote.None
            };
            var blockI = new Block("p", 1, 1)
            {
                MultiBlockQuote = MultiBlockQuote.Start
            };
            var blockJ = new Block("p", 1, 1)
            {
                MultiBlockQuote = MultiBlockQuote.Continuation
            };
            var blockK = new Block("p", 1, 2)
            {
                MultiBlockQuote = MultiBlockQuote.Continuation
            };
            var blockL = new Block("p", 1, 2)
            {
                MultiBlockQuote = MultiBlockQuote.None
            };
            var bookScriptJud = new BookScript("JUD", new List <Block> {
                blockH, blockI, blockJ, blockK, blockL
            });
            var bookList = new List <BookScript> {
                bookScriptJud
            };

            m_navigatorForMultiBlockTests = new BlockNavigator(bookList);
        }
        public void AssignNarratorForRemainingBlocksInBook(BookScript book)
        {
            foreach (var block in book.GetScriptBlocks().Where(b => b.CharacterIsUnclear()))
            {
                block.SetStandardCharacter(book.BookId, CharacterVerseData.StandardCharacter.Narrator);
                block.UserConfirmed = true;

                if (block.MultiBlockQuote != MultiBlockQuote.Continuation)
                {
                    m_assignedBlocks++;
                    OnAssignedBlocksIncremented();
                }
            }
        }
Пример #22
0
 void Awake()
 {
     if (bookControl == null)
     {
         DontDestroyOnLoad(gameObject);
         bookControl = this;
     }
     else
     {
         numBooks = bookControl.numBooks - 1;
         updateBookTracker();
         Destroy(gameObject);
     }
 }
Пример #23
0
        public void PeekPreviousBlock_SameBook()
        {
            var firstBook   = m_books.First();
            var firstBlock  = firstBook[0];
            var secondBlock = firstBook[1];

            m_navigator.CurrentBlock = secondBlock;
            BookScript currentBook  = m_navigator.CurrentBook;
            Block      currentBlock = m_navigator.CurrentBlock;

            Assert.AreEqual(firstBlock, m_navigator.GetPreviousBlock());
            Assert.AreEqual(currentBlock, m_navigator.CurrentBlock);
            Assert.AreEqual(currentBook, m_navigator.CurrentBook);
        }
Пример #24
0
    void AddCombinedBook(string title, BookScript one, BookScript two)
    {
        GameObject book = Instantiate(bookPrefab);
        float      x    = (one.transform.localPosition.x - one.model.transform.localScale.x / 2 + two.transform.localPosition.x - two.model.transform.localScale.x / 2) / 2;

        book.transform.Translate(x, 0, 0);
        BookScript bookScript = book.GetComponent <BookScript>();

        bookScript.SetTitle(title);
        float width = Random.Range(1, 1.5f);

        bookScript.SetScale(width, Random.Range(.66f, .9f));
        bookScript.SetJacketColor(Color.HSVToRGB(Random.value, Random.Range(.2f, .5f), Random.Range(.2f, .75f)));
        bookScript.isDead = true;
    }
Пример #25
0
 public void SetBooks(BookScript book1, BookScript book2)
 {
     isRed   = false;
     isGreen = false;
     isValid = false;
     score   = 0;
     validWords.Clear();
     scoreWords.text        = "";
     scorePoints.text       = "";
     this.book1             = book1;
     this.book2             = book2;
     titlesDisplayText.text = book1.title.ToUpper() + '\n' + book2.title.ToUpper();
     inputField.text        = "";
     inputOverlay.text      = "";
 }
Пример #26
0
        public void PeekNextBlock_NextBook()
        {
            var firstBook  = m_books.First();
            var lastBlock  = firstBook.GetScriptBlocks().Last();
            var secondBook = m_books[1];
            var firstBlock = secondBook[0];

            m_navigator.CurrentBlock = lastBlock;
            BookScript currentBook  = m_navigator.CurrentBook;
            Block      currentBlock = m_navigator.CurrentBlock;

            Assert.AreEqual(firstBlock, m_navigator.GetNextBlock());
            Assert.AreEqual(currentBlock, m_navigator.CurrentBlock);
            Assert.AreEqual(currentBook, m_navigator.CurrentBook);
        }
Пример #27
0
    void AddBook(float spawnTweenOffset)
    {
        GameObject book = Instantiate(bookPrefab);

        book.transform.Translate(rightX, 0, 0);
        BookScript bookScript = book.GetComponent <BookScript>();

        bookScript.SetTitle(dictionaryScript.RandomTitle(16 + booksSpawned / 2));
        bookScripts.Add(bookScript);
        float width = Random.Range(1, 1.5f);

        bookScript.SetScale(width, Random.Range(.66f, .9f));
        bookScript.SetJacketColor(Color.HSVToRGB(Random.value, Random.Range(.2f, .5f), Random.Range(.2f, .75f)));
        bookScript.SpawnTween(spawnTweenOffset);
        rightX += width;
    }
Пример #28
0
    void Start()
    {
        Instance = this;
        Application.targetFrameRate = 60;
        AudioManager.Instance.Play("intro");
        Invoke("PlayLoopDelayed", 43.385f);
        currPage      = 0;
        keyboardInput = new UserKeyboardInput();
        touchInput    = new UserIPadInput(dirText, dotText, dirMagnitudeText);
        inputStrategy = keyboardInput;

        for (int i = 2; i < animator.Length - 1; i++)
        {
            animator[i].Play("Hide");
        }
    }
        public void GetHtml_SingleSplitInSingleBook_HtmlIsCorrect()
        {
            var blocks = new List <Block> {
                NewChapterBlock(8, "MRK"),
                new Block("p", 8, 25)
                {
                    CharacterId = Narrator("MRK")
                }
                .AddVerse(25, "Torang do saluhutna diida. ")
                // Offset:               1         2         3         4         5         6
                // Offset:     0123456789012345678901234567890123456789012345678901234567890123456789
                // Split:                                                     |
                .AddVerse(26, "Laos disuru ma ibana muli tu jabuna, didok ma: Unang bongoti huta i! ")
            };

            var mark = new BookScript("MRK", blocks, ScrVers.English);

            var blockToSplit = mark.GetFirstBlockForVerse(8, 26);
            var newBlock     = Split(mark, blockToSplit, "26", 47);

            mark.UnappliedBlockSplits_DoNotUse.Add(new List <Block> {
                blockToSplit, newBlock
            });

            var model  = new UnappliedSplitsViewModel(new [] { mark.Clone() }, false);
            var xmlDoc = new XmlDocument();
            var html   = model.GetHtml();

            xmlDoc.LoadXml(html.Replace("&nbsp;", "&#160;"));
            var body    = xmlDoc.ChildNodes[0].SelectSingleNode("body");
            var bookDiv = body.FirstChild;

            Assert.AreEqual("div", bookDiv.Name);
            Assert.AreEqual("MRK", bookDiv.Attributes.GetNamedItem("id").Value);
            var splitsDiv = bookDiv.ChildNodes[0];

            Assert.AreEqual("splits", splitsDiv.Attributes.GetNamedItem("class").Value);
            Assert.AreEqual("MRK 8:25-26", splitsDiv.ChildNodes[0].Value);
            var preSplitBlockDiv = splitsDiv.ChildNodes[1];

            VerifyBlockHtml(preSplitBlockDiv, blockToSplit, false);
            Assert.AreEqual(" //SPLIT// ", splitsDiv.ChildNodes[2].Value);
            var postSplitBlockDiv = splitsDiv.ChildNodes[3];

            VerifyBlockHtml(postSplitBlockDiv, newBlock, false);
            Assert.AreEqual("\u00A0", bookDiv.ChildNodes[1].InnerText);
        }
Пример #30
0
        private void Assign(BookScript bookScript, ScrVers versification, bool setDefaultForMultipleChoiceCharacters, bool overwriteUserConfirmed)
        {
            var bookNum = BCVRef.BookToNumber(bookScript.BookId);

            foreach (Block block in bookScript.GetScriptBlocks().Where(b => !b.CharacterIsStandard))
            {
                if (!block.UserConfirmed || overwriteUserConfirmed)
                {
                    block.SetCharacterAndDelivery(m_cvInfo.GetCharacters(bookScript.BookId, block.ChapterNumber, block.InitialStartVerseNumber, block.InitialEndVerseNumber, block.LastVerse, versification));
                }
                else if (setDefaultForMultipleChoiceCharacters)
                {
                    block.UseDefaultForMultipleChoiceCharacter(() => block.GetMatchingCharacter(m_cvInfo, bookNum, versification));
                }
            }

            bookScript.CleanUpMultiBlockQuotes(versification);
        }