# -*- coding: utf-8 -*- #! /usr/bin/env python # $Id: test_section_headers.py 6476 2010-11-10 13:43:50Z milde $ # Author: David Goodger # Copyright: This module has been placed in the public domain. """Tests for states.py.""" from .__init__ import DocutilsTestSupport def suite(): s = DocutilsTestSupport.ParserTestSuite() s.generateTests(totest) return s totest = {} totest['section_headers'] = [ ["""\ Title ===== Paragraph. """, """\
Title <paragraph> Paragraph. """], ["""\ Title ===== Paragraph (no blank line). """, """\ <document source="test data"> <section ids="title" names="title"> <title> Title <paragraph> Paragraph (no blank line). """], ["""\ Paragraph. Title ===== Paragraph. """, """\ <document source="test data"> <paragraph> Paragraph. <section ids="title" names="title"> <title> Title <paragraph> Paragraph. """], ["""\ Test unexpected section titles. Title ===== Paragraph. ----- Title ----- Paragraph. """, """\ <document source="test data"> <paragraph> Test unexpected section titles. <block_quote> <system_message level="4" line="4" source="test data" type="SEVERE"> <paragraph> Unexpected section title. <literal_block xml:space="preserve"> Title ===== <paragraph> Paragraph. <system_message level="4" line="7" source="test data" type="SEVERE"> <paragraph> Unexpected section title or transition. <literal_block xml:space="preserve"> ----- <system_message level="4" line="9" source="test data" type="SEVERE"> <paragraph> Unexpected section title. <literal_block xml:space="preserve"> Title ----- <paragraph> Paragraph. """], ["""\ Title ==== Test short underline. """, """\ <document source="test data"> <section ids="title" names="title"> <title> Title <system_message level="2" line="2" source="test data" type="WARNING"> <paragraph> Title underline too short. <literal_block xml:space="preserve"> Title ==== <paragraph> Test short underline. """], ["""\ à with combining varia ====================== Do not count combining chars in title column width. """, """\ <document source="test data"> <section ids="a-with-combining-varia" names="a\u0300\ with\ combining\ varia"> <title> à with combining varia <paragraph> Do not count combining chars in title column width. """], ["""\ ===== Title ===== Test overline title. """, """\ <document source="test data"> <section ids="title" names="title"> <title> Title <paragraph> Test overline title. """], ["""\ ======= Title ======= Test overline title with inset. """, """\ <document source="test data"> <section ids="title" names="title"> <title> Title <paragraph> Test overline title with inset. """], ["""\ ======================== Test Missing Underline """, """\ <document source="test data"> <system_message level="4" line="1" source="test data" type="SEVERE"> <paragraph> Incomplete section title. <literal_block xml:space="preserve"> ======================== Test Missing Underline """], ["""\ ======================== Test Missing Underline """, """\ <document source="test data"> <system_message level="4" line="1" source="test data" type="SEVERE"> <paragraph> Missing matching underline for section title overline. <literal_block xml:space="preserve"> ======================== Test Missing Underline """], ["""\ ======= Title Test missing underline, with paragraph. """, """\ <document source="test data"> <system_message level="4" line="1" source="test data" type="SEVERE"> <paragraph> Missing matching underline for section title overline. <literal_block xml:space="preserve"> ======= Title <paragraph> Test missing underline, with paragraph. """], ["""\ ======= Long Title ======= Test long title and space normalization. """, """\ <document source="test data"> <section ids="long-title" names="long\ title"> <title> Long Title <system_message level="2" line="1" source="test data" type="WARNING"> <paragraph> Title overline too short. <literal_block xml:space="preserve"> ======= Long Title ======= <paragraph> Test long title and space normalization. """], ["""\ ======= Title ------- Paragraph. """, """\ <document source="test data"> <system_message level="4" line="1" source="test data" type="SEVERE"> <paragraph> Title overline & underline mismatch. <literal_block xml:space="preserve"> ======= Title ------- <paragraph> Paragraph. """], ["""\ ======================== ======================== Test missing titles; blank line in-between. ======================== ======================== """, """\ <document source="test data"> <transition> <transition> <paragraph> Test missing titles; blank line in-between. <transition> <transition> """], ["""\ ======================== ======================== Test missing titles; nothing in-between. ======================== ======================== """, """\ <document source="test data"> <system_message level="3" line="1" source="test data" type="ERROR"> <paragraph> Invalid section title or transition marker. <literal_block xml:space="preserve"> ======================== ======================== <paragraph> Test missing titles; nothing in-between. <system_message level="3" line="6" source="test data" type="ERROR"> <paragraph> Invalid section title or transition marker. <literal_block xml:space="preserve"> ======================== ======================== """], ["""\ .. Test return to existing, highest-level section (Title 3). Title 1 ======= Paragraph 1. Title 2 ------- Paragraph 2. Title 3 ======= Paragraph 3. Title 4 ------- Paragraph 4. """, """\ <document source="test data"> <comment xml:space="preserve"> Test return to existing, highest-level section (Title 3). <section ids="title-1" names="title\ 1"> <title> Title 1 <paragraph> Paragraph 1. <section ids="title-2" names="title\ 2"> <title> Title 2 <paragraph> Paragraph 2. <section ids="title-3" names="title\ 3"> <title> Title 3 <paragraph> Paragraph 3. <section ids="title-4" names="title\ 4"> <title> Title 4 <paragraph> Paragraph 4. """], ["""\ Test return to existing, highest-level section (Title 3, with overlines). ======= Title 1 ======= Paragraph 1. ------- Title 2 ------- Paragraph 2. ======= Title 3 ======= Paragraph 3. ------- Title 4 ------- Paragraph 4. """, """\ <document source="test data"> <paragraph> Test return to existing, highest-level section (Title 3, with overlines). <section ids="title-1" names="title\ 1"> <title> Title 1 <paragraph> Paragraph 1. <section ids="title-2" names="title\ 2"> <title> Title 2 <paragraph> Paragraph 2. <section ids="title-3" names="title\ 3"> <title> Title 3 <paragraph> Paragraph 3. <section ids="title-4" names="title\ 4"> <title> Title 4 <paragraph> Paragraph 4. """], ["""\ Test return to existing, higher-level section (Title 4). Title 1 ======= Paragraph 1. Title 2 ------- Paragraph 2. Title 3 ``````` Paragraph 3. Title 4 ------- Paragraph 4. """, """\ <document source="test data"> <paragraph> Test return to existing, higher-level section (Title 4). <section ids="title-1" names="title\ 1"> <title> Title 1 <paragraph> Paragraph 1. <section ids="title-2" names="title\ 2"> <title> Title 2 <paragraph> Paragraph 2. <section ids="title-3" names="title\ 3"> <title> Title 3 <paragraph> Paragraph 3. <section ids="title-4" names="title\ 4"> <title> Title 4 <paragraph> Paragraph 4. """], ["""\ Test bad subsection order (Title 4). Title 1 ======= Paragraph 1. Title 2 ------- Paragraph 2. Title 3 ======= Paragraph 3. Title 4 ``````` Paragraph 4. """, """\ <document source="test data"> <paragraph> Test bad subsection order (Title 4). <section ids="title-1" names="title\ 1"> <title> Title 1 <paragraph> Paragraph 1. <section ids="title-2" names="title\ 2"> <title> Title 2 <paragraph> Paragraph 2. <section ids="title-3" names="title\ 3"> <title> Title 3 <paragraph> Paragraph 3. <system_message level="4" line="15" source="test data" type="SEVERE"> <paragraph> Title level inconsistent: <literal_block xml:space="preserve"> Title 4 ``````` <paragraph> Paragraph 4. """], ["""\ Test bad subsection order (Title 4, with overlines). ======= Title 1 ======= Paragraph 1. ------- Title 2 ------- Paragraph 2. ======= Title 3 ======= Paragraph 3. ``````` Title 4 ``````` Paragraph 4. """, """\ <document source="test data"> <paragraph> Test bad subsection order (Title 4, with overlines). <section ids="title-1" names="title\ 1"> <title> Title 1 <paragraph> Paragraph 1. <section ids="title-2" names="title\ 2"> <title> Title 2 <paragraph> Paragraph 2. <section ids="title-3" names="title\ 3"> <title> Title 3 <paragraph> Paragraph 3. <system_message level="4" line="19" source="test data" type="SEVERE"> <paragraph> Title level inconsistent: <literal_block xml:space="preserve"> ``````` Title 4 ``````` <paragraph> Paragraph 4. """], ["""\ Title containing *inline* ``markup`` ==================================== Paragraph. """, """\ <document source="test data"> <section ids="title-containing-inline-markup" names="title\ containing\ inline\ markup"> <title> Title containing \n\ <emphasis> inline \n\ <literal> markup <paragraph> Paragraph. """], ["""\ 1. Numbered Title ================= Paragraph. """, """\ <document source="test data"> <section ids="numbered-title" names="1.\ numbered\ title"> <title> 1. Numbered Title <paragraph> Paragraph. """], ["""\ 1. Item 1. 2. Item 2. 3. Numbered Title ================= Paragraph. """, """\ <document source="test data"> <enumerated_list enumtype="arabic" prefix="" suffix="."> <list_item> <paragraph> Item 1. <list_item> <paragraph> Item 2. <system_message level="2" line="3" source="test data" type="WARNING"> <paragraph> Enumerated list ends without a blank line; unexpected unindent. <section ids="numbered-title" names="3.\ numbered\ title"> <title> 3. Numbered Title <paragraph> Paragraph. """], ["""\ ABC === Short title. """, """\ <document source="test data"> <section ids="abc" names="abc"> <title> ABC <paragraph> Short title. """], ["""\ ABC == Underline too short. """, """\ <document source="test data"> <system_message level="1" line="2" source="test data" type="INFO"> <paragraph> Possible title underline, too short for the title. Treating it as ordinary text because it's so short. <paragraph> ABC == <paragraph> Underline too short. """], ["""\ == ABC == Over & underline too short. """, """\ <document source="test data"> <system_message level="1" line="1" source="test data" type="INFO"> <paragraph> Possible incomplete section title. Treating the overline as ordinary text because it's so short. <paragraph> == ABC == <paragraph> Over & underline too short. """], ["""\ == ABC Overline too short, no underline. """, """\ <document source="test data"> <system_message level="1" line="1" source="test data" type="INFO"> <paragraph> Possible incomplete section title. Treating the overline as ordinary text because it's so short. <paragraph> == ABC <paragraph> Overline too short, no underline. """], ["""\ == ABC """, """\ <document source="test data"> <system_message level="1" line="1" source="test data" type="INFO"> <paragraph> Possible incomplete section title. Treating the overline as ordinary text because it's so short. <paragraph> == ABC """], ["""\ == Not a title: a definition list item. """, """\ <document source="test data"> <system_message level="1" line="1" source="test data" type="INFO"> <paragraph> Possible incomplete section title. Treating the overline as ordinary text because it's so short. <definition_list> <definition_list_item> <term> == <definition> <paragraph> Not a title: a definition list item. """], ["""\ == Not a title: a definition list item. -- Another definition list item. It's in a different list, but that's an acceptable limitation given that this will probably never happen in real life. The next line will trigger a warning: == """, """\ <document source="test data"> <system_message level="1" line="1" source="test data" type="INFO"> <paragraph> Possible incomplete section title. Treating the overline as ordinary text because it's so short. <definition_list> <definition_list_item> <term> == <definition> <paragraph> Not a title: a definition list item. <system_message level="2" line="3" source="test data" type="WARNING"> <paragraph> Definition list ends without a blank line; unexpected unindent. <system_message level="1" line="3" source="test data" type="INFO"> <paragraph> Possible incomplete section title. Treating the overline as ordinary text because it's so short. <definition_list> <definition_list_item> <term> -- <definition> <paragraph> Another definition list item. It's in a different list, but that's an acceptable limitation given that this will probably never happen in real life. <paragraph> The next line will trigger a warning: <system_message level="2" line="9" source="test data" type="WARNING"> <paragraph> Definition list ends without a blank line; unexpected unindent. <paragraph> == """], ["""\ Paragraph == ABC == Over & underline too short. """, """\ <document source="test data"> <paragraph> Paragraph <block_quote> <system_message level="1" line="3" source="test data" type="INFO"> <paragraph> Unexpected possible title overline or transition. Treating it as ordinary text because it's so short. <paragraph> == ABC == <paragraph> Over & underline too short. """], ["""\ Paragraph ABC == Underline too short. """, """\ <document source="test data"> <paragraph> Paragraph <block_quote> <paragraph> ABC == <paragraph> Underline too short. """], ["""\ ... ... ... --- ... ... ... """, """\ <document source="test data"> <system_message level="1" line="1" source="test data" type="INFO"> <paragraph> Possible incomplete section title. Treating the overline as ordinary text because it's so short. <section dupnames="..." ids="id1"> <title> ... <system_message level="1" line="4" source="test data" type="INFO"> <paragraph> Possible incomplete section title. Treating the overline as ordinary text because it's so short. <section dupnames="..." ids="id2"> <title> ... <system_message backrefs="id2" level="1" line="5" source="test data" type="INFO"> <paragraph> Duplicate implicit target name: "...". <system_message level="1" line="7" source="test data" type="INFO"> <paragraph> Possible incomplete section title. Treating the overline as ordinary text because it's so short. <system_message level="1" line="7" source="test data" type="INFO"> <paragraph> Possible incomplete section title. Treating the overline as ordinary text because it's so short. <section dupnames="..." ids="id3"> <title> ... <system_message backrefs="id3" level="1" line="8" source="test data" type="INFO"> <paragraph> Duplicate implicit target name: "...". <paragraph> ... """], ["""\ .. Hi .. ... Yo ... Ho """, """\ <document source="test data"> <comment xml:space="preserve"> <system_message level="2" line="2" source="test data" type="WARNING"> <paragraph> Explicit markup ends without a blank line; unexpected unindent. <section ids="hi" names="hi"> <title> Hi <section ids="yo" names="yo"> <title> Yo <paragraph> Ho """], ["""\ Empty Section ============= """, """\ <document source="test data"> <section ids="empty-section" names="empty\ section"> <title> Empty Section """], ["""\ === One === The bubble-up parser strategy conflicts with short titles (<= 3 char-long over- & underlines). === Two === The parser currently contains a work-around kludge. Without it, the parser ends up in an infinite loop. """, """\ <document source="test data"> <section ids="one" names="one"> <title> One <paragraph> The bubble-up parser strategy conflicts with short titles (<= 3 char-long over- & underlines). <section ids="two" names="two"> <title> Two <paragraph> The parser currently contains a work-around kludge. Without it, the parser ends up in an infinite loop. """], ["""\ """, """\ <document source="test data"> """], ] if __name__ == '__main__': import unittest unittest.main(defaultTest='suite')