Ejemplo n.º 1
0
class TestBaseVisitorWithStack:
    class S:
        def __init__(self):
            self.data = []
            self.indent = 2

        def add(self, value):
            self.data.append(value)

    def __init__(self):
        self.v = BaseVisitor('test.jpx', {}, 2)
        self.v.visit_Str = lambda n: self.v.output(n.s)

        self.s = self.S()
        self.v.push(self.s)

    def test_pop(self):
        self.v.push('foo')
        self.v.pop()
        assert self.s.data == ['foo']

    def test_output(self):
        self.v.output('foo')
        assert self.s.data == ['foo']

    def test_indent(self):
        self.v.indent()
        assert self.s.data == ['    ']

    def test_finish(self):
        self.v.finish()
        assert self.s.data == [';\n']

    def test_group_defaults_empty(self):
        self.v.group([])
        assert ''.join(self.s.data) == '()'

    def test_group_defaults_one(self):
        self.v.group(['foo'])
        assert ''.join(self.s.data) == '(foo)'

    def test_group_default_two(self):
        self.v.group(['foo', 'bar'])
        assert ''.join(self.s.data) == '(foo bar)'

    def test_group_default_three(self):
        self.v.group(['foo', 'bar', 'baz'])
        assert ''.join(self.s.data) == '(foo bar baz)'

    def test_group_non_defaults_empty(self):
        self.v.group([], prefix='[', infix='+', infix_node=ast.Str('quux'), suffix=']')
        assert ''.join(self.s.data) == '[]'

    def test_group_non_defaults_one(self):
        self.v.group(['foo'], prefix='[', infix='+', infix_node=ast.Str('quux'), suffix=']')
        assert ''.join(self.s.data) == '[foo]'

    def test_group_non_default_two(self):
        self.v.group(['foo', 'bar'], prefix='[', infix='+', infix_node=ast.Str('quux'), suffix=']')
        assert ''.join(self.s.data) == '[foo+quux+bar]'

    def test_group_non_default_three(self):
        self.v.group(['foo', 'bar', 'baz'], prefix='[', infix='+', infix_node=ast.Str('quux'), suffix=']')
        assert ''.join(self.s.data) == '[foo+quux+bar+quux+baz]'

    def test_group_node_value(self):
        self.v.group([ast.Str('foo')])
        assert ''.join(self.s.data) == '(foo)'

    def test_block(self):
        self.v.block([])
        assert self.s.data == []

    def test_block_with_node(self):
        self.v.block([ast.Str('foo')])
        assert self.s.data == ['foo']

    def test_block_with_context(self):
        s = self.S()
        self.v.block([], s)
        assert self.v.stack[-1].data == [s]
Ejemplo n.º 2
0
class TestBaseVisitorWithStack:
    class S:
        def __init__(self):
            self.data = []
            self.indent = 2

        def add(self, value):
            self.data.append(value)

    def __init__(self):
        self.v = BaseVisitor('test.jpx', {}, 2)
        self.v.visit_Str = lambda n: self.v.output(n.s)

        self.s = self.S()
        self.v.push(self.s)

    def test_pop(self):
        self.v.push('foo')
        self.v.pop()
        assert self.s.data == ['foo']

    def test_output(self):
        self.v.output('foo')
        assert self.s.data == ['foo']

    def test_indent(self):
        self.v.indent()
        assert self.s.data == ['    ']

    def test_finish(self):
        self.v.finish()
        assert self.s.data == [';\n']

    def test_group_defaults_empty(self):
        self.v.group([])
        assert ''.join(self.s.data) == '()'

    def test_group_defaults_one(self):
        self.v.group(['foo'])
        assert ''.join(self.s.data) == '(foo)'

    def test_group_default_two(self):
        self.v.group(['foo', 'bar'])
        assert ''.join(self.s.data) == '(foo bar)'

    def test_group_default_three(self):
        self.v.group(['foo', 'bar', 'baz'])
        assert ''.join(self.s.data) == '(foo bar baz)'

    def test_group_non_defaults_empty(self):
        self.v.group([],
                     prefix='[',
                     infix='+',
                     infix_node=ast.Str('quux'),
                     suffix=']')
        assert ''.join(self.s.data) == '[]'

    def test_group_non_defaults_one(self):
        self.v.group(['foo'],
                     prefix='[',
                     infix='+',
                     infix_node=ast.Str('quux'),
                     suffix=']')
        assert ''.join(self.s.data) == '[foo]'

    def test_group_non_default_two(self):
        self.v.group(['foo', 'bar'],
                     prefix='[',
                     infix='+',
                     infix_node=ast.Str('quux'),
                     suffix=']')
        assert ''.join(self.s.data) == '[foo+quux+bar]'

    def test_group_non_default_three(self):
        self.v.group(['foo', 'bar', 'baz'],
                     prefix='[',
                     infix='+',
                     infix_node=ast.Str('quux'),
                     suffix=']')
        assert ''.join(self.s.data) == '[foo+quux+bar+quux+baz]'

    def test_group_node_value(self):
        self.v.group([ast.Str('foo')])
        assert ''.join(self.s.data) == '(foo)'

    def test_block(self):
        self.v.block([])
        assert self.s.data == []

    def test_block_with_node(self):
        self.v.block([ast.Str('foo')])
        assert self.s.data == ['foo']

    def test_block_with_context(self):
        s = self.S()
        self.v.block([], s)
        assert self.v.stack[-1].data == [s]