示例#1
0
    def test_partial_ordering(self):
        """Always respect explicit order and prefer built-in ordering.

    Undeclared built-in sections will be inserted into explicit order according
    to default built-in ordering. The about section should come after custom
    sections unless explicitly ordered."""
        plugin = module.VimPlugin('myplugin')
        main_module = module.Module('myplugin', plugin)
        intro = Block(vimdoc.SECTION)
        intro.Local(name='Introduction', id='intro')
        # Configure explicit order.
        intro.Global(order=['custom1', 'intro', 'custom2'])
        commands = Block(vimdoc.SECTION)
        commands.Local(name='Commands', id='commands')
        about = Block(vimdoc.SECTION)
        about.Local(name='About', id='about')
        custom1 = Block(vimdoc.SECTION)
        custom1.Local(name='Custom1', id='custom1')
        custom2 = Block(vimdoc.SECTION)
        custom2.Local(name='Custom2', id='custom2')
        # Merge in arbitrary order.
        for section in [commands, custom2, about, intro, custom1]:
            main_module.Merge(section)
        main_module.Close()
        self.assertEqual([custom1, intro, commands, custom2, about],
                         list(main_module.Chunks()))
示例#2
0
 def test_ordered_child(self):
     """Child sections should not be included in @order."""
     plugin = module.VimPlugin('myplugin')
     main_module = module.Module('myplugin', plugin)
     first = Block(vimdoc.SECTION)
     first.Local(name='Section 1', id='first')
     second = Block(vimdoc.SECTION)
     second.Local(name='Section 2', id='second', parent_id='first')
     first.Global(order=['first', 'second'])
     main_module.Merge(first)
     main_module.Merge(second)
     with self.assertRaises(error.OrderedChildSections) as cm:
         main_module.Close()
     self.assertEqual(
         ("Child section second included in ordering ['first', 'second'].",
          ), cm.exception.args)
示例#3
0
 def test_manual_section_ordering(self):
     """Sections should be ordered according to explicitly configured order."""
     plugin = module.VimPlugin('myplugin')
     main_module = module.Module('myplugin', plugin)
     intro = Block(vimdoc.SECTION)
     intro.Local(name='Introduction', id='intro')
     # Configure explicit order.
     intro.Global(order=['commands', 'about', 'intro'])
     commands = Block(vimdoc.SECTION)
     commands.Local(name='Commands', id='commands')
     about = Block(vimdoc.SECTION)
     about.Local(name='About', id='about')
     # Merge in arbitrary order.
     main_module.Merge(commands)
     main_module.Merge(about)
     main_module.Merge(intro)
     main_module.Close()
     self.assertEqual([commands, about, intro], list(main_module.Chunks()))
示例#4
0
 def test_child_sections(self):
     """Sections should be ordered after their parents."""
     plugin = module.VimPlugin('myplugin')
     main_module = module.Module('myplugin', plugin)
     first = Block(vimdoc.SECTION)
     first.Local(name='Section 1', id='first')
     # Configure explicit order.
     first.Global(order=['first', 'second', 'third'])
     second = Block(vimdoc.SECTION)
     second.Local(name='Section 2', id='second')
     third = Block(vimdoc.SECTION)
     third.Local(name='Section 3', id='third')
     child11 = Block(vimdoc.SECTION)
     child11.Local(name='child11', id='child11', parent_id='first')
     child12 = Block(vimdoc.SECTION)
     child12.Local(name='child12', id='child12', parent_id='first')
     child21 = Block(vimdoc.SECTION)
     child21.Local(name='child21', id='child21', parent_id='second')
     # Merge in arbitrary order.
     for m in [second, child12, third, child11, first, child21]:
         main_module.Merge(m)
     main_module.Close()
     self.assertEqual([first, child11, child12, second, child21, third],
                      list(main_module.Chunks()))