Пример #1
0
    def test_debug_print_ast(self):
        """ Test if the ``debug_print_ast`` work as expected. """
        # RootTreeNode
        #  - level 1 child 1
        #   - level 2 child 1
        #     - level 3 child 1
        #  - level 1 child 2
        root_tree_node = RootTreeNode()
        l1_tree_node = root_tree_node.new_child('level_1_child_1',
                                                DummyTreeNode,
                                                attrs={'foo': 'bar'})
        root_tree_node.new_child('level_1_child_2', DummyTreeNode)
        l2_tree_node = l1_tree_node.new_child('level_2_child_1', DummyTreeNode)
        l2_tree_node.new_child('level_3_child_1',
                               DummyTreeNode,
                               content='Hello world!')

        output_returned = []

        def _print_to_str(*args):
            output_returned.append(' '.join(args))

        debug_print_ast(root_tree_node, print_fnct=_print_to_str)

        expected_output = [
            "RootTreeNode(name=\"None\", attrs={}, content='', len(children)=2) ",
            "    DummyTreeNode(name=\"level_1_child_1\", attrs={'foo': 'bar'}, content='', len(children)=1) ",
            "        DummyTreeNode(name=\"level_2_child_1\", attrs={}, content='', len(children)=1) ",
            "            DummyTreeNode(name=\"level_3_child_1\", attrs={}, content='Hello world!', len(children)=0) ",
            "    DummyTreeNode(name=\"level_1_child_2\", attrs={}, content='', len(children)=0) "
        ]
        self.maxDiff = None
        self.assertEqual(expected_output, output_returned)
Пример #2
0
    def test_debug_print_ast_with_erroneous_parent(self):
        """ Test if the ``debug_print_ast`` work as expected when an erroneous aprent is found. """
        # RootTreeNode
        #  - level 1 child 1
        #   - level 2 child 1
        #     - level 3 child 1
        #  - level 1 child 2
        root_tree_node = RootTreeNode()
        l1_tree_node = root_tree_node.new_child('level_1_child_1', DummyTreeNode, attrs={'foo': 'bar'})
        root_tree_node.new_child('level_1_child_2', DummyTreeNode)
        l2_tree_node = l1_tree_node.new_child('level_2_child_1', DummyTreeNode)
        l3_tree_node = l2_tree_node.new_child('level_3_child_1', DummyTreeNode, content='Hello world!')

        # Add some oops
        l3_tree_node.parent = root_tree_node

        output_returned = []

        def _print_to_str(*args):
            output_returned.append(' '.join(args))
        debug_print_ast(root_tree_node, print_fnct=_print_to_str)

        expected_output = [
            "RootTreeNode(name=\"None\", attrs={}, content='', len(children)=2) ",
            "    DummyTreeNode(name=\"level_1_child_1\", attrs={'foo': 'bar'}, content='', len(children)=1) ",
            "        DummyTreeNode(name=\"level_2_child_1\", attrs={}, content='', len(children)=1) ",
            "            DummyTreeNode(name=\"level_3_child_1\", attrs={}, content='Hello world!', len(children)=0) !! Parent mismatch !!",
            "    DummyTreeNode(name=\"level_1_child_2\", attrs={}, content='', len(children)=0) "
        ]
        self.maxDiff = None
        self.assertEqual(expected_output, output_returned)
Пример #3
0
    # Get user input
    print(
        'Use CTRL+C, CTRL+D or simply type "EOF" on a single line to stop text input'
    )
    text = []
    try:
        while True:
            line = input('skcode> ')
            if line == 'EOF':
                break
            text.append(line)
    except (KeyboardInterrupt, EOFError):
        pass
    text = '\n'.join(text)

    # Parse text
    ast = parse_skcode(text)

    # Dump parsing info
    print('----- Input text -----')
    print(text)
    print('----- Document tree -----')
    debug_print_ast(ast)
    print('----- HTML output -----')
    print(render_to_html(ast))
    print('----- TEXT output -----')
    print(render_to_text(ast))

    # End of script
    input('Press enter to exit.')
Пример #4
0
    print('-- SkCode testing terminal --')

    # Get user input
    print('Use CTRL+C, CTRL+D or simply type "EOF" on a single line to stop text input')
    text = []
    try:
        while True:
            line = input('skcode> ')
            if line == 'EOF':
                break
            text.append(line)
    except (KeyboardInterrupt, EOFError):
        pass
    text = '\n'.join(text)

    # Parse text
    ast = parse_skcode(text)

    # Dump parsing info
    print('----- Input text -----')
    print(text)
    print('----- Document tree -----')
    debug_print_ast(ast)
    print('----- HTML output -----')
    print(render_to_html(ast))
    print('----- TEXT output -----')
    print(render_to_text(ast))

    # End of script
    input('Press enter to exit.')