First but not optimized version of AstFormatDict
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
import pytest
|
||||
from core.sheerka.services.SheerkaRuleManager import FormatAstRawText, FormatAstVariable, FormatAstVariableNotFound, \
|
||||
FormatAstSequence, FormatAstList, FormatAstDict
|
||||
from out.AsStrVisitor import AsStrVisitor
|
||||
|
||||
from tests.TestUsingMemoryBasedSheerka import TestUsingMemoryBasedSheerka
|
||||
|
||||
|
||||
class TestAsStrVisitor(TestUsingMemoryBasedSheerka):
|
||||
|
||||
@pytest.mark.parametrize("format_text, expected", [
|
||||
(FormatAstRawText("hello word"), "hello word"),
|
||||
(FormatAstVariable('xxx', value="hello word"), "hello word"),
|
||||
(FormatAstVariable('xxx', value=1), "1"),
|
||||
(FormatAstVariable('xxx', value=1.5), "1.5"),
|
||||
(FormatAstVariable('xxx', value="hello word", debug=True), "'hello word'"),
|
||||
(FormatAstVariable('xxx', value=1, debug=True), "1"),
|
||||
(FormatAstVariable('xxx', value=1.5, debug=True), "1.5"),
|
||||
(FormatAstVariable('xxx', value=False, debug=True), "False"),
|
||||
(FormatAstVariableNotFound('va_name'), "\x1b[31mva_name\x1b[0m"),
|
||||
])
|
||||
def test_i_can_print_simple_ast(self, format_text, expected):
|
||||
visitor = AsStrVisitor()
|
||||
|
||||
res = visitor.visit(format_text)
|
||||
assert res == expected
|
||||
|
||||
def test_i_can_print_sequence(self, capsys):
|
||||
visitor = AsStrVisitor()
|
||||
sequence = FormatAstSequence([
|
||||
FormatAstRawText("hello word"),
|
||||
FormatAstVariable('xxx', value=1),
|
||||
FormatAstVariableNotFound('va_name'),
|
||||
FormatAstVariable('xxx', value="hello word", debug=True)
|
||||
])
|
||||
|
||||
res = visitor.visit(sequence)
|
||||
|
||||
assert res == "hello word1\x1b[31mva_name\x1b[0m'hello word'"
|
||||
|
||||
def test_i_can_print_list(self, capsys):
|
||||
visitor = AsStrVisitor()
|
||||
lst = FormatAstList("xxx", items=[
|
||||
FormatAstVariable('__item', index=0, value="first element"),
|
||||
FormatAstVariable('__item', index=1, value="second element", debug=True),
|
||||
])
|
||||
|
||||
res = visitor.visit(lst)
|
||||
|
||||
assert res == "first element\n'second element'"
|
||||
|
||||
def test_i_can_print_list_with_sub_items(self, capsys):
|
||||
visitor = AsStrVisitor()
|
||||
lst = FormatAstList("xxx", items=[
|
||||
FormatAstVariable('__item', index=0, value="first element"),
|
||||
FormatAstList("__sub", items=[
|
||||
FormatAstVariable('__item', index=0, value="sub item 1"),
|
||||
FormatAstVariable('__item', index=1, value="sub item 2"),
|
||||
]),
|
||||
FormatAstVariable('__item', index=1, value="second element", debug=True),
|
||||
])
|
||||
|
||||
res = visitor.visit(lst)
|
||||
|
||||
assert res == "first element\nsub item 1\nsub item 2\n'second element'"
|
||||
|
||||
def test_i_can_print_list_in_debug_mode(self, capsys):
|
||||
visitor = AsStrVisitor()
|
||||
lst = FormatAstList("xxx", debug=True, prefix="[", suffix="]", items=[
|
||||
FormatAstVariable('__item', index=0, value="first element", debug=True),
|
||||
FormatAstVariable('__item', index=1, value="second element", debug=True),
|
||||
])
|
||||
|
||||
res = visitor.visit(lst)
|
||||
|
||||
assert res == "['first element', 'second element']"
|
||||
|
||||
def test_i_can_print_expanded_list_in_debug_mode(self):
|
||||
visitor = AsStrVisitor(expand=True)
|
||||
lst = FormatAstList("xxx", debug=True, prefix="[", suffix="]", items=[
|
||||
FormatAstVariable('__item', index=0, value="first element", debug=True),
|
||||
FormatAstVariable('__item', index=1, value="second element", debug=True),
|
||||
])
|
||||
|
||||
res = visitor.visit(lst)
|
||||
|
||||
assert res == "['first element',\n'second element']"
|
||||
|
||||
def test_i_can_print_list_with_index(self):
|
||||
visitor = AsStrVisitor()
|
||||
lst = FormatAstList("xxx", show_index=True, items=[
|
||||
FormatAstVariable('__item', index=0, value="first element"),
|
||||
FormatAstVariable('__item', index=1, value="second element", debug=True),
|
||||
])
|
||||
|
||||
res = visitor.visit(lst)
|
||||
|
||||
assert res == "[0] first element\n[1] 'second element'"
|
||||
|
||||
def test_i_can_print_dict(self, capsys):
|
||||
visitor = AsStrVisitor()
|
||||
bag = FormatAstDict("xxx", items=[
|
||||
(FormatAstVariable('__key', index=0, value="key1"),
|
||||
FormatAstVariable('__value', index="key1", value=1)),
|
||||
(FormatAstVariable('__key', index=1, value="long_key2"),
|
||||
FormatAstVariable('__value', index="key2", value="value2")),
|
||||
])
|
||||
|
||||
res = visitor.visit(bag)
|
||||
|
||||
assert res == "key1 : 1\nlong_key2: value2"
|
||||
|
||||
def test_i_can_print_dict_in_debug_mode(self, capsys):
|
||||
visitor = AsStrVisitor()
|
||||
bag = FormatAstDict("xxx", debug=True, prefix="{", suffix="}", items=[
|
||||
(FormatAstVariable('__key', index=0, value="key1", debug=True),
|
||||
FormatAstVariable('__value', index="key1", value=1, debug=True)),
|
||||
(FormatAstVariable('__key', index=1, value="long_key2", debug=True),
|
||||
FormatAstVariable('__value', index="key2", value="value2", debug=True)),
|
||||
])
|
||||
|
||||
res = visitor.visit(bag)
|
||||
|
||||
assert res == "{'key1': 1, 'long_key2': 'value2'}"
|
||||
|
||||
def test_i_can_print_expanded_dict_in_debug_mode(self):
|
||||
visitor = AsStrVisitor(expand=True)
|
||||
bag = FormatAstDict("xxx", debug=True, prefix="{", suffix="}", items=[
|
||||
(FormatAstVariable('__key', index=0, value="key1", debug=True),
|
||||
FormatAstVariable('__value', index="key1", value=1, debug=True)),
|
||||
(FormatAstVariable('__key', index=1, value="long_key2", debug=True),
|
||||
FormatAstVariable('__value', index="key2", value="value2", debug=True)),
|
||||
])
|
||||
|
||||
res = visitor.visit(bag)
|
||||
|
||||
assert res == "{'key1' : 1,\n'long_key2': 'value2'}"
|
||||
|
||||
def test_i_can_print_sub_level_of_dict_in_expand_mode(self):
|
||||
visitor = AsStrVisitor(expand=True)
|
||||
bag = FormatAstDict("xxx", debug=True, prefix="{", suffix="}", items=[
|
||||
(FormatAstVariable('__key', index=0, value="key1", debug=True),
|
||||
FormatAstVariable('__value', index="key1", value=1, debug=True)),
|
||||
|
||||
(FormatAstVariable('__key', index=0, value="key2", debug=True),
|
||||
FormatAstDict("__value", debug=True, prefix="{", suffix="}", items=[
|
||||
(FormatAstVariable('__key', index=0, value="sub_key1", debug=True),
|
||||
FormatAstVariable('__value', index="sub_key1", value=1, debug=True)),
|
||||
(FormatAstVariable('__key', index=1, value="sub_long_key2", debug=True),
|
||||
FormatAstDict("__value", debug=True, prefix="{", suffix="}", items=[
|
||||
(FormatAstVariable('__key', index=0, value="sub_sub_key1", debug=True),
|
||||
FormatAstVariable('__value', index="sub_sub_key1", value=1, debug=True)),
|
||||
(FormatAstVariable('__key', index=1, value="sub_sub_key2", debug=True),
|
||||
FormatAstVariable('__value', index="sub_sub_key2", value="sub_sub_value", debug=True)),
|
||||
])),
|
||||
])),
|
||||
|
||||
(FormatAstVariable('__key', index=1, value="long_key3", debug=True),
|
||||
FormatAstVariable('__value', index="key2", value="value2", debug=True)),
|
||||
])
|
||||
|
||||
res = visitor.visit(bag)
|
||||
|
||||
assert res == """{'key1' : 1,
|
||||
'key2' : {'sub_key1' : 1,
|
||||
'sub_long_key2': {'sub_sub_key1': 1,
|
||||
'sub_sub_key2': 'sub_sub_value'}},
|
||||
'long_key3': 'value2'}"""
|
||||
Reference in New Issue
Block a user