def test_get_online_chapter_with_excessive_values(self):
     bible = WebExtractor()
     text1 = bible.search('Ecclesiastes 1')
     text2 = bible.get_chapter('Ecclesiastes', -1)
     self.assertEqual(text1, text2, 'Passage is incorrect')
     # This should scale down to the last chapter number of the book
     text1 = bible.search('Ecclesiastes 12')
     text2 = bible.get_chapter('Ecclesiastes', 1000)
     self.assertEqual(text1, text2, 'Passage is incorrect')
    def test_get_online_chapters(self):
        bible = WebExtractor()
        options = self.get_alternative_interface_options()
        for option in options:
            bible.translation = option['translation']
            bible.show_passage_numbers = option['show_passage_numbers']

            text1 = bible.get_chapter('Amos', 8) + '\n' + bible.get_chapter(
                'Amos', 9)
            text2 = bible.get_chapters('Amos', 8, 9)
            # Chapters interface should be the same as requesting the individual chapters with newline separators
            self.assertEqual(text1, text2, 'Passage is incorrect')
 def test_get_online_passage_range_with_intermediate_chapters(self):
     bible = WebExtractor()
     text1 = bible.get_passage('Daniel', 3, 30) + '\n' + \
         bible.get_chapter('Daniel', 4) + '\n' + \
         bible.get_passage('Daniel', 5, 1)
     text2 = bible.get_passage_range('Daniel', 3, 30, 5, 1)
     # A passage range with intermediate chapters should be the same as manually putting all the passages together
     self.assertEqual(text1, text2, 'Passage is incorrect')
    def test_get_online_chapter(self):
        bible = WebExtractor()
        options = self.get_alternative_interface_options()
        for option in options:
            bible.translation = option['translation']
            bible.show_passage_numbers = option['show_passage_numbers']

            text1 = bible.search('Daniel 5')
            text2 = bible.get_chapter('Daniel', 5)
            self.assertEqual(text1, text2, 'Passage is incorrect')
 def test_get_chapter_list_with_ascii_punctuation(self):
     bible = WebExtractor(output_as_list=True,
                          translation=self.get_test_translation(),
                          use_ascii_punctuation=True)
     text = bible.get_chapter('Ecclesiastes', 2)
     static_file = '{0}/test_get_chapter_list_with_ascii_punctuation.txt'.format(
         self.get_test_directory())
     with open(static_file, 'r', encoding='utf-8') as file:
         eccl = file.read()
     # This chapter doesn't have Unicode single quotes, but should have the other translated characters
     self.assertEqual(eccl, ''.join(text), 'Passage is incorrect')
 def test_get_base_chapter_list(self):
     online_bible = WebExtractor(output_as_list=True,
                                 show_passage_numbers=False,
                                 translation=self.get_test_translation())
     bible = BaseExtractor(file_reading_function=yaml_file_interface.read,
                           file_extension=self.get_test_file_extension(),
                           output_as_list=True,
                           show_passage_numbers=False,
                           default_directory=self.get_test_directory(),
                           translation=self.get_test_translation())
     text = bible.get_chapter('Ecclesiastes', 11)
     eccl = online_bible.get_chapter('Ecclesiastes', 11)
     # Results should be identical between the web and base extractor
     # Ignoring passage numbers, as the web extractor omits this for the first passage of each chapter
     self.assertEqual(eccl, text, 'Passage is incorrect')
 def test_get_chapter_list(self):
     bible = WebExtractor(output_as_list=True)
     text = bible.get_chapter('Ecclesiastes', 11)
     eccl11 = [
         'Ship your grain across the sea;\n'
         '    after many days you may receive a return.\n',
         '\u00b2 Invest in seven ventures, yes, in eight;\n'
         '    you do not know what disaster may come upon the land. \n',
         '\u00b3 If clouds are full of water,\n'
         '    they pour rain on the earth.\n'
         'Whether a tree falls to the south or to the north,\n'
         '    in the place where it falls, there it will lie.\n',
         '\u2074 Whoever watches the wind will not plant;\n'
         '    whoever looks at the clouds will not reap. \n',
         '\u2075 As you do not know the path of the wind,\n'
         '    or how the body is formed in a mother\u2019s womb,\n'
         'so you cannot understand the work of God,\n'
         '    the Maker of all things. \n',
         '\u2076 Sow your seed in the morning,\n'
         '    and at evening let your hands not be idle,\n'
         'for you do not know which will succeed,\n'
         '    whether this or that,\n'
         '    or whether both will do equally well. \n',
         '\u2077 Light is sweet,\n'
         '    and it pleases the eyes to see the sun.\n',
         '\u2078 However many years anyone may live,\n'
         '    let them enjoy them all.\nBut let them remember the days of darkness,\n'
         '    for there will be many.\n'
         '    Everything to come is meaningless. \n',
         '\u2079 You who are young, be happy while you are young,\n'
         '    and let your heart give you joy in the days of your youth.\n'
         'Follow the ways of your heart\n'
         '    and whatever your eyes see,\n'
         'but know that for all these things\n'
         '    God will bring you into judgment.\n',
         '\u00b9\u2070 So then, banish anxiety from your heart\n'
         '    and cast off the troubles of your body,\n'
         '    for youth and vigor are meaningless.'
     ]
     self.assertEqual(eccl11, text, 'Passage is incorrect')
 def test_get_chapters_list(self):
     bible = WebExtractor(output_as_list=True)
     text = bible.get_chapters('1 John', 1, 2)
     john = bible.get_chapter('1 John', 1) + bible.get_chapter('1 John', 2)
     # Getting multiple sequential chapters should be the same as appending multiple chapters manually
     self.assertEqual(john, text, 'Passage is incorrect')