Files
Sheerka-Old/tests/out/test_AsStrVisitor.py
T

169 lines
7.2 KiB
Python

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'}"""