mirror of
https://github.com/gnuradio/gnuradio-companion.git
synced 2025-12-10 17:46:12 -06:00
135 lines
3.5 KiB
Python
135 lines
3.5 KiB
Python
""""""
|
|
|
|
import functools
|
|
import grc.converter.cheetah_converter as parser
|
|
|
|
|
|
def test_basic():
|
|
c = parser.Converter(names={'abc'})
|
|
for convert in (c.convert_simple, c.convert_hard, c.to_python):
|
|
assert 'abc' == convert('$abc')
|
|
assert 'abc' == convert('$abc()')
|
|
assert 'abc' == convert('$(abc)')
|
|
assert 'abc' == convert('$(abc())')
|
|
assert 'abc' == convert('${abc}')
|
|
assert 'abc' == convert('${abc()}')
|
|
|
|
assert c.stats['simple'] == 2 * 6
|
|
assert c.stats['hard'] == 1 * 6
|
|
|
|
|
|
def test_simple():
|
|
convert = parser.Converter(names={'abc': {'def'}})
|
|
assert 'abc' == convert.convert_simple('$abc')
|
|
assert 'abc.def' == convert.convert_simple('$abc.def')
|
|
assert 'abc.def' == convert.convert_simple('$(abc.def)')
|
|
assert 'abc.def' == convert.convert_simple('${abc.def}')
|
|
try:
|
|
convert.convert_simple('$abc.not_a_sub_key')
|
|
except NameError:
|
|
assert True
|
|
else:
|
|
assert False
|
|
|
|
|
|
def test_conditional():
|
|
convert = parser.Converter(names={'abc'})
|
|
assert '(asb_asd_ if abc > 0 else __not__)' == convert.convert_inline_conditional(
|
|
'#if $abc > 0 then asb_$asd_ else __not__')
|
|
|
|
|
|
def test_simple_format_string():
|
|
convert = functools.partial(parser.Converter(
|
|
names={'abc'}).convert_simple, spec=parser.FormatString)
|
|
assert '{abc}' == convert('$abc')
|
|
assert '{abc:eval}' == convert('$abc()')
|
|
assert '{abc}' == convert('$(abc)')
|
|
assert '{abc:eval}' == convert('$(abc())')
|
|
assert '{abc}' == convert('${abc}')
|
|
assert '{abc:eval}' == convert('${abc()}')
|
|
|
|
|
|
def test_hard_format_string():
|
|
names = {'abc': {'ff'}, 'param1': {}, 'param2': {}}
|
|
convert = functools.partial(parser.Converter(
|
|
names).convert_hard, spec=parser.FormatString)
|
|
assert 'make_a_cool_block_{abc.ff}({param1}, {param2})' == \
|
|
convert('make_a_cool_block_${abc.ff}($param1, $param2)')
|
|
|
|
|
|
converter = parser.Converter(names={'abc'})
|
|
c2p = converter.to_python
|
|
|
|
|
|
def test_opts():
|
|
assert 'abc abc abc' == c2p('$abc $(abc) ${abc}')
|
|
assert 'abc abc.abc abc' == c2p('$abc $abc.abc ${abc}')
|
|
assert 'abc abc[''].abc abc' == c2p('$abc $abc[''].abc() ${abc}')
|
|
|
|
|
|
def test_nested():
|
|
assert 'abc(abc) abc + abc abc[abc]' == c2p(
|
|
'$abc($abc) $(abc + $abc) ${abc[$abc]}')
|
|
assert '(abc_abc_)' == c2p('(abc_$(abc)_)')
|
|
|
|
|
|
def test_nested2():
|
|
class Other(parser.Python):
|
|
nested_start = '{'
|
|
nested_end = '}'
|
|
assert 'abc({abc})' == converter.convert('$abc($abc)', spec=Other)
|
|
|
|
|
|
def test_nested3():
|
|
class Other(parser.Python):
|
|
start = '{'
|
|
end = '}'
|
|
assert '{abc(abc)}' == converter.convert('$abc($abc)', spec=Other)
|
|
|
|
|
|
def test_with_string():
|
|
assert 'abc "$(abc)" abc' == c2p('$abc "$(abc)" ${abc}')
|
|
assert 'abc \'$(abc)\' abc' == c2p('$abc \'$(abc)\' ${abc}')
|
|
assert 'abc "\'\'$(abc)" abc' == c2p('$abc "\'\'$(abc)" ${abc}')
|
|
|
|
|
|
def test_if():
|
|
result = converter.to_mako("""
|
|
#if $abc > 0
|
|
test
|
|
#else if $abc < 0
|
|
test
|
|
#else
|
|
bla
|
|
#end if
|
|
""")
|
|
|
|
expected = """
|
|
% if abc > 0:
|
|
test
|
|
% elif abc < 0:
|
|
test
|
|
% else:
|
|
bla
|
|
% endif
|
|
"""
|
|
assert result == expected
|
|
|
|
|
|
def test_hash_end():
|
|
result = converter.to_mako('$abc#slurp')
|
|
assert result == '${abc}\\'
|
|
|
|
|
|
def test_slurp_if():
|
|
result = converter.to_mako("""
|
|
$abc#slurp
|
|
#if $abc
|
|
""")
|
|
|
|
expected = """
|
|
${abc}
|
|
% if abc:
|
|
"""
|
|
assert result == expected
|