public void Parse_line_with_invalid_starting_chars_should_throw() { var parser = new BibleParser(); var stream = StringToStream("** Strange Line **"); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
public void Parse_chapter_reference_must_go_in_order() { var parser = new BibleParser(); var stream = StringToStream("B:Job\r\n1:1 First\r\n3:1 Third?"); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
public void Parse_chapter_reference_not_starting_with_1_must_throw(string chapterNum) { var parser = new BibleParser(); var stream = StringToStream("B:Job\r\n" + chapterNum + ":1 Zeroth chapter."); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
private static IBible CreateBible(string bibleText = "B:Job\r\n1:1 First verse\r\n1:2 Second VERSE!\r\n2:1 Third Verse.\r\n2:2 Isn't a verse") { var parser = new BibleParser(); var encodedString = Encoding.ASCII.GetBytes(bibleText); var str = new MemoryStream(encodedString); return parser.Parse(str); }
public void Parse_with_Pre_Verse_with_next_chapter_should_parse() { var parser = new BibleParser(); var stream = StringToStream("B:Job\r\n1:1 First\r\nPre 2: Second."); var bible = parser.Parse(stream); Assert.That(bible.Books[BookName.Job].Chapters[1].Verses[0].IsPreVerse, Is.True); }
public void Parse_with_Pre_Verse_with_no_book_should_throw() { var parser = new BibleParser(); var stream = StringToStream("Pre 1: First, but with no book."); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
public void Parse_with_Pre_Verse_should_parse() { var parser = new BibleParser(); var stream = StringToStream("B:Job\r\nPre 1:Pre verse content."); var bible = parser.Parse(stream); Assert.That(bible.Books[BookName.Job].Chapters[0].Verses[0].IsPreVerse, Is.True); }
public void Parse_with_Pre_Verse_with_chapter_not_next_chapter_should_throw() { var parser = new BibleParser(); var stream = StringToStream("B:Job\r\n1:1 First\r\nPre 1: Incorrect."); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
public void Parse_verse_with_internal_spaces_should_remove_spaces() { var parser = new BibleParser(); var stream = StringToStream("B:Job\r\n1:1 A verse with internal spaces removed. "); var bible = parser.Parse(stream); var bibleText = bible.Books[BookName.Job].Chapters[0].Verses[0].Text; Assert.That(bibleText, Is.EqualTo("A verse with internal spaces removed.")); }
public void Parse_with_Post_Verse_without_chapter_should_throw() { var parser = new BibleParser(); var stream = StringToStream("B:Job\r\nPost: Post data."); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
public void Parse_verse_reference_with_invalid_verse_number_should_throw() { var parser = new BibleParser(); var stream = StringToStream("B:Job\r\n1:1ST First"); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
public void Parse_verse_reference_not_starting_with_1_must_throw(string verseNum) { var parser = new BibleParser(); var stream = StringToStream("B:Job\r\n1:" + verseNum + " Zeroth verse."); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
public void Parse_with_invalid_book_name_should_throw() { var parser = new BibleParser(); var stream = StringToStream("B:NotABookName"); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
public void Parse_with_multiple_Post_Verse_in_same_chapter_should_throw() { var parser = new BibleParser(); var stream = StringToStream("B:Job\r\n1:1 Data\r\nPost: Post\r\nPost: Post2"); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
public void Parse_with_duplicate_book_names_should_throw() { var parser = new BibleParser(); var stream = StringToStream("B:Genesis\r\nB:Genesis"); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
public void Parse_with_blank_lines_should_return_Bible() { var parser = new BibleParser(); var stream = StringToStream("\r\nB:Genesis\r\n\r\n1:1 Verse 1"); var bible = parser.Parse(stream); Assert.That(bible.Books[BookName.Genesis].Chapters[0].Verses[0].Text, Is.EqualTo("Verse 1")); }
public void Parse_verse_with_no_space_should_throw() { var parser = new BibleParser(); var stream = StringToStream("B:Titus\r\n1:1NoSpaceHere."); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
public void Parse_with_verse_data_after_Post_Verse_should_throw() { var parser = new BibleParser(); var stream = StringToStream("B:Job\r\n1:1 Data\r\nPost: Post\r\n1:3 More data"); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
public void Parse_pre_verse_data_with_additional_verses_should_parse() { var parser = new BibleParser(); var stream = StringToStream("B:Job\r\nPre 1: Pre verse data.\r\n1:1 More verse data."); var bible = parser.Parse(stream); var chapter = bible.Books[BookName.Job].Chapters[0]; var preVerseText = chapter.Verses[0].Text; var verseText = chapter.Verses[1].Text; Assert.That(preVerseText, Is.EqualTo("Pre verse data.")); Assert.That(verseText, Is.EqualTo("More verse data.")); }
private static void Exercise_Parse_TestData(Action<IBible> assert) { var parser = new BibleParser(); var stream = StringToStream(TestData); var bible = parser.Parse(stream); assert(bible); }
public void Parse_with_Post_Verse_should_parse() { var parser = new BibleParser(); var stream = StringToStream("B:Job\r\n1:1 First\r\nPost: Post data."); var bible = parser.Parse(stream); Assert.That(bible.Books[BookName.Job].Chapters[0].Verses[1].IsPostVerse, Is.True); }
public void Parse_with_no_book_should_throw() { var parser = new BibleParser(); var stream = StringToStream("1:1 In the beginning God created the heaven and the earth."); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
public void Parse_verse_reference_with_no_colon_should_throw() { var parser = new BibleParser(); var stream = StringToStream("B:Job\r\n1*1 First"); Assert.Throws<ParseException>(() => parser.Parse(stream)); }
public void Parse_with_no_data_should_return_empty_Bible() { var parser = new BibleParser(); var stream = StringToStream(""); var bible = parser.Parse(stream); Assert.That(bible.Books.Count, Is.EqualTo(0)); }
private static bool ParseBible(out IBible bible) { bible = null; var args = Environment.GetCommandLineArgs(); if (args.Length < 2) { ShowHelp(); return false; } var fileName = args[1]; if (!File.Exists(fileName)) { Console.WriteLine("Input file '{0}' not found.", fileName); return false; } try { var parser = new BibleParser(); using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { bible = parser.Parse(stream); return true; } } catch (Exception ex) { Console.WriteLine("Failed to parse input file:"); Console.WriteLine(ex.Message); return false; } }