예제 #1
0
class TestSeparations(unittest.TestCase):
    list_format = lf.ListFormat(
        lf.HeaderAndIndentFormatWithNumbering(contents_indent_spaces=1),
        exactly_lib.util.textformat.structure.lists.Separations(
            num_blank_lines_between_elements=2,
            num_blank_lines_between_header_and_contents=1))

    def test_empty_list(self):
        items = []
        formatter = formatter_with_page_width(10)
        actual = formatter.format_header_value_list_according_to_format(
            items, self.list_format)
        self.assertEqual([], actual)

    def test_singleton_list(self):
        items = [header_only_item('header')]
        formatter = formatter_with_page_width(10)
        actual = formatter.format_header_value_list_according_to_format(
            items, self.list_format)
        self.assertEqual(['1. header'], actual)

    def test_multi_element_list__no_content(self):
        items = [header_only_item('header 1'), header_only_item('header 2')]
        formatter = formatter_with_page_width(20)
        actual = formatter.format_header_value_list_according_to_format(
            items, self.list_format)
        self.assertEqual(
            ['1. header 1', BLANK_LINE, BLANK_LINE, '2. header 2'], actual)

    def test_item_with_content(self):
        items = [item('header', [single_text_para('content')])]
        formatter = formatter_with_page_width(10)
        actual = formatter.format_header_value_list_according_to_format(
            items, self.list_format)
        self.assertEqual(['1. header', BLANK_LINE, ' content'], actual)
예제 #2
0
파일: lists.py 프로젝트: emilkarlen/exactly
 def test_header_text__element_number_2(self):
     formatter = sut.HeaderAndIndentFormatWithNumbering(
         contents_indent_spaces=5)
     actual = formatter.header_text(2, 1,
                                    CROSS_REF_TITLE_ONLY_TEXT_FORMATTER,
                                    text('header'))
     self.assertEqual('2. header', actual)
예제 #3
0
 def test_singleton_list(self):
     list_format = lf.ListFormat(
         lf.HeaderAndIndentFormatWithNumbering(contents_indent_spaces=1),
         NO_SEPARATIONS,
         indent_str='')
     items = [item('header', [single_text_para('2345678 abc def')])]
     formatter = formatter_with_page_width(10)
     actual = formatter.format_header_value_list_according_to_format(
         items, list_format)
     self.assertEqual(['1. header', ' 2345678', ' abc def'], actual)
예제 #4
0
    def test_with_content(self):
        list_format = lf.ListFormat(
            lf.HeaderAndIndentFormatWithNumbering(contents_indent_spaces=1),
            NO_SEPARATIONS)
        items = [item('header', [single_text_para('2345678')])]
        formatter = formatter_with_page_width(10)
        current_indent_before = formatter.wrapper.current_indent
        indent_stack_before = formatter.wrapper.saved_indents_stack.copy()
        formatter.format_header_value_list_according_to_format(
            items, list_format)
        self.assertEqual(current_indent_before,
                         formatter.wrapper.current_indent, 'Current indent')

        self.assertEqual(indent_stack_before,
                         formatter.wrapper.saved_indents_stack,
                         'Saved indents stack')
예제 #5
0
 def test_multi_element_list(self):
     list_format = lf.ListFormat(
         lf.HeaderAndIndentFormatWithNumbering(contents_indent_spaces=1),
         NO_SEPARATIONS,
         indent_str='')
     items = [
         item('h1', [single_text_para('2345678')]),
         item(
             'h2',
             [single_text_para('content 1'),
              single_text_para('content 2')])
     ]
     formatter = formatter_with_page_width(10)
     actual = formatter.format_header_value_list_according_to_format(
         items, list_format)
     self.assertEqual([
         '1. h1', ' 2345678', '2. h2', ' content 1', BLANK_LINE,
         ' content 2'
     ], actual)
예제 #6
0
class TestResolveListFormat(unittest.TestCase):
    LIST_FORMATS = lf.ListFormats(
        itemized_list_format=lf.ListFormat(
            lf.HeaderAndIndentFormatWithMarker('*'),
            NO_SEPARATIONS,
            indent_str=''),
        ordered_list_format=lf.ListFormat(
            lf.HeaderAndIndentFormatWithNumbering(),
            NO_SEPARATIONS,
            indent_str=''),
        variable_list_format=lf.ListFormat(lf.HeaderAndIndentFormatPlain(),
                                           NO_SEPARATIONS,
                                           indent_str=''))

    def test_itemized_list(self):
        items = [header_only_item('header')]
        formatter = sut.Formatter(CROSS_REF_TITLE_ONLY_TEXT_FORMATTER,
                                  sut.Wrapper(page_width=100),
                                  list_formats=self.LIST_FORMATS)
        actual = formatter.format_header_content_list(
            lists.HeaderContentList(items,
                                    lists.Format(
                                        lists.ListType.ITEMIZED_LIST)))
        self.assertEqual(['* header'], actual)

    def test_ordered_list(self):
        items = [header_only_item('header')]
        formatter = sut.Formatter(CROSS_REF_TITLE_ONLY_TEXT_FORMATTER,
                                  sut.Wrapper(page_width=100),
                                  list_formats=self.LIST_FORMATS)
        actual = formatter.format_header_content_list(
            lists.HeaderContentList(items,
                                    lists.Format(lists.ListType.ORDERED_LIST)))
        self.assertEqual(['1. header'], actual)

    def test_variable_list(self):
        items = [header_only_item('header')]
        formatter = sut.Formatter(CROSS_REF_TITLE_ONLY_TEXT_FORMATTER,
                                  sut.Wrapper(page_width=100),
                                  list_formats=self.LIST_FORMATS)
        actual = formatter.format_header_content_list(
            lists.HeaderContentList(items,
                                    lists.Format(
                                        lists.ListType.VARIABLE_LIST)))
        self.assertEqual(['header'], actual)

    def custom_indent(self):
        formatter = sut.Formatter(CROSS_REF_TITLE_ONLY_TEXT_FORMATTER,
                                  sut.Wrapper(page_width=100),
                                  list_formats=self.LIST_FORMATS)
        actual = formatter.resolve_list_format(
            lists.Format(lists.ListType.VARIABLE_LIST,
                         custom_indent_spaces=10))
        self.assertEqual(10 * ' ', actual.indent_str)

    def custom_separation(self):
        custom_separations = lists.Separations(10, 20)
        formatter = sut.Formatter(CROSS_REF_TITLE_ONLY_TEXT_FORMATTER,
                                  sut.Wrapper(page_width=100),
                                  list_formats=self.LIST_FORMATS)
        actual = formatter.resolve_list_format(
            lists.Format(lists.ListType.VARIABLE_LIST,
                         custom_separations=custom_separations))
        self.assertIs(custom_separations, actual.separations)
예제 #7
0
    ret_val = unittest.TestSuite()
    ret_val.addTest(unittest.makeSuite(TestHeaderOnlyListItemsWithNoLineWraps))
    ret_val.addTest(unittest.makeSuite(TestHeaderOnlyListItemsWithLineWraps))
    ret_val.addTest(unittest.makeSuite(TestContentFormatting))
    ret_val.addTest(unittest.makeSuite(TestThatIdentationIsNotModified))
    ret_val.addTest(unittest.makeSuite(TestResolveListFormat))
    ret_val.addTest(unittest.makeSuite(TestWholeListIndent))
    return ret_val


NO_SEPARATIONS = lists.Separations(
    num_blank_lines_between_elements=0,
    num_blank_lines_between_header_and_contents=0)

list_formatter_with_no_blank_lines = lf.ListFormat(
    lf.HeaderAndIndentFormatWithNumbering(contents_indent_spaces=3),
    NO_SEPARATIONS,
    indent_str='')


class TestHeaderOnlyListItemsWithNoLineWraps(unittest.TestCase):
    def test_empty_list(self):
        items = []
        formatter = formatter_with_page_width(10)
        actual = formatter.format_header_value_list_according_to_format(
            items, list_formatter_with_no_blank_lines)
        self.assertEqual([], actual)

    def test_singleton_list(self):
        items = [header_only_item('header')]
        formatter = formatter_with_page_width(10)
예제 #8
0
파일: lists.py 프로젝트: emilkarlen/exactly
 def test_following_header_lines_indent(self):
     formatter = sut.HeaderAndIndentFormatWithNumbering(
         contents_indent_spaces=7)
     actual = formatter.following_header_lines_indent(1, 10)
     self.assertEqual(len('1. ') * ' ', actual)
예제 #9
0
파일: lists.py 프로젝트: emilkarlen/exactly
 def test_value_indent(self):
     formatter = sut.HeaderAndIndentFormatWithNumbering(
         contents_indent_spaces=7)
     actual = formatter.contents_indent(1)
     self.assertEqual(7 * ' ', actual)