def test_no_matching_lines(self): lines = """\ >> Episode 1 Lorem ipsum. Line 2. >> Episode 2 Exciting ending! What will happen next!""".splitlines() with self.assertRaises(ChapterError): get_chapters_data(lines, self.prologuename, self.chapter_strings)
def test_chapter_on_last_line(self): lines = """\ >> CHAPTER 1 Lorem ipsum. Line 2. >> CHAPTER 2""".splitlines() result_linenumbers, result_items = get_chapters_data(lines, self.prologuename, self.chapter_strings) self.assertEqual(self.linenumbers, result_linenumbers) items = ["prologue\n 0", "1\n 4", "2\n 0"] self.assertEqual(items, result_items)
def test_mixed_chapter_formats(self): lines = """\ >> CHAPTER 1 Lorem ipsum. Line 2. >> CHAPTER 2 - Fish Exciting ending! What will happen next!""".splitlines() result_linenumbers, result_items = get_chapters_data(lines, self.prologuename, self.chapter_strings) self.assertEqual(self.linenumbers, result_linenumbers) items = ["prologue\n 0", "1\n 4", "2 - Fish\n 6"] self.assertEqual(items, result_items)
def test_default_run(self): result_linenumbers, result_items = \ get_chapters_data(self.lines, self.prologuename, self.chapter_strings) self.assertEqual(self.linenumbers, result_linenumbers) self.assertEqual(self.items, result_items)
def test_invalid_chapter_regex(self): chapter_strings = [ ['>> +CHAPTER (?P<num>\\d+)( ?[:-] (?P<name>.+))?', '{num} - {name}'], ] with self.assertRaisesRegex(ChapterError, 'broken settings'): get_chapters_data(self.lines, self.prologuename, chapter_strings)
def test_no_lines(self): with self.assertRaises(ChapterError): get_chapters_data([], self.prologuename, self.chapter_strings)