1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
# Test the repr() output from the structs.
# Note: test_str.py uses the same tests, keep both in sync.
import unittest
from context import sedparse
from utils import parse_string
class TestSedparseRepr(unittest.TestCase): # pylint: disable=unused-variable
def test_repr_struct_addr(self):
"""Check repr for all kinds of addresses"""
data = [
# pylint: disable=line-too-long
(
"$",
"struct_addr(addr_type=7, addr_number=0, addr_step=0, addr_regex=None)",
"None",
),
(
"91,92",
"struct_addr(addr_type=3, addr_number=91, addr_step=0, addr_regex=None)",
"struct_addr(addr_type=3, addr_number=92, addr_step=0, addr_regex=None)",
),
(
"91~992",
"struct_addr(addr_type=4, addr_number=91, addr_step=992, addr_regex=None)",
"None",
),
(
"91,~992",
"struct_addr(addr_type=3, addr_number=91, addr_step=0, addr_regex=None)",
"struct_addr(addr_type=6, addr_number=0, addr_step=992, addr_regex=None)",
),
(
"91,+992",
"struct_addr(addr_type=3, addr_number=91, addr_step=0, addr_regex=None)",
"struct_addr(addr_type=5, addr_number=0, addr_step=992, addr_regex=None)",
),
(
"/foo/IM",
"struct_addr(addr_type=2, addr_number=0, addr_step=0,"
" addr_regex=struct_regex(slash='/', pattern='foo', flags='IM'))",
"None",
),
]
for address, repr_a1, repr_a2 in data:
script = address + "p"
parsed = parse_string(script)
self.assertEqual(repr_a1, repr(parsed[0].a1), msg=script)
self.assertEqual(repr_a2, repr(parsed[0].a2), msg=script)
def test_repr_struct_text_buf(self):
script = "a L1\\\nL2"
expected = "struct_text_buf(text=['L', '1', '\\\\', '\\n', 'L', '2', '\\n'])"
self.assertEqual(expected, repr(parse_string(script)[0].x.cmd_txt))
def test_repr_struct_text_buf_raw(self):
"""Test using the struct only, not the parser"""
struct = sedparse.struct_text_buf()
struct.text = ["f", "o", "o"]
expected = "struct_text_buf(text=['f', 'o', 'o'])"
self.assertEqual(expected, repr(struct))
def test_repr_struct_misc(self):
"""Check repr for struct_{regex,replacement,output}"""
script = "s/foo/bar/igw file"
parsed = parse_string(script)
self.assertEqual(
"struct_regex(slash='/', pattern='foo', flags='igw')",
repr(parsed[0].x.cmd_subst.regx),
)
self.assertEqual(
"struct_replacement(text='bar')", repr(parsed[0].x.cmd_subst.replacement)
)
self.assertEqual("struct_output(name='file')", repr(parsed[0].x.cmd_subst.outf))
if __name__ == "__main__":
unittest.main()
|